-
首先簡單介紹一下:對 push 和 pop 指令的理解:對於格式,請記住 reg(包括段暫存器和通用暫存器)後面可以跟著 mem(儲存單元)重要的是用法:
為了方便起見,這兩條指令後面的內容叫rm) --rm標識不同:對於推送是進入堆疊,表示將rm的內容傳送到堆疊中,對於pop是出堆疊,表示將堆疊的內容取出到rm--sp修改的時間和方法不同: 對於推送,是先換SP,再進棧,形式是sp-2,對於POP是先出棧,再換SP,形式是sp+2
重新分析如下:(ss=1381h是我自己的設定,也可以靈活設定。 )
ax: sp-2=1ffeh,然後將 ax 的值新增到堆疊中。 也就是說,將 ax 的值輸入到 ss:1ffeh。
bx:sp-2=1ffch,然後將bx的值加到棧中,即將bx的值加到ss:1ffch中。
ax:首先將 ss:1ffch 處的值(即上一步中 bx 的值,因為上一步將 bx 分配給 ss:1ffch)彈出到 ax,在本例中為 ax=5000h則 sp + 2 = 1ffch + 2 = 1ffeh
完成以上三個步驟後,bx 的值不受影響,因此 bx 仍為 5000h
事實上,SS:SP可以理解為CS:IP。 這一切都與改變偏移量有關。
-
你沒有書,是嗎? 沒有紙,電子版要看!!
這。。。。。。AX 和 BX 是 16 位的,因此每次執行 push 和 pop 時,它們都會減少和增加 2
push ax;此時SP-2 1FFEH指向3000H,AX資料保持不變。
push bx;SP-2 1FFCH此時指向5000H,BX的資料沒有變化。
pop ax;sp+2=1ffeh,此時 SP 指向的資料 (5000h) 儲存在 ax 中,所以 ax 為 5000h。
最終結果為:第一和第二SP 1FFEH,AX 5000H,BX 5000H
-
不推薦這種問題!
如果你是學生,你會通過看這本書得到答案。 你還用網際網絡問人嗎?
如果是自學成才的,只需在除錯中嘗試即可。
debug r sp
r axr bx
apush ax
push bx
pop axttt
-
執行 push ax 命令後,sp=1ffeh,然後推 bx 和 pop ax,ax=5000hsp=1ffeh
bx=5000h
-
我們可以使用中斷型別程式碼在中斷向量表中找到中斷處理程式的條目。 查詢此條目位址的最終目標是使用它來設定 CS 和 IP,以便 CPU 可以執行中斷處理程式。 使用中斷型別程式碼查詢中斷向量,並使用它來設定 CS 和 IP,這由 CPU 硬體自動完成。
CPU 硬體執行此操作的過程稱為遮蔽訊號中斷過程。
以下是8086 CPU收到中斷訊息後導致的中斷過程。
2)將標誌暫存器的值放入堆疊中(因為在中斷過程中需要更改標誌暫存器的值,所以先儲存在堆疊中)。
3)將標誌暫存器的第 8 位 TF 和第 9 位 IF 的值設定為 0;
4)將CS的內容放入堆疊中;
5)IP內容進入堆疊;
6)從儲存器位址是中斷型別巨集輪程式碼4和中斷型別程式碼。
中斷處理程式的入口位址以 4+2 雙字單元讀取,並設定 IP 和 CS。
可以簡明扼要地描述如下:
1) 獲取中斷型別程式碼 n
2)pushf
3)tf=0,if=0
4)push cs
5)push ip
-
55h 是十六進製數 55,它是二進位數 01010101,每個位對應乙個 LED,0 表示不亮,1 表示亮,所以 55h 表示 8,以此類推,從最高位到最低位是不亮和不亮的間隔。 55h 分配給 Al 暫存器,80h Al亮起。 每迴圈一次,Al和0fph就是XOR(out 80h,al),變成0AAH,即原來的0變成1,原來的1變成0,然後它發光,改變所有燈的開啟和關閉狀態。
等等......
實際上AL的變化是:55h --0aah --55h --0aah 。
55h 是初始狀態。 您還可以將初始狀態設定為 0aah:mov al, 0aah
-
實體地址 = 段位址 * 10 + 偏移位址
-
8086 的時鐘為 5MHz t=1 5MHz=200ns(即匯流排週期為 200ns)。
8086 需要 4 個匯流排週期 T1、T2、T3 和 T4 才能進行單個記憶體儲存器或檢索。
T1 定期位址行。
T2、T3、T4 用於訪問或檢索資料。
根據你的回答,記憶體訪問時間至少應該是原來的,即3*200ns=600ns
-
每條位址線可以傳送兩個Li模組訊號0或1。
如果位址線只有 1 位,則輸出訊號為 0 或 1。 如果為 0,則可以定位 1 個單元,如果為 1,則可以定位另乙個單元,因此位址線寬為 1 位,可以定位 2 1 = 2 個儲存單元。
如果位址線有2位,那麼輸出訊號可以有4種組合,即可以定位00、01、10、11和4個儲存單元,即2個2儲存單元,那麼儲存器位址空間大小為4。
假設位址線有3位,那麼輸出訊號可以有8種組合,即000、001、010、011、100、101、110、111,可以定位8個儲存單元,即2 3個儲存單元,則儲存器位址空間大小為8。
同樣,8086 CPU 的總路由寬度為 20 位,即可以定位 2 20 個記憶體單元,記憶體位址空間大小為 1048576(= 2 的 20 次方)。
自 2 10 年以來
1k2^10k1m
單位轉換問題)。
因此,8086 CPU 的總位址寬度為 20 位,即可以定位 2 20 個記憶體單元,記憶體位址空間大小為 1048576(= 2 的 20 次方)。
8086 和 80386 其實並沒有太大的區別,80386 只是 8086 的後續版本,增加了很多指令,增加了暫存器等等,運算元的長度也變長了,它們的關係就像軟體一樣,前期開發的軟體功能無法滿足需求,然後公司會開發出更強大的後續版本, 它與以前的版本相容,並且還新增了許多新內容,乙個典型的例子是Photoshop(早期不叫CS)!很容易弄清楚它們的差異和聯絡。