組合語言之指令系統 2 資料運算指令

2021-10-04 13:25:44 字數 2087 閱讀 3494

算數運算指令

指令系統是組合語言學習的基礎,上次介紹了運算元定址指令,這次以x86彙編為基礎繼續總結資料運算類指令

(1) mov 指令

格式: mov 目標 源

舉幾個例子:

mov ax 5 ;把立即數傳送給暫存器ax

mov ax bx ; 把bx中的值傳送給ax

mov [ebx] eax ;把暫存器eax中的內容傳遞給ebx中位址所指向的記憶體單元

需要注意的是

立即數不能作為目標位址

目標暫存器不能是**段暫存器cs

兩個記憶體單元之間不能直接傳遞資料

兩個段暫存器之間不能直接傳遞資料

將立即數傳遞給記憶體單元時,必須說明立即數的型別,如:

mov dword ptr [eax]

12

中 dword ptr 說明了eax指向的記憶體單元是乙個雙字,所以立即數會被彙編成乙個32位的二進位制數放在記憶體中。

(2)交換指令 xchg

格式為

xchg  運算元1 運算元2
交換功能其實是可以用mov實現的,但是既然系統提供了這條指令,那何樂而不用之呢?即方便了程式設計,還提高了執行效率。

還是需要注意的是兩個運算元不能同時再記憶體單元裡。

(3)堆疊指令 push 和pop

格式為

push src :將src壓棧

pop dst:將棧頂元素彈出到dst

(dst可以是暫存器或記憶體單元)

(1)

in :把埠的資料傳送到暫存器或記憶體

out:把累加器(暫存器al、ax或eax)中的資料傳送給埠

如:

in ax 54h ;將埠54h的字資料傳送給ax

out 54h al ;將al中的位元組資料傳遞給埠54h

lea si src ;將src的位址傳遞給si
(1)位元組擴充套件成字指令 cbw(convert byte to word)

(2)字擴充套件成雙字指令 cwd(convert word to doubleword)

(3)雙字擴充套件成四字指令cdq(convert doubleword to quadword)

加法和減法不同於乘除法,是不去別無符號和帶符號數的

(1)add

格式:

add dst,src ;(dst)+(src)——>

(dst)

eg:add al 9

add ax [bx]

add word ptr [cx] ,1

(2)帶進製加法指令 adc

adc 在add的基礎上加上標誌位cf,格式同add

(3)加一指令 inc 減一指令 dec

類似於我們c語言裡的++和- -

格式:

inc ax ;暫存器ax中的數+

1dec dst ;運算元dst-

1

需要注意的是inc和dec並不影響標誌位cf

(1)sub 除了實行減法外,同add

(2)sbb 帶借位減法,需要減去cf,格式同adc

(1)無符號乘法

格式:mul src

其中src作為原運算元,可以是暫存器或記憶體中的數,但不可以是立即數。另乙個乘數在累加器中,乘積也儲存在累加器中。

示例:

mov al 3

mov bl 2

mul bl ;計算3

*2

注意:如果乘積溢位,會對cf和of置1,否則置0。

(2)帶符號乘法

格式:(1)div

格式:div src src作為除數,被除數放在累加器裡。商放在累加器的低位,餘數放在累加器的高位。

示例:

mov al 8

mov bl 4

div bl ;8

/4 商放在al中,餘數放在ah中。

(2)idiv

帶符號除法,格式同div

[1]李元章等. 組合語言與接**術 北京:北京理工大學出版社,2018.

組合語言 16指令系統總結

8086cpu 提供以下幾大類指令。資料傳送指令 mov push pop pushf popf xchg等都是資料傳送指令,這些指令實現暫存器和記憶體 暫存器和暫存器之間的單個資料傳送。算術運算指令 add sub adc sbb inc dec cmp imul idiv aaa等都是算術運算指...

(2)組合語言之資料傳送指令

c語言有不同的資料格式,如char,short,int,long等。組合語言針對不同資料有不同的操作碼形式,如movb 傳送位元組 movw 傳送字 movl 傳送雙字 本篇及後面幾篇文章皆採用32位的intel格式,如下圖所示 intel資料型別 彙編 字尾 大小 位元組 位元組b 1字w2 雙字...

組合語言之轉移指令

轉移指令 可以修改ip或同時修改cs和ip的指令統稱為轉移指令。短轉移ip的修改範圍 128 127 近轉移ip的修改範圍 32768 32767 1.操作符offset 例 assume cs codesg codesg segment start mov ax,offset start 相當於 ...