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

我的博客

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

[2010-10-26 22:19] 实验10.2

assume cs:code
 stack segment
   dw 8 dup (0)
 stack ends
  code segment
  start:mov ax,stack
        mov ss,ax
        mov sp,16   设置栈段
        mov ax,4240h
        mov dx,000fh
        mov cx,0ah   举例参数
        call divdw
        mov ax,4c00h
        int 21h
  divdw:push bx   保存bx数据入栈
        push ax   保存ax数据入栈
        mov ax,dx  设置公式int(H/N)*65536的H的ax
        mov dx,0   同上 设置公式 H的dx
        div cx    公式int(H/N)
        mov bx,ax   把商保存入bx
        pop ax    出栈,把举例参数ax取出 就是 L
        div cx    公式(rem(H/N)*65536+L)/n
        mov cx,dx    根据举例要求cx存余数
        mov dx,bx   同上,dx存高16位,即 *65536
        pop bx     取出bx的数据
        ret     返回程序
code ends
end start
 书上的div除法运算里 *65536就是*10000H就是高16位存在dx中,加号+就是高位和低位的关系,不是真用加法add,rem(H/N)*65536就是之前int(H/N)的余数在高位,+L就是举例的低位ax。
之前就是因为对div理解的不深,才卡了几天看了论坛的解释做出来的,同学们得好好注意书上的每一个知识要点啊.
评论次数(0)  |  浏览次数(445)  |  类型(汇编作业) |  收藏此文  | 
 
 请输入验证码  (提示:点击验证码输入框,以获取验证码