組合語言檢測點11 4詳細解析

2021-10-05 06:47:28 字數 802 閱讀 3922

建議先自己思考問題的答案,不懂則返回看書

下面的程式執行後:(ax)= ?

析:pushf 和 popf 是對標誌暫存器的操作指令,本質上還是對資料的操作,標誌暫存器是16位,與通用暫存器(ax,bx……)不一樣的是它是按「位」起作用的,即每一「位」都有它自己的含義,而通用暫存器整體表示乙個含義。

具體分析:

mov ax,0

push ax

popf ;彈出的即push進的ax的值,即將ax的值給了標誌暫存器,此時標誌暫存器的16位都是零

mov ax,0fff0h

add ax,0010h ;add完後結果是10000h,顯然無符號數計算有進製,所以cf=1,無符號數對of不起作用,所以of=0,

;值未變,sf=0,pf=1,zf=1,df=0,

;所以該指令執行完畢後,標誌暫存器為:0000 0000 0100 0101

pushf ;將標誌暫存器的值壓棧

pop ax ;即將壓入棧中的標誌暫存器的值彈出給ax,此時ax=0000 0000 0100 0101

and al,11000101b ;執行完畢後,al=0100 0101 = 45h

and ah,00001000b ;執行完畢後,ah=0000 0000 = 00h

;所以ax=0045h

組合語言檢測點11 1詳細解析

建議先自己思考問題的答案,不懂則返回看書 分析 zf 記錄結果是否為零。結果為零,則zf為1 結果為1,則zf為0 pf 記錄結果中二進位制形式下1的個數是否為偶數。若1的個數是偶數,則pf 1 若1的個數是奇數,則pf 0 sf 記錄結果是否為負。若結果為負,則sf 1 若結果非負,則sf 0 注...

組合語言檢測點13 1詳細解析

建議先自己思考問題的答案,不懂則返回看書 7ch中斷例程如下 bx表示兩標號之間的轉移位移 lp push bp mov bp,sp dec cx jcxz lpret add bp 2 bx lpret pop bp iret 1 在上面的內容中,用7ch中斷例程實現loop的功能,則上面的7ch...

組合語言檢測點10 4

建議先自己思考問題的答案,不懂則返回看書 這兒用到了bp,除了之前這樣用過bp外 bx bp 還會在棧中用到。比如說,堆疊中壓入了很多資料或者位址,你肯定想通過sp來訪問這些資料或者位址,但sp是要指向棧頂的,是不能隨便亂改的,這時候你就需要使用bp,把sp的值傳遞給bp,通過bp來尋找堆疊裡資料或...