用div指令实现除法

div指令

  • div是除法指令,使用div作除法的时候
    • 被除数︰(默认)放在AX或 DX和AX中
    • 除数:8位或16位,在寄存器或内存单元中
    • 结果:…
  • div指令格式
    • div寄存器
    • div内存单元
被除数 AX DX和AX
除数 8位内存或寄存器 16位内存或寄存器
AL AX
余数 AH DX
示例指令 被除数 除数 余数
div bl (ax) (bl) (al) (ah)
div byte ptr ds:[0] (ax) ((ds)*16+0) (al) (ah)
div byte ptr [bx+si+8] (ax) ((ds)*16+(bx)+(si)+8) (al) (ah)
div bx (dx)*10000H+(ax) (bx) (ax) (dx)
div word ptr es:[0] (dx)*10000H+(ax) ((ds)*16+0) (ax) (bx)
div word ptr [bx+si+8] (dx)*100OOH+(ax) ((ds)*16+(bx)+(si)+8) (ax) (bx)

切记提前在默认的寄存器中设置好被除数,且默认寄存器不作别的用处。

在内存单元中实施除法

  • 双字型数据的定义(实例)
data segment
    db 1﹔定义字节型数据O1H,在data:O处,占1个字节
    dw;定义字型数据0001H,在data:1处,占2个字节
    dd 1 ;定义双字型数据00000001H,在data:3处,占2个字( 4个字节)
data ends
mov ax,data
mov ds,ax
mov ax,ds:[0]
mov dx,ds:[2]
div word ptr ds:[4];
mov ds:[6],ax

例:用div计算data段中第一个数据除以第二个数据后的结果,商存放在第3个数据的存储单元中。

data segment
    dd 100001
    dw 100
    dw 0
data ends
mov ax,data
mov ds,ax
mov ax,ds:[0]
mov dx,ds:[2]
div word ptr ds:[4];
mov ds:[6],ax

你可能感兴趣的:(汇编语言,开发语言)