32位彙編80X86彙編的位移指令和乘除指令

2021-10-01 20:45:10 字數 1763 閱讀 1620

普通位移指令:

sal oprd,count 算數左移指令

shl oprd,count 邏輯左移指令(同上)

sar oprd,count 算數右移指令

shr oprd,count 邏輯右移指令

運算元oprd可以是通用暫存器,也可以是儲存單元,其尺寸可以是位元組可以是字也可以是雙字,count可以是乙個8位立即數也可以是暫存器cl。

這些指令可以導致標誌位cf受其影響。

sal/shl:

邏輯左移指令和算數左移指令是一樣的,右邊補0,左邊一移出的最後一位補到cf中(移位指令工作時是用二進位制形式移位)

sar:

算數右移指令左邊的符號位不變,右邊最後乙個移出的填入cf中。

shr:

邏輯右移指令左邊補0,右邊移出最後一位填入cf中去。

迴圈位移指令:

rol oprd,count ;左迴圈移位指令

ror oprd,count ;右迴圈移位指令

rcl oprd,count ;帶進製的左迴圈位移指令

rcr oprd,count ;帶進製的右迴圈位移指令

rol:

左迴圈移位指令是把運算元oprd迴圈左移count位。每向左移一位,移出的最高有效位變成最低有效位同時變成cf

ror:

右迴圈移位指令是把運算元oprd迴圈右移count位。每向右移一位,移出的最低有效位變成最高有效位同時變成cf

rcl:

帶進製的左迴圈位移指令是把cf加入迴圈中去,把最高有效位移入cf,而cf中數移入最低有效位中。

rcr:

帶進製的右迴圈位移指令是把cf加入迴圈中去,把最低有效位移入cf,而cf中數移入最高有效位中。

一.mul

mul oprd

如果oprd是32位,則將其與eax相乘。將結果送到edx含高32位,eax含低32位

**一.div

div oprd

如果oprd是32位

則edx含有被除數高32位,eax含有被除數低32位

結果的商送到eax,結果的餘數送到edx中

一.mul

(1).8位的話,乙個預設存放在al中,另乙個存放在8位暫存器或記憶體位元組單元中

相乘的積:8位乘法預設存放在ax中

(2).若是16位,乙個預設存放在ax中,另乙個存放在16位暫存器或記憶體字單元中

相乘的積:高8位預設放在dx,低位放在ax

一.div

div除法指令分被除數是16位和32位。

(1).如果被除數是32位則除數為16位, 除數為16位,被除數存放在ax和dx中,ax低8位,dx高8位。

結果表示:ax存放商,dx存放餘數。

(2).如果被除數是16位則除數為8位,被除數預設存放在ax中; 除數為8位,(16位最大表示65535)

結果表示:al存放商ah存放餘數。

注:

(1). 而且如果除數不足也要放置相應位數的暫存器中;

(2).32位彙編指令同時可以使用16位彙編指令

80x86彙編常用指令

一 資料傳輸指令 它們在存貯器和暫存器 暫存器和輸入輸出埠之間傳送資料.1.通用資料傳送指令.mov 傳送字或位元組.movsx 先符號擴充套件,再傳送.movzx 先零擴充套件,再傳送.push 把字壓入堆疊.pop 把字彈出堆疊.pusha 把ax,cx,dx,bx,sp,bp,si,di依次壓...

80X86彙編 mul 乘法指令

使用 mul 做乘法的時候,注意以下兩點 格式如下 mul reg mul 記憶體單元記憶體單元可以用不同的定址方式給出,比如 mul byte ptr ds 0 含義 ax al ds 16 0 mul word ptr bx si 8 含義 ax ax ds 16 bx si 8 的結果的低 1...

80x86組合語言 分類統計

組合語言的程式設計題!急 有100個學生成績,存放在以data為首址的位元組儲存單元中。試統計其中90 含90 以上的人數,60 90 含60 之間的人數,60以下的人數,分別存入max,middle,min三個變數中。15 分鐘前 做而論道 十七級 最快回答 assume ds qq,cs cc ...