`
nannan408
  • 浏览: 1783696 次
  • 性别: 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
分享到:
评论

相关推荐

    汇编单机指令教程 汇编111条指令

    1. 数据处理指令:如加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)等,用于进行基本算术运算。 2. 移位指令:如左移(SHL)、右移(SHR),用于改变寄存器或内存中的数据位移位置。 3. 控制流指令:如跳转...

    汇编指令查询器 汇编指令查询器

    1. **数据处理指令**:如ADD(加法)、SUB(减法)、MUL(乘法)、DIV(除法)等,它们用于进行基本的算术运算。例如,ADD指令可以将两个操作数相加,并将结果存储在某个寄存器或内存位置。 2. **算术运算指令**:...

    汇编语言指令大全(详解版).pdf

    1. 数据处理指令:这类指令包括加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)等,它们用于执行基本的算术运算。例如,ADD指令可以将两个数值相加,并将结果存储在一个指定的位置。 2. 移位指令:如左移(SHL...

    汇编语言指令集 汇编语言指令

    1. 数据处理指令:这类指令用于进行算术和逻辑运算,如加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)、位操作(AND、OR、XOR、NOT)等。这些指令直接操作寄存器或内存中的数据,实现基本的算术和逻辑运算。 ...

    汇编语言的指令字典 2005 II V1.0

    数据处理指令用于进行算术运算和逻辑运算,如加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)以及位操作(AND、OR、XOR、NOT)。转移指令则负责改变程序的执行流程,例如无条件跳转(JMP)、条件跳转(JE、JNE...

    STM8 指令合集_个人整理_STM8汇编指令整理_stm8s汇编指令_

    1. 数据处理指令:这类指令主要用于处理数据,如加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)等。它们能够执行基本的算术运算,并且可以影响程序状态字(PSW)中的标志位,例如进位标志(C),零标志(Z)等...

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

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

    64-bit-32-bit-division.zip_32汇编除法_dai_汇编除法

    总的来说,理解和实现64位对32位的汇编除法是一项挑战,但也是对计算机底层工作原理的深入学习。这种技能在嵌入式系统开发、操作系统内核编程或者任何需要高效算术运算的场景中都极为重要。通过熟练掌握汇编语言,...

    masm.rar_assembly_masm_汇编实现除法_汇编语言_除法

    3. **除法指令**:x86汇编提供了一些专门的除法指令,如`DIV`和`IDIV`。`DIV`用于无符号除法,`IDIV`用于有符号除法。执行这些指令后,商存储在特定寄存器中,余数则存储在另一个寄存器。 4. **溢出和错误处理**:...

    汇编语言程序指令大全

    * DIV:无符号除法 * IDIV:整数除法 * AAD:除法的 ASCII 码调整 * CBW:字节转换为字 * CWD:字转换为双字 * CWDE:字转换为双字 * CDQ:双字扩展 三、逻辑运算指令: 逻辑运算指令用于执行逻辑运算操作。常见的...

    汇编语言字节指令大全

    1. 数据处理指令:这类指令主要负责对寄存器或内存中的数据进行算术运算和逻辑运算,如加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)、与运算(AND)、或运算(OR)、异或运算(XOR)和非运算(NOT)等。...

    汇编指令大全+很全的汇编指令.pdf

    1. 数据处理指令:这类指令主要用于执行基本的算术和逻辑运算,例如加法(ADD)、减法(SUB)、乘法(MUL)、除法(DIV)以及位操作(AND、OR、XOR、NOT)。这些指令在处理数值计算和逻辑判断时起到关键作用。 2. ...

    MIPS汇编指令集

    乘法和除法指令用于处理较大数值的算术运算。MIPS处理器中有一个特殊的硬件乘法器,它将乘法结果分成64位存储在两个寄存器(LO和HI)中。例如,`MULT RS, RT` 指令计算RS和RT的乘积,并将结果存放在LO和HI中。 ####...

    汇编常用指令 指令大全

    - `MUL`和`DIV`:分别进行乘法和除法运算,通常涉及溢出检查。 2. **控制流程指令**: - `JMP`:无条件跳转,可以实现程序的分支。 - `JE`,`JNE`,`JG`,`JL`等:条件跳转指令,根据标志寄存器中的状态来决定...

    Intel汇编指令手册

    - **DIV/IDIV**:无符号除法/有符号除法指令。 这些指令的结果通常存储在特定的寄存器对中,例如,乘法和除法的结果通常存储在AX/DX或EAX/EDX中。 #### 逻辑运算指令 逻辑运算指令用于执行诸如与、或、异或等逻辑...

    最新汇编语言指令大全

    AAD指令用于在除法指令前对AX中的两个未组合十进制数进行调整,以便能用DIV指令实现两个未组合的十进制数的除法运算,结果为未组合的十进制数,商放在AL中,余数放在AH中。 3.AAM未组合十进制数乘法调整指令 AAM...

    汇编语言指令大全

    而更复杂的乘法和除法则分别由`MUL`和`DIV`指令完成。 ### 4. 逻辑运算指令 逻辑运算指令处理二进制位的逻辑操作,如AND、OR、NOT、XOR等。这些指令常用于位操作、条件判断等场景,是实现复杂算法和逻辑控制的基础...

    汇编指令查询器 汇编

    5. **DIV(除法)**:执行除法运算,AX寄存器中的数值被CX或BX寄存器中的数值除,商存储在AL或AX中,余数存储在AH或DX中。 6. **JMP(跳转)**:控制程序流程,如 `JNE Label` 如果条件不满足则跳转到Label指定的...

    DSP C6000系列 常用汇编指令大全

    * 除法指令: + DIV:无符号除法。 + IDIV:整数除法。 + AAD:除法的 ASCII 码调整。 + CBW:字节转换为字。 + CWD:字转换为双字。 + CWDE:字转换为双字。 + CDQ:双字扩展。 六、逻辑运算指令 逻辑运算...

    汇编指令查询器

    1. 数据处理指令:如ADD(加法)、SUB(减法)、MUL(乘法)、DIV(除法)等,用于处理寄存器或内存中的数据。 2. 控制流程指令:如JMP(跳转)、CALL(调用)、RET(返回)、CMP(比较)等,用于改变程序的执行...

Global site tag (gtag.js) - Google Analytics