看板 Grad-ProbAsk 關於我們 聯絡資訊
這是去年版友問的題目 我擷取部分內容希望大家看的懂 當下面這段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