1.div指令是除法指令
(1)除数:有8位和16位两种,在一个reg或内存单元中
(2)被除数:默认放在AX或(DX和AX)中,
如果除数是8位,被除数则为16位,默认在AX中存放;
如果除数是16位,被除数则为32位,在DX和AX中存放;DX存放高16位,AX存放低16位。
(3)结果:如果除数是8位,则AL存储除法操作的商,AH存放余数;
如果除数是16位,则AX存储除法操作的商,DX存放余数
格式:
div reg
div 内存单元
a.div byte ptr ds:[0]
含义:al=(ax)/(ds*16+0)的商
ah=(ax)/(ds*16+0)的余数
b.div word ptr es:[0]
含义:ax=[(dx*10000H+ax)/((es)*16+0)的商
dx=[(dx*10000H+ax)/((es)*16+0)的余数
利用除法指令计算100001/100
分析:被除数100001大于65535,且为32位,所以不能用AX存放,必须用DX(高16位)和AX(低16位),所以被除数应为16位,用16位寄存器存放100;
100001D=0x186A1H
汇编程序:
assume cs:adc
adc segment
mov dx,1
mov ax,86A1H
mov bx ,100
div bx
mov ax,4c00H
int 21H
adc ends
end
运行:
其中AX=03E8H为商,DX=1为余数。
2.dd伪指令
db:字节型数据
dw:字形数据
dd:sh双字形数据
程序:
data segment
db 1
dd 1
dw 1
data ends
这表示:第一个数据为01H,在data:0处,占一个字节
第二个数据:为00000001H,在data:1处,占4个字节,2个字
第三个数据为:0001H,在data:3处,占1个字节