鱼C论坛

 找回密码
 立即注册
查看: 18217|回复: 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 编辑
<div class="blockcode"><blockquote>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
dw 0,0,0,0,0                       ;栈的定义用dw,不然后面会出错
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,10        ;修改栈顶指针
      mov di,0
          mov si,0           ;si的位置改到这里
      mov cx,21
    s:push cx
      mov cx,4
      mov bx,0
                        ;你原本mov si,0写在这里,每次进入循环都只是读data段第一个字节
   s1:   mov al,byte ptr ds:[si]     ;更改s1的位置
         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 di,0
      mov cx,21
      
    s2:push cx
          mov bx,0                     ;把这句放到这里,不然每次进入循环都会置bx为0
      mov cx,2
      s3:                              ;把 mov bx,0放在这里的话,你后面的inc bx就没有意义了
         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,16                          ;table段的下一行,是16,不是4
      loop s2
          
      mov bx,0
      mov cx,21
    s4:mov ax,es:[5+bx]              ;高低位你弄反了,所以会发生除法溢出
       mov dx,es:[7+bx]                        ;把5和7换过来
       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-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-10-6 08:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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