組合語言第三版(王爽著) 第11章 標誌暫存器

2021-10-01 10:20:28 字數 2717 閱讀 5273

標誌暫存器的作用:

用來儲存相關指令的某些執行結果

用來為cpu執行相關指令提供行為依據

用來控制cpu的相關工作方式

其中儲存的資訊通暢被稱為程式狀態字(psw)

簡稱flag

flag 和其他暫存器不一樣,其他暫存器是用來存放資料的,都是整個暫存器具有乙個含義。

而flag暫存器是按位起作用的。也就是說,它的每一位都有專門的含義,記錄特定的資訊。

flag暫存器的結構

0 cf

2 pf

4 af

6-11 zf sf tf if df of

//cpa zs ti do

如果是0 zf=1,如果不是0 zf=0

大多運算指令(算術運算,邏輯運算)都是影響標誌暫存器的。大多數傳送指令是不影響標誌暫存器的

運算指令:add sub mul div dec inc or and

傳送指令 mov push pop

如果是偶數,則pf為1,否則為0

比如mov al,1

add al,10

結果為00001011 則pf為0

是負 sf=1

cf是進製標誌位。

在進行無符號運算的時候,它記錄了運算結果的最高有效位向更高位的進製,或借位。

!!一定要記住cf是對無符號運算的進製或借位。而of是看有符號運算是否溢位

adc是帶進製加法指令

它利用了cf位上記錄的進製值

指令格式:adc 操作物件1,操作物件2

功能: 操作物件1=操作物件2+操作物件1+cf

加法分兩步:1.低位相加2.高位相加加上低位產生的進製

下面的指令和add ax,bx具有相同的結果

add al,bl

adc ah,bh

adc和add相配合就可以對更大的資料進行加法運算

編寫乙個子程式,對兩個128位資料進行相加,結果存在第乙個數的記憶體空間中

分析乙個位元組8位,乙個字16位,所以128位資料需要8個字的空間

程式如下:

add128:push ax

push cx

push si

push di

sub ax,ax ;將cf置為0

mov cx,8

s:mov ax,[si]

adc ax,[di]

mov [si],ax

inc si

inc si

inc di

inc di

loop s

pop di

pop si

pop cx

pop ax

ret若把加粗處改為add指令,將影響進製。inc和loop不影響cf的值。

帶錯位減法指令,利用cf上的借位值

指令格式:sbb 操作物件1,操作物件2

功能:操作物件1=操作物件1+操作物件2-cf

比如計算 003e1000h-00202000h,程式如下

mov bx,1000h

mov ax,003eh

sub bx,2000h

sbb ax,0020h

cmp是比較指令,cmp的功能相當於減法指令,只是不儲存結果。

同add,sub指令一樣,cpu在執行cmp指令的時候,也包含兩種含義,進行無符號和進行有符號數運算

當of=0時,邏輯上真正結果的正負=實際結果的正負

當of=1時,實際結果為負,邏輯上真正的結果為正;實際結果為正,邏輯上真正的結果為負。

轉移 指的是它能夠修改ip,而 條件 指的是它可以根據某種條件,決定是否修改ip

所有條件轉移指令的轉移位移都是[-128,127]

cmp通常和轉移指令,相配合使用。

cmp分兩種:

1.有符號 影響sf,of,zf

2.無符號 影響zf,cf

下面是常用的根據無符號數的比較結果進行轉移的條件轉移指令。

je(zf=1) jne(zf=0) jb(cf=1) jnb(cf=0) ja(cf=0且zf=0) jna(zf=1或cf=1)

e:equal 相等

n:not 不相等

b:below

a:above

這些指令可以不與cmp配合使用

df:方向標誌位。在串處理中,控制每次操作後si和di的遞增或遞減

df=1 遞減

df=0 遞增

串傳送指令:movsb movsw

一般和rep配合使用

cld 置零 std置1作用

正向傳送:

mov ax,data

mov ds,ax

mov si,0

mov es,ax

mov di,16

mov cx,16

cldrep movsb(相當於 mov es:[di],byte ptr ds:[si])

逆向傳送:

mov ax,0f000h

mov ds,ax

mov si,0ffffh

mov ax,data

mov es,ax

mov di,15

mov cx,16

stdrep movsb

將標誌暫存器壓棧和出棧。

在暫存器的後面顯示

《組合語言》(第三版)王爽著 預備

預備 1.2.十進位制 位的概念 數軸表示數字的方式 3.二進位制 4.十進位制轉換成二進位制 5.十進位制快速轉換成二進位制 6.十六進製制 7.十進位制轉換成十六進製制 8.十進位制快速轉換成十六進製制 9.十六進製制和二進位制之間快速互相轉換 10.反過來思考的方式 組合語言是一門低階語言,與...

組合語言 (王爽著第三版)實驗二

實驗前要求我們將書本p74的程式段按理論分析,將結果進行填空。之後用debug,將該程式段寫入記憶體,逐條執行之後,根據指令執行後的實際執行的結果填空如下。mov ax,0021 mov ax ffff mov ds ax mov ax 2200 mov ss ax mov sp 0100 mov ...

組合語言第三版(王爽著) 第12章 內終中斷

中斷資訊。中斷的意思是指,cpu不再接著向下執行,而是轉去處理這個特殊資訊 當cpu內部由下面情況發生的時候,將產生相應的中斷資訊。中斷型別碼表示中斷的 1.除法錯誤,中斷型別碼0 2.單步執行,中斷型別碼1 3.into,中斷型別碼4 4.int 後面跟的是中斷型別碼 用來處理中斷資訊的程式被稱為...