組合語言學習(七)

2021-08-21 22:25:56 字數 1596 閱讀 7893

本部分主要為王爽《組合語言》第11章標誌暫存器一些指令的用法舉例。

1.adc進製加法指令探索:

注意使用不影響cf位的語句

需要注意的點:

1.子程式的結構:

先把所有要用到的暫存器入棧,在程式結束後出棧

2.設定好cf的值:

sub ax,ax提前將cf的值清零

使用incloop調整偏移位址,而不用add,防止影響cf的值

add128:

push ax

push cx

push si

push di

push bx

sub ax,ax

mov cx,8

s:mov ax,[si]

adc ax,[di]

mov [bx],ax

inc di

inc di

inc si

inc si

inc bx

inc bx

loop s

pop bx

pop di

pop si

pop cx

pop ax

ret

2.cmp指令配合使用

統計data段中數值為8的位元組的個數。

思路是,如果不相等就跳過計數部分

mov bx,0

mov ax,0

mov cx,8

s: cmp byte ptr [bx],8

jne next

inc ax

next:

inc bx

loop s

統計數值大於8的位元組個數:jna next

統計數值小於8的位元組個數:jnb next

3.串指令的使用

mov ax,data

mov ds,ax

mov es,ax

mov di,0

mov si,16

mov cx,8

cldrep movsw

4.關於popfpushf

通過這兩個指令,就可以取出或修改標誌暫存器的值

下面程式執行後,ax為多少?

mov ax,0

push ax

popf ;標誌暫存器為0

mov ax,0fff0h

add ax,0010h ;ax = 0 zf為0,pf為1,cf為1,of為0,sf為0

pushf

pop ax ;ax等於標誌暫存器的值

and al,11000101b

and ah,00001000b

得到ax=00000000_01000101即0045h

組合語言學習

參考書籍 組合語言 王爽 著 清華大學出版社 選單導航 一 彙編基礎知識 二 暫存器和常見彙編指令演示 一 基礎知識 1 彙編指令是機器指令的助記符,同機器指令一一對應 2 每一種cpu都有自己的彙編指令集 3 cpu可以直接使用的資訊在儲存器中存放 4 在儲存器中指令和資料沒有任何區別,都是二進位...

組合語言學習

持續更新 彙編指令 1.mov指令 mov是乙個傳送指令,可以實現以下操作 有一點需要注意,資料不能直接傳給段暫存器,比如mov ds,100h就是錯誤的。但是可以將其他暫存器中的值賦給段暫存器。段暫存器有cs,ds,ss,es等。如果你想知道為什麼,那就可以去了解一下關於每條指令的硬體實現。後面還...

組合語言學習筆記

學習參考資料 大灰狼 講彙編 資料匯流排,位址匯流排,控制匯流排。位址匯流排有多少條就決定了cpu最大的記憶體使用量。80386有32位位址匯流排,所以它的定址能力就是4g.暫存器 通用暫存器,段暫存器,ax暫存器 通用暫存器,存放資料。高位位元組ah,低位位元組al。實體地址表示方法 位址加法器,...