鱼C论坛

 找回密码
 立即注册
查看: 17551|回复: 9

[汇编作业] debug一个程序出现extended error 2如何解决

[复制链接]
发表于 2015-4-17 19:48:08 | 显示全部楼层 |阅读模式
50鱼币
本帖最后由 Prolearning 于 2015-4-19 22:12 编辑



这是我自己写的汇编作业实验七,编译没问题,但她提醒了我没有设置栈段。生成程序后就想debug一下,然后就报出extended error 2的错误。
assume cs:codesg,ds:data,es:table,ss:stacksg
data segment
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985'
db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'

dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
dw 11542,14430,15257,17800

data ends

table segment
db 21 dup ('year summ ne ?? ')
table ends

stacksg segment
db 0,0,0,0,0
stacksg ends

codesg segment
start:mov ax,table
      mov es,ax
      mov ax,data
      mov ds,ax
      mov ax,stacksg
      mov ss,ax
      mov sp,6
      mov di,0
      mov cx,21
    s:push cx
      mov cx,4
      s1:mov bx,0
         mov si,0
         mov al,byte ptr ds:[si]
         mov byte ptr es:[bx+di],al
         mov al,byte ptr ds:[si+84]
     mov byte ptr es:[bx+di+5],al
         inc bx
     inc si
     loop s1
      pop cx
      add di,16
      loop s
      
      
      mov si,0
      mov cx,21
      mov di,0
    s2:push cx
      mov cx,2
      s3:mov bx,0
         mov al,byte ptr ds:[168+di]
         mov byte ptr es:[si+10+bx],al
         inc bx
     inc di
     loop s3
      pop cx
      add si,4
      loop s2
      mov bx,0
      mov cx,21
    s4:mov ax,es:[7+bx]
       mov dx,es:[5+bx]
       div word ptr es:[10+bx]
       mov es:[13+bx],ax
       add bx,16
       loop s4

       mov ax,4c00h
       int 21h
codesg ends
end start

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-17 19:48:09 | 显示全部楼层
本帖最后由 KTMONREK 于 2015-4-21 09:45 编辑
  1. <div class="blockcode"><blockquote>assume cs:codesg,ds:data,es:table,ss:stacksg      
  2. data segment                                  ;错误的地方我在下方注释了
  3. db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985'
  4. db '1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'

  5. dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  6. dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000

  7. dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  8. dw 11542,14430,15257,17800

  9. data ends

  10. table segment
  11. db 21 dup ('year summ ne ?? ')
  12. table ends

  13. stacksg segment
  14. dw 0,0,0,0,0                       ;栈的定义用dw,不然后面会出错
  15. stacksg ends

  16. codesg segment
  17. start:mov ax,table
  18.       mov es,ax
  19.       mov ax,data
  20.       mov ds,ax
  21.       mov ax,stacksg
  22.       mov ss,ax
  23.       mov sp,10        ;修改栈顶指针
  24.       mov di,0
  25.           mov si,0           ;si的位置改到这里
  26.       mov cx,21
  27.     s:push cx
  28.       mov cx,4
  29.       mov bx,0
  30.                         ;你原本mov si,0写在这里,每次进入循环都只是读data段第一个字节
  31.    s1:   mov al,byte ptr ds:[si]     ;更改s1的位置
  32.          mov byte ptr es:[bx+di],al
  33.          mov al,byte ptr ds:[si+84]
  34.      mov byte ptr es:[bx+di+5],al
  35.          inc bx
  36.      inc si
  37.      loop s1
  38.       pop cx
  39.       add di,16
  40.       loop s
  41.       
  42.       
  43.       mov si,0
  44.           mov di,0
  45.       mov cx,21
  46.       
  47.     s2:push cx
  48.           mov bx,0                     ;把这句放到这里,不然每次进入循环都会置bx为0
  49.       mov cx,2
  50.       s3:                              ;把 mov bx,0放在这里的话,你后面的inc bx就没有意义了
  51.          mov al,byte ptr ds:[168+di]
  52.          mov byte ptr es:[si+10+bx],al
  53.          inc bx
  54.      inc di
  55.      loop s3
  56.       pop cx
  57.       add si,16                          ;table段的下一行,是16,不是4
  58.       loop s2
  59.          
  60.       mov bx,0
  61.       mov cx,21
  62.     s4:mov ax,es:[5+bx]              ;高低位你弄反了,所以会发生除法溢出
  63.        mov dx,es:[7+bx]                        ;把5和7换过来
  64.        div word ptr es:[10+bx]
  65.        mov es:[13+bx],ax
  66.        add bx,16
  67.        loop s4

  68.        mov ax,4c00h
  69.        int 21h
  70. codesg ends
  71. end start
复制代码



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-19 21:26:50 | 显示全部楼层
{:1_1:}
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2015-4-19 22:11:49 | 显示全部楼层

什么情况?问题已经放在这里好多天了,求大神给答复
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-22 09:42:58 | 显示全部楼层
:sweat:
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-6 12:13:21 | 显示全部楼层
同啊。我只是编了了几段而已,就出现这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-9-14 14:42:16 | 显示全部楼层
debug 文件名.exe
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-4-14 09:10:32 | 显示全部楼层
改一下文件名
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-5-5 22:00:39 | 显示全部楼层
应该是文件名太长了,貌似是8个字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-10-12 16:45:20 | 显示全部楼层
zZwal3 发表于 2015-9-6 12:13
同啊。我只是编了了几段而已,就出现这个

我也是我也是,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-29 22:19

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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