天天看點

linux彙編div除法,【彙編語言】除法指令div和乘法指令mul

除法指令div

除數:

分8位和16位,存放在reg(寄存器)或記憶體單元

被除數:

分16位和32位

被除數為16位,則除數為8位,被除數預設存放在AX中;

被除數為32位,則除數為16位,被除數存放在AX和DX中,AX低8位,DX高8位

被除數32位16位

除數16位8位

被除數存放位置AXAX(低8位)

DX(高8位)

結果:

除數為8位,AL存放商,AH存放餘數

除數為16位,AX存放商,DX存放餘數

計算100001 / 100

被除數:16位最大表示65535,是以被除數100001隻能用兩個16位寄存器ax和dx存放

除數:100小于255,可以用8位表示,但被除數為32位,是以除數必須用16位寄存器存放

Debug資料預設16位,是以要先把被除數和除數轉換成16進制

100001 = 186a1H

100 = 64H

程式如下:mov dx,1

mov ax,86a1

mov bx,100

dix bx

計算1001 / 100

被除數:1001  < 65535,用16位寄存器AX存放

除數:被除數用16位,除數用8位

轉換16進制

1001 = 03e9H

100 = 64H

程式如下:mov ax,03e9

mov bl,64

div bl

乘法指令mul

兩個相乘的數都是8位或都是16位

8位的話,一個預設存放在AL中,另一個存放在8位寄存器或記憶體位元組單元中

若是16位,一個預設存放在AX中,另一個存放在16位寄存器或記憶體字單元中

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

若是16位,高8位預設放在DX,低位放在AX

示例程式:

8位乘法,100 * 2mov al,100

mov bl,2

mul bl

16位乘法,100 * 10000mov ax,100

mov bx,10000

mul bx