汇编语言--div指令,伪指令dd

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个字节

猜你喜欢

转载自blog.csdn.net/huanhuan59/article/details/84329685