鱼C论坛

 找回密码
 立即注册
查看: 4228|回复: 15

实验7 为啥溢出???

 关闭 [复制链接]
回帖奖励 2 鱼币 回复本帖可获得 2 鱼币奖励! 每人限 1 次(中奖概率 10%)
发表于 2011-8-19 13:29:35 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 583413088 于 2011-8-19 21:05 编辑
  1. assume cs:codesg,ds:data,es:table
  2. data segment
  3. db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
  4. db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
  5. db '1993','1994','1995'
  6. ; 以上是表示21年的21个字符 占84单元 (54h)

  7. dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  8. dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  9. ; 以上表示21年公司总收入的21个dword 数据 占84单元(54h)

  10. dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  11. dw 11542,14430,15257,17800
  12. ; 以上是表示21年公司雇员人数的21个word数据 占(2ah)

  13. ; 数字数据共占126(7e h)
  14. data ends

  15. table segment
  16. db 21 dup ('year summ ne ?? ')
  17. table ends
  18. codesg segment
  19. start : mov ax, data
  20. mov ds, ax
  21. mov ax ,table
  22. mov es, ax

  23. mov si, 0
  24. mov bx, 0
  25. mov di, 0
  26. mov cx, 21

  27. s: mov ax, [di]
  28. mov es:[bx+0], ax
  29. mov ax, [di+2]
  30. mov es:[bx+2],ax



  31. mov ax,[di+84]
  32. mov es:[bx+5], ax
  33. mov ax, [di+86]
  34. mov es:[bx+7], ax



  35. mov ax, [di+168]
  36. mov es:[bx+10], ax

  37. mov ax,[di+54h]
  38. div word ptr ds:[di+0a8h]
  39. mov es:[bx+0dh],ax

  40. add bx, 10h
  41. add di, 4

  42. loop s


  43. mov ax, 4c00h
  44. int 21h
  45. codesg ends
  46. end start
复制代码

大家看看 为什么除法部分会溢出啊  

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-19 15:07:36 | 显示全部楼层
大家帮忙看看啊
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-19 15:29:39 | 显示全部楼层
1、第50行,做除法运算时,应该是dword型处以word型,被除数你只设置了低16位的ax,高16位dx没设置;
2、进入下一循环的条件:bx作为转移目标区的地址变量,bx=bx+10,这个没问题。源数据区的地址变量为di,每次循环di=di+4是有问题的;因为在年份数据和年收入数据里每个数据都占据4字节,di+=4可以跳至下一年;但年员工数和年均创收额均为word型,这两类数据应该为di+=2跳转到下一年。

评分

参与人数 1鱼币 +2 收起 理由
583413088 + 2 赞一个!

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-19 17:11:05 | 显示全部楼层

那可不可以,麻烦这位高手  将原来的代码   改一改  让在下看看呢  
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-19 17:41:46 | 显示全部楼层
我也只学到第十章,你这些问题如果自己细心些自己都可以看出来的;我不想帮你改,问题说得很清楚了,你应该自己去做着试试。
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-19 17:46:24 | 显示全部楼层
tsembrace 发表于 2011-8-19 17:41
我也只学到第十章,你这些问题如果自己细心些自己都可以看出来的;我不想帮你改,问题说得很清楚了,你应该 ...

啊这样啊   那我试试看           我感觉我的那个除法代码和小甲鱼老师的 差不多阿  咋就错了呢
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-19 18:11:53 | 显示全部楼层

回帖奖励 +2 鱼币

加油支持LZ啊:lol
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-19 21:03:56 | 显示全部楼层
经过我的不懈努力  终于  出炉了~~~~~~~~~~~~~~~~~~
  1. assume cs:codesg,ds:data,es:table
  2. data segment
  3.         db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
  4.         db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
  5.         db '1993','1994','1995'
  6.         ; 以上是表示21年的21个字符 占84单元 (54h)
  7.        
  8.         dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  9.         dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  10.         ; 以上表示21年公司总收入的21个dword 数据 占84单元(54h)
  11.        
  12.         dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  13.         dw 11542,14430,15257,17800
  14.         ; 以上是表示21年公司雇员人数的21个word数据 占(2ah)
  15.        
  16.         ; 数字数据共占126(7e h)
  17. data ends

  18. table segment
  19.         db 21 dup ('year summ ne ?? ')
  20. table ends
  21. codesg segment
  22. start : mov ax, data
  23.          mov ds, ax
  24.                  mov ax ,table
  25.                  mov es, ax
  26.                  
  27.                  mov si, 0
  28.                  mov bx, 0
  29.                  mov di, 0
  30.                  mov cx, 21
  31.                  
  32. s:                 mov ax, [di]
  33.                  mov es:[bx+0], ax
  34.                  mov ax, [di+2]
  35.                  mov es:[bx+2],ax
  36.                  
  37.                
  38.                  
  39.                  mov ax,[di+84]
  40.                  mov es:[bx+5], ax
  41.                  mov ax, [di+86]
  42.                  mov es:[bx+7], ax
  43.                  
  44.                
  45.                  
  46.                  mov ax, [si+168]
  47.                  mov es:[bx+10], ax
  48.                  
  49.                  mov ax,[di+54h]
  50.                  mov dx, [di+56h]
  51.                  
  52.                  
  53.                  div word ptr ds:[si+0a8h]
  54.                  mov es:[bx+0dh],ax
  55.                  
  56.                  add bx, 10h
  57.                  add di, 4
  58.                  add si, 2
  59.                  
  60.                  loop s
  61.                  
  62.                  
  63.                  mov ax, 4c00h
  64.                  int 21h
  65. codesg ends
  66. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-20 02:30:02 | 显示全部楼层
{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}{:1_1:}付出总会有回报的!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-20 13:09:03 | 显示全部楼层
583413088 发表于 2011-8-19 21:03
经过我的不懈努力  终于  出炉了~~~~~~~~~~~~~~~~~~

你试试加用栈的机制再写一遍!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-8-20 13:18:53 | 显示全部楼层
啊。感谢楼主。知道哪错了!~:lol
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2011-8-20 17:09:14 | 显示全部楼层
学基础 发表于 2011-8-20 13:09
你试试加用栈的机制再写一遍!

我想在将汇编学完后  在研究呢
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-9-10 09:36:11 | 显示全部楼层
俺是菜鸟,论坛回复后的第一贴支持楼猪!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-9-10 16:37:02 | 显示全部楼层
只支持,我不懂!!!
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-9-12 19:11:48 | 显示全部楼层
顶一个!!!!:lol:lol:lol:lol
小甲鱼最新课程 -> https://ilovefishc.com
发表于 2011-9-12 20:08:13 | 显示全部楼层
学习了!!!!!!!!!!!!!!!!
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-4-22 09:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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