這是去年版友問的題目
我擷取部分內容希望大家看的懂
當下面這段80X86指令被執行完畢後,BX暫存器的內容值為何?
MOV AH,'1'
MOV AL,'2'
SUB AX,3030H
PUSH AX
PUSH BP
MOV BP,SP
MOV BX,[BP+2]
首先將AH中的'1'和AL中的'2',用ACSII轉換,即'1'=31,'2=32'
: : 其為一個暫存器
: : ----------- ----------
: : | AH | AL | = | 31 | 32 | 而AH跟AL是AX暫存器裡面的位置內容
: : ----------- ---------- AX high 8 bits是AH,low 8 bits是AL
: : MOV的意思是說將剛剛轉換過的值帶入此暫存器的位置
: : 1帶入AH此區塊,2帶入AL此區塊
SUB AX 3030H
意思是說原先3132H就已經在AX中了
而又有3030H這個數值放入AX中 並減掉之
3132H-3030H=0102H
PUSH AX
將上述減去的最後答案帶入記憶體
PUSH BP
再將另外一個暫存器BP帶入記憶體
MOV BP,SP
將SP搬入BP此暫存器(SP即stack point)
意思是說 原先SP是指向AX的那個位置 而現在改指向BP那個位置
MOV BX,[BP+2]
將BP+2搬入BX
意思是說BP原先的位置假設是996
而加上2 其位置改成998(996+2)那個位置所指的數值
則將[BP+2]帶入BX
BX就是那位置所指的數值
答案是原先3132H-3030H=0102H的值
那[BP+2]帶入BX的值是什麼意思阿???
這樣[BP+2]不就沒有改變嗎
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.173.242.250