鱼C论坛

 找回密码
 立即注册
查看: 1956|回复: 2

关于实验7 我写的汇编代码 出现Divide overflow

[复制链接]
发表于 2013-1-24 22:22:28 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 pro-serv 于 2013-1-25 00:22 编辑
  1. assume cs:codesg
  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. dd 16,22,382,1356,2390,8000,24486,50065,97479,140417,197514
  7. dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  8. dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  9. dw 11542,14430,15257,17800
  10. data ends
  11. table segment
  12. db 21 dup ('year summ ne ?? ')
  13. table ends
  14. stack segment
  15. dw 0,0,0,0,0,0,0,0
  16. stack ends
  17. codesg segment
  18. start:
  19. mov ax,stack
  20. mov ss,ax
  21. mov sp,16
  22. mov ax,table
  23. mov ds,ax
  24. mov bx,0
  25. mov ax,data
  26. mov es,ax
  27. mov bp,0
  28. mov si,168
  29. mov cx,21
  30. s: push cx
  31. mov di,0
  32. mov cx,4
  33. s1: mov al,es:[bp+di]
  34. mov [bx+di],al
  35. inc di
  36. loop s1

  37. mov byte ptr [bx+4],' '
  38. mov ax,es:[bp+84]
  39. mov dx,es:[bp+86]
  40. mov [bx+5],ax
  41. mov [bx+7],dx

  42. mov byte ptr [bx+9],' '
  43. mov ax,es:[bp+si]
  44. mov [bx+10],ax

  45. mov byte ptr [bx+12],' '
  46. mov ax,[bx+5]
  47. mov dx,[bx+7]
  48. div word ptr [bx+10]
  49. mov [bx+13],ax
  50. mov byte ptr [bx+15],' '

  51. add bx,16
  52. add bp,4
  53. add si,2
  54. pop cx
  55. loop s
  56. mov ax,4c00h
  57. int 21h
  58. codesg ends
  59. end start
复制代码

一次次手动T单步执行循环过后也没事, 但用G命令跳出 MOV AX,4C00H时,就出现Divide overflow .
特来求助,不知道错在哪里了?
小甲鱼最新课程 -> https://ilovefishc.com
 楼主| 发表于 2013-1-25 00:27:10 | 显示全部楼层
  1. assume cs:codesg
  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. dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  7. dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  8. dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  9. dw 11542,14430,15257,17800
  10. data ends
  11. table segment
  12. db 21 dup ('year summ ne ?? ')
  13. table ends
  14. stack segment
  15. dw 0,0,0,0,0,0,0,0
  16. stack ends
  17. codesg segment
  18. start:
  19. mov ax,stack
  20. mov ss,ax
  21. mov sp,16
  22. mov ax,table
  23. mov ds,ax
  24. mov bx,0
  25. mov ax,data
  26. mov es,ax
  27. mov bp,0
  28. mov si,168
  29. mov cx,21
  30. s: push cx
  31. mov di,0
  32. mov cx,4
  33. s1: mov al,es:[bp+di]
  34. mov [bx+di],al
  35. inc di
  36. loop s1

  37. mov byte ptr [bx+4],' '
  38. mov ax,es:[bp+84]
  39. mov dx,es:[bp+86]
  40. mov [bx+5],ax
  41. mov [bx+7],dx

  42. mov byte ptr [bx+9],' '
  43. mov ax,es:[si]
  44. mov [bx+10],ax

  45. mov byte ptr [bx+12],' '
  46. mov ax,[bx+5]
  47. mov dx,[bx+7]
  48. div word ptr [bx+10]
  49. mov [bx+13],ax
  50. mov byte ptr [bx+15],' '

  51. add bx,16
  52. add bp,4
  53. add si,2
  54. pop cx
  55. loop s
  56. mov ax,4c00h
  57. int 21h
  58. codesg ends
  59. end start
复制代码
DB 总收入时入个了 ‘16000 ’
经过多次DEBUG之后,发现第45行错了,mov ax,es:[bp+si]应该改为 mov ax,es:[si]
我已经定义了SI初始值为168,再加BP就错了


小甲鱼最新课程 -> https://ilovefishc.com
发表于 2013-1-25 10:35:05 | 显示全部楼层

是什么溢出了。具体的我也不知道。我也碰到过这情况。等高手
小甲鱼最新课程 -> https://ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2025-7-21 07:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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