汇编语言子函数——除法溢出问题
来源:互联网 发布:乐高机器人用什么编程 编辑:程序博客网 时间:2024/06/06 11:50
在进行除法运算时,会遇到溢出的问题,在16位寄存器中用多加寄存器的方法来解决这个问题
对于除法运算的溢出有如下公式:
将溢出除法转换为多个不溢出的除法的计算公式
先将一个32位的数放在两个寄存器中,假设高位在dx中,低位在ax中,除数放在cx中得到的结果的 商的高位= dx/cx结果的商
商的低位= ax/cx结果的商
余数= ax/cx结果的余数
下面展示一下代码:
assume cs:code;将溢出除法转换为多个不溢出的除法的计算公式;先将一个32位的数放在两个寄存器中,假设高位在dx中,低位在ax中,除数放在cx中;得到的结果的 商的高位= dx/cx结果的商; 商的低位= ax/cx结果的商; 余数= ax/cx结果的余数code segmentstart:mov ax, 0A120H ;输入数的低位存放在ax中,这里的数字的十进制是500000mov dx, 0007H ;输入数的高位存放在dx中mov cx, 10 ;除数存放在cx中call divdw ;调用子函数mov ax, 4C00Hint 21Hdivdw:push si ;将子函数用到的寄存器都入栈push dipush axpush dxpush cxmov bp, sp ;[bp]是cx,[bp+2]是dx,[bp+4]是axmov ax, [bp + 2] ;ax存放16位除法的低位mov dx, 0mov bx, [bp]div bx ;计算 商的高位= dx/cx结果的商mov si, ax ;si存放商mov ax, [bp + 4]mov bx, [bp]div bx ;计算 商的低位= ax/cx结果的商 ; 余数= ax/cx结果的余数mov cx, dx ;将结果的余数保存在cx中mov dx, si ;将结果的高位保存在dx中,同时结果的低位存在ax中pop dipop dipop dipop dipop siretcode endsend start
这里的C350H是50000,500000/10的低位就是50000,结果正确
0 0
- 汇编语言子函数——除法溢出问题
- 汇编语言 之 除法溢出问题
- 王爽《汇编语言》第十章实验之——除法溢出问题
- 王爽《汇编语言》实验10.2——解决除法溢出的问题
- 汇编语言子函数——显示字符串
- 汇编语言子函数——延时函数
- 汇编语言 王爽 实验十 解决除法溢出问题
- 汇编语言解决除法溢出问题的小程序
- ***汇编语言 实验10.2 解决除法溢出的问题
- 汇编语言子函数——128位的加法运算
- 汇编语言子函数——64位减法运算
- 除法溢出问题
- 除法溢出问题
- 解决除法溢出问题
- 汇编语言 第三版 王爽 实验10-2 编写子程序 之 解决除法溢出问题 divdw
- 2.解决除法溢出问题-汇编语言(王爽)-实验10 编写子程序
- 解决除法溢出的问题
- 汇编语言子函数——将数字转换为字符串并显示
- POI利用模版导出excel
- hadoop-2.2.0命令小结
- 正则表达式实例
- Yaf 默认行为
- hdu-1232 畅通工程
- 汇编语言子函数——除法溢出问题
- hadoop-2.2.0的命令跟之前版本的命令的区别
- 点击UIWebView上文字调用方法
- 一些存档。。。
- 一个杭州的初创公司的招聘
- ubuntu12.04显示桌面的快捷键
- stc单片机不断电下载程序
- hdoj1015
- ganglia命令