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指令 移位指令...
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 常见指令和语法: ... 除法 2.3 跳转指令: assembly Copy code jmp label ; 无条件跳转 je label ; 如果相等则跳转 jne label ; 如果不相等则跳转
DIV 无符号除法. IDIV 整数除法. 以上两条,结果回送: 商回送AL,余数回送AH, (字节运算); 或 商回送AX,余数回送DX, (字运算). AAD 除法的ASCII码调整. CBW 字节转换为字. (把AL中字节的符号扩展到AH中去) CWD 字转换...
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 异或...
说明:无符号的除法运算,将累加器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编址是统一编址方式而非独立编址方式的理由...
注意:如果开发中,页面的隐藏域过多,这些隐藏域被存储在服务器。当客户端浏览页面的时候,会有一些防火墙扫描页面,以保证操作系统的安全,如果页面的隐藏域过多,那么这些防火墙可能会禁止页面的某些功能。 4.4.4...
支持静态链接其它编程语言(如C/C++、汇编等)编译生成的静态库(.LIB或.OBJ),但仅限于COFF格式,支持cdecl和stdcall两种函数调用约定。 使用说明如下:函数声明和调用方法与DLL命令一致;“库文件名”以.lib...