使用汇编语言解决除法溢出问题

 1 assume cs:code
 2 
 3 code segment
 4 start:
 5         mov ax, 4240h
 6         mov dx, 000fh
 7         mov cx, 0ah
 8         
 9         call divdw
10         
11         mov ax, 4c00h
12         int 21h
13 
14 ; 名称:divdw
15 ; 功能:进行不会产生溢出的除法运算,被除数为dword型,除数为word型号,结果为dword型号
16 ; 参数:(ax)=dword型数据的低16位
17 ;      (dx)=dword型数据的高16位
18 ;      (cx)=除数
19 ; 返回:(dx)=结果的高16位,(ax)=结果的低16位
20 ;      (cx)=余数
21 divdw:    ; 子程序定义开始
22         push ax            ; 低16位先保存
23         
24         mov ax, dx         ; ax值为高16为
25         
26         mov dx, 0          ; dx置零
27         div cx             ; H/N
28         
29         mov bx, ax         ; ax,bx的值(int)H/N,dx的值为(rem)H/N
30         
31         pop ax             ; 处理低16位
32         div cx             ; 高16位:dx的值为(rem)H/N,低16位:ax
33         
34         mov cx, dx
35         mov dx, bx
36         
37         ret            
38 code ends
39 end start

转载于:https://www.cnblogs.com/dennisOne/archive/2012/10/23/2735343.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值