`
nannan408
  • 浏览: 1754761 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

汇编除法指令div需要注意的

阅读更多
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 reg

div 内存单元

以100001/100为例,100001大于65535,所以只能用dx和ax两个寄存器联合存放100001,也就是说要进行16位的除法。除数100小于255,可以在一个8位的寄存器中存放,但是被除数是32位的,除数应为16位,所以要使用一个16位的寄存器来存放除数100.

dx和ax分别存放100001的高16位和低16位值,所以将100001表示为16进制的形式:186a1h.

程序如下:

view plaincopy to clipboardprint?
DATAS SEGMENT  
    ;此处输入数据段代码    
DATAS ENDS  
STACKS SEGMENT  
    ;此处输入堆栈段代码  
STACKS ENDS  
CODES SEGMENT  
    ASSUME CS:CODES,DS:DATAS,SS:STACKS  
START:  
     mov dx,1  
     mov ax,86a1h  
     mov bx,100  
     div bx  
     mov ax,4c00h  
     int 21h  
CODES ENDS  
    END START 
DATAS SEGMENT
    ;此处输入数据段代码 
DATAS ENDS
STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
     mov dx,1
     mov ax,86a1h
     mov bx,100
     div bx
     mov ax,4c00h
   int 21h
CODES ENDS
    END START


程序执行后,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
-p



本文转自:http://blog.csdn.net/w_shun/archive/2010/05/01/5548967.aspx
分享到:
评论

相关推荐

    汇编语言指令系统、伪指令

    二进制除法指令 DIV、IDIV指令 十进制算术运算 非压缩BCD码调整指令AAA、AAS、AAM、AAD 压缩BCD码调整指令DAA、DAS 位   运算   指令 逻辑运算指令 AND、OR、XOR指令 NOT、TEST指令 移位指令...

    汇编指令(chm格式)

    DIV 无符号除法. IDIV 整数除法. 以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算). AAD 除法的ASCII码调整. CBW 字节转换为字. (把AL中字节的符号扩展到AH中去...

    王爽著《汇编语言》课件及课后习题答案和实验解答

    12.6 除法错误中断的处理 12.7 编程处理0号中断 12.8 安装 12.9 do0 12.10 设置中断向量 12.11 单步中断 12.12 响应中断的特殊情况 实验12 编写0号中断的处理程序 第13章int指令 13.1 int指令 13.2 编写...

    《汇编语言》-第三版-王爽-以及课后答案

    12.6除法错误中断的处理 12.7编程处理0号中断 12.8安装 12.9do0 12.10设置中断向量 12.11单步中断 12.12响应中断的特殊情况 实验12编写0号中断的处理程序 第13章int指令 13.1int指令 13.2编写供应用程序调用的 中断...

    汇编语言教程基础概念及常见指令和语法及示例程序.docx

    汇编语言教程基础概念及常见指令和语法及示例程序.docx 常见指令和语法: ... 除法 2.3 跳转指令: assembly Copy code jmp label ; 无条件跳转 je label ; 如果相等则跳转 jne label ; 如果不相等则跳转

    汇编速查手册

    DIV 无符号除法. IDIV 整数除法. 以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算). AAD 除法的ASCII码调整. CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换...

    实例解读51单片机完全学习与应用

    8.5.6 除法指令——DIV AB 8.5.7 十进制调整指令——DA A 8.6 ■逻辑运算指令 8.6.1 与操作——ANL <dest-byte>,<src-byte> 8.6.2 或操作——ORL <dest-byte>,<src-byte> 8.6.3 异或...

    C51指令集 CJNE @Rn,#data,rel 3

    说明:无符号的除法运算,将累加器A除以B寄存器的值,商存入A,余数存入B。执行本指令后,进位位(C)及溢出位(OV)被清除为0 24.DA A 1 1 将累加器A作十进制调整, 若(A) 3-0>9或(AC)=1,则(A) 3-0←(A)3-0+6 ...

    部件

    ERE项目0-“ RISC汇编编程”梅森·福克纳MIPS 使用QtSpim编译并运行手臂... 内置了除法和余数功能的MIPS,最容易实现。 div $t1, $t0 # i mod 2 mfhi $t6 # temp for the mod beq $t6, 0, notPrime # if mod == 0, p

    单片机期末考试题目及答案详解

    18.为给扫描法工作的键盘提供接口电路,在接口电路中需要 A.一个输入口 B.一个输出口 C.一个输入口和一个输出口 D.两个输入口 19.下列理由中,能说明MCS—51的I/O编址是统一编址方式而非独立编址方式的理由...

    ASP.NET的网页代码模型及生命周期

    注意:如果开发中,页面的隐藏域过多,这些隐藏域被存储在服务器。当客户端浏览页面的时候,会有一些防火墙扫描页面,以保证操作系统的安全,如果页面的隐藏域过多,那么这些防火墙可能会禁止页面的某些功能。 4.4.4...

    易语言程序免安装版下载

     支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。  使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...

Global site tag (gtag.js) - Google Analytics