除法指令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