組合語言從入門到精通 5微機CPU的指令系統2

2022-02-21 21:08:51 字數 2501 閱讀 5934

微機cpu的指令系統

5.2.2 標誌位操作指令

標誌位操作指令是一組對標誌位置位、復位、儲存和恢復等操作的指令。

1、進製cf操作指令

a、清進製指令clc(clear carry flag):cf←0

b、置進製指令stc(set carry flag):cf←1

c、進製取反指令cmc(complement carry flag):cf←not cf

2、方向位df操作指令

a、清方向位指令cld(clear direction

flag):df←0

b、置方向位指令std(set direction flag):df←1

3、中斷允許位if操作指令

a、清中斷允許位指令cli(clear interrupt

flag):if←0

其功能是不允許可遮蔽的外部中斷來中斷其後程式段的執行。

b、置中斷允許位指令sti(set interrupt

flag):if←1

其功能是恢復可遮蔽的外部中斷的中斷響應功能,通常是與cli成對使用的。

4、取標誌位操作指令

a、lahf(load ah from

flags):ah←flags的低8位

b、sahf(store ah in flags):flags的低8位←ah

5、標誌位堆疊操作指令

a、pushf/pushfd(push flags onto

stack):把16位/32位標誌暫存器進棧;

b、popf/popfd(pop flags off

stack):把16位/32位標誌暫存器出棧;

6、邏輯操作指令的小結

下面是學習標誌位指令的控制項,瀏覽者可以運用此類指令,**標誌暫存器的相應變化。

5.2.3 算術運算指令

算術運算指令是反映cpu計算能力的一組指令,也是程式設計時經常使用的一組指令。它包括:加、減、乘、除及其相關的輔助指令。

該組指令的運算元可以是8位、16位和32位(80386+)。當儲存單元是該類指令的運算元時,該運算元的定址方式可以是任意一種儲存單元定址方式。

1、加法指令

a、加法指令add(add binary numbers instruction)

指令的格式:add  reg/mem, reg/mem/imm

受影響的標誌位:af、cf、of、pf、sf和zf

指令的功能是把源運算元的值加到目的運算元中。

b、帶進製加指令adc(add with carry instruction)

指令的格式:adc  reg/mem,

reg/mem/imm

受影響的標誌位:af、cf、of、pf、sf和zf

指令的功能是把源運算元和進製標誌位cf的值(0/1)一起加到目的運算元中。

c、加1指令inc(increment by 1 instruction)

指令的格式:inc 

reg/mem

受影響的標誌位:af、of、pf、sf和zf,不影響cf

指令的功能是把運算元的值加1。

d、交換加指令xadd(exchange and add)

指令的格式:xadd  reg/mem,

reg      ;80486+

受影響的標誌位:af、cf、of、pf、sf和zf

指令的功能是先交換兩個運算元的值,再進行算術「加」法操作。

例5.3 已知有二個32位數d1和d2(用資料型別dd說明),編寫程式片段把d2的值加到d1中。

解:32位數d1和d2在記憶體中如下所示。

方法1:用16位暫存器編寫程式

mov ax, word ptr d1 ;由於d1是雙字型別,必須使用強制型別說明符。以下同。

mov dx, word ptr d1+2 ;(dx,ax)構成乙個32位資料

add ax, word ptr d2 ;低字相加

adc dx, word ptr d2+2 ;高字相加。在低字相加時,有可能會產生「進製」

mov word ptr d1, ax ;低字送給d1的低字

mov word ptr d1+2, dx ;高字送給d1的高字

方法2:用32位暫存器編寫程式

mov eax, d1

add eax, d2

mov d1, eax

從上面兩段程式不難看出:用32位暫存器來處理32位資料顯得簡單、明了,而16位微機雖然也能處理32位資料,但做起來就要複雜一些。

下面是學習和掌握加法類指令的控制項,可模擬執行add、adc、inc、xadd、clc、stc和cmc等指令。用滑鼠左鍵單擊暫存器列表框中指定的暫存器,則可修改其值。後面其它控制項的有關操作與此相一致,不再說明。從上面兩段程式不難看出:用32位暫存器來處理32位資料顯得簡單、明了,而16位微機雖然也能處理32位資料,但做起來就要複雜一些。

組合語言從入門到精通 標誌位的說明

16位標誌暫存器 共用了9個標誌位,它們主要用來反映cpu的狀態和運算結果的特徵。標誌位的分布如下表所示。1514 1312 111098 7654 3210 ofdf iftf sfzf afpf cf32位標誌暫存器 32位cpu也把標誌暫存器擴充套件到32位,記為eflags。它新增加了四個控...

從機器語言到組合語言

機器語言是計算機唯一能接受和執行的語言。機器語言由二進位製碼組成,每一串二進位製碼叫做一條指令。一條指令規定了計算機執行的乙個動作。一台計算機所能懂得的指令的全體,叫做這個計算機的指令系統。不同型號的計算機的指令系統不同。指令通常由幾個位元組組成,第乙個位元組是操作碼,它規定了計算機要執行的基本操作...

組合語言從入門到精通 通用暫存器功能的說明

1 資料暫存器 資料暫存器主要用來儲存運算元和運算結果等資訊,從而節省讀取運算元所需占用匯流排和訪問儲存器的時間。32位cpu有4個32位的通用暫存器eax ebx ecx和edx。對低16位資料的訪問,不會影響高16位的資料。這些低16位暫存器分別命名為 ax bx cx和dx,它和先前的cpu中...