汇编网首页登录博客注册
huangbeidu的学习博客
博客首页博客互动【做检测题】论坛求助

我的博客

个人首页 |  我的文章 |  我的相册 |  我的好友 |  最新访客 |  文章收藏 |  论坛提问 |  友情链接 |  给我留言  
图片载入中
学习动态
最新留言
好友圈
友情链接

[2009-04-23 17:39] 实验10 2.解决除法溢出的问题

;X/N=int(H/N)*65536+[rem(H/N)*65536+L]/N
;---------------------------------------
assume cs:code
code segment
start:
mov ax,4240h
mov dx,0fh
mov cx,0ah
call divdw

mov ax,4c00h
int 21h
;************
divdw:
mov bx,ax     ;用bx存储被除数低16位
mov ax,dx     
mov dx,0      ;为被除数高16位H除以除数N做准备
div cx      
mov si,ax     ;用si存储int(H/N)
mov ax,bx     ;恢复被除数低16位
div cx        ;dx=rem(H/N),ax=L 此时ax为X/N的低16位
mov cx,dx     ;X/N的余数放在cx
mov dx,si     ;X/N的高16位放在dx
ret
;*************
code ends
end start
评论次数(2)  |  浏览次数(393)  |  类型(汇编作业) |  收藏此文  | 

[  huangbeidu   发表于  2009-04-23 17:44  ]

貌似又忘记保存相关寄存器

[  younggay   发表于  2009-04-24 10:45  ]

貌似又忘记保存相关寄存器
=============
只在一个子程序中使用的寄存器,不涉及到最为返回参数存放的寄存器,应该在子程序中进行临时保存和释放的操作,以免对之后的程序有影响。
博主意识到了,为什么不做了呢。

 
 请输入验证码  (提示:点击验证码输入框,以获取验证码