汇编语言div汇编指令

使用div做除法的时候应注意以下问题
1、除数:有8位和16位两种,在一个寄存器或者内存中。

2、被除数:默认放在AX或(DX和AX)中,如果除数为8位,被除数为16位,被除数默认在AX中存放,如果除数为16位,被除数为32位,被 除数则在(DX和AX)中存放,DX存放高16位,AX存放低16位。

3、结果:如果除数是8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数是16位,则AX存储除法操作的商,DX存储除法操作的余数。
格式

div 寄存器
div 内存单元

现在,我们可以用多种方法来表示一个内存单元了,比如下面的例子:

div byte ptr ds:〔0]
含义:  (a1)一(ax)八(ds)*16+0)的商
       (ah)二(ax)八(ds)*16+0)的余数
dzv wozd ptx es:[0]

含义:(ax)二[(dx)*10000H+(ax)]/((es)*16+0)的商
    (dx)=[(dx)*10000H+(ax)]/((es)*16+0)的余数
div byte ptr [bx+si+8]
含义:(al)=ax)/(ds) *16+ (bx)+(si)+8)的商
    (ah)=ax)/(ds) *16+ (bx)+(si) +8)的余数
div word ptr [bx+si+8]
含义:(ax)=〔(dx)*10000H+(ax)]/((ds) * 16+ (bx )+(si)+8)的商
     (dx)=[(dx)*10000H+(ax)]/((ds)*16+(bx)+(si)+8)的余数

编程,利用除法指令计算100001 / 1000
100001是被除数,100是除数。一般格式为:div reg或div 内存单元,reg和内存单元存放的是除数,除数可分为8位和16为2种。
被除数:默认放在AX或DX和AX,如果除数为8位,被除数则为16位,默认在AX中存放;如果除数 为16位,被除数则为32位,在DX和AX中存放,DX存放高16位,AX存放低16位。
结果:如果除数为8位,则AL存储除法操作的商,AH存储除法操作的余数;如果除数为16位,则AX存储除法操作的商,DX存储除法操作的余数。
dx和ax分别存放100001的高16位和低16位值,所以将100001表示为16进制的形式:186a1h

mov dx,1 
mov ax,86a1h    ;(dx)*10000H+(ax)=100001

mov bx,100 
div bx 
mov ax,4c00h 
int 21h 

程序执行后,ax=03e8h,dx=1(余数是1),在debug中查看如下所示:

-p

AX=86A1  BX=0000  CX=0010  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=0BA5  ES=0BA5  SS=0BB5  CS=0BB5  IP=0006   NV UP EI PL NZ NA PO NC
0BB5:0006 BB6400        MOV     BX,0064
-p

AX=86A1  BX=0064  CX=0010  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=0BA5  ES=0BA5  SS=0BB5  CS=0BB5  IP=0009   NV UP EI PL NZ NA PO NC
0BB5:0009 F7F3          DIV     BX
-p

AX=03E8  BX=0064  CX=0010  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=0BA5  ES=0BA5  SS=0BB5  CS=0BB5  IP=000B   NV UP EI PL NZ AC PO NC
0BB5:000B B8004C        MOV     AX,4C00
-p

AX=4C00  BX=0064  CX=0010  DX=0001  SP=0000  BP=0000  SI=0000  DI=0000
DS=0BA5  ES=0BA5  SS=0BB5  CS=0BB5  IP=000E   NV UP EI PL NZ AC PO NC
0BB5:000E CD21          INT     21

编程,利用除法指令计算1001/100
首先分析一下,被除数就是说,要进行8位的除法。1001可用ax寄存器存放,除数100可用8位寄存器存放,也程序如下。

mov ax,1001
mov bl,100
div b1

程序执行后,(al)=0AH(即10), (ah)=1(余数为1)


发布日期:

所属分类: 编程 标签:  


没有相关文章!