鱼C论坛

 找回密码
 立即注册
查看: 3397|回复: 5

谁有实验10的第2个问题的代码

[复制链接]
发表于 2011-7-24 17:24:01 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
最近做到实验10的第3的问题就老是出错。 我自己做出来了实验10的第一个问题,在做下面2个问题的时候就出问题了。都3天了还没解决。所以来论坛看看有高人会实验10的第2个问题不,麻烦把代码发上来我学习一下,实在搞不懂了。
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-5 19:33:18 | 显示全部楼层
  1. assume cs:codesg


  2. codesg segment
  3. start: mov ax,4240h
  4.            mov dx,000fh
  5.            mov cx,0ah
  6.            call divdw
  7.           
  8.        mov ax,4c00h
  9.        int 21h
  10. divdw:
  11.     push ax
  12.        
  13.     mov ax,dx
  14.     mov dx,0
  15.        
  16.     div cx
  17.     mov bx,ax
  18.        
  19.     pop ax
  20.         div cx
  21.         mov cx,dx
  22.         mov dx,bx
  23.        
  24.         ret
  25.        
  26.               
  27. codesg ends
  28. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-6 14:47:17 | 显示全部楼层
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-6 17:15:31 | 显示全部楼层


    1. assume cs:codesg





    2. codesg segment

    3. start: mov ax,4240h     ;L

    4.            mov dx,000fh    ;H

    5.            mov cx,0ah       ;N

    6.            call divdw           ;调用子程序

    7.            

    8.        mov ax,4c00h

    9.        int 21h

    10. divdw:

    11.     push ax                   ;保存4240H

    12.         

    13.     mov ax,dx               ;把 H 放入ax

    14.     mov dx,0                 ;dx清零 不影响

    15.         

    16.     div cx                       ;除以cx  ax=商  dx=余数   当前ax=1  dx=5
    17.     mov bx,ax               ;商存放于bx      ax=1 dx=5
    18.         

    19.     pop ax                     ;ax又变回了4240     ax=4240    dx=5  

    20.         div cx                   ;再除次 =  rem(H/N)的余数*65536也就是dx  +L =dx ax 在/N除以cx  cx=10

    21.         mov cx,dx           ;cx=余数

    22.         mov dx,bx           ;把刚才的商存回dx也就是int(H/N)*65536 +这句话
    23.                                     ;ax呢 现在是 [rem(H/N)*65536+L]/N的结果

    24.                                     ;int(H/N)*65536 + [rem(H/N)*65536+L]/N

    25.         ret

    26.         

    27.               

    28. codesg ends

    29. end start
    复制代码

    就是这样了..
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-6 22:06:58 | 显示全部楼层
只是丶梦 发表于 2011-8-6 17:15

  • 就是这样了..

  • 看明白了,除完以后,DX还是存储的是高为的商,AX还是存储的低位的商
    谢谢耐心的解答,
    小甲鱼最新课程 -> https://ilovefishc.com
    发表于 2011-8-8 09:52:40 | 显示全部楼层
    :lol嗯呵.一开始我不知道这个是写什么代码..看着看着.突然就知道是除法溢出处理的那个代码了..
    小甲鱼最新课程 -> https://ilovefishc.com
    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

    GMT+8, 2025-4-22 04:51

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表