鱼C论坛

 找回密码
 立即注册
查看: 2486|回复: 6

关于实验7

[复制链接]
发表于 2014-3-2 12:25:40 | 显示全部楼层 |阅读模式
4鱼币
各位鱼油,鱼神(鱼油大神的意思)你们好,有个问题弄了很久都没弄明白,求助于大家,麻烦帮帮忙,谢谢。
王爽汇编实验7:
assume cs:codesg,ds:data,es:table,ss:stack

data segment
      db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
      db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
      db '1993','1994','1995'
      ;以上是表示21年的21个字符串

      dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
      dd 345980,590827,803530,1183000,184300,2759000,3753000,4649000,5937000
      ;以上是表示21年公司总收入的21个DWORD型数据

      dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
      dw 11542,14430,15257,17800
      ;以上表示21年公司雇员人数的21个WORD型数据
data ends

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

stack segment
      dw 8 dup(0)
stack ends

codesg segment
start:mov ax,data
             mov ds,ax                                                 ;把data和DS关联起来
             mov ax,table
             mov es,ax                                                                        ;把table和ES关联起来
             mov ax,stack
             mov ss,ax                                                  ;设置栈
             mov sp,16                                                                       ;栈顶指针
             mov di,0
        mov bx,0
             mov bp,0
             mov cx,21
    s1:push cx
            mov si,0
            mov cx,4
     s:mov al,byte ptr ds:[bp+si]  
            mov byte ptr es:[bx+si],al                                    ;替换目标存入年份
      
            mov al,byte ptr ds:[bp+si+168]
            mov byte ptr es:[bx+si+5],al                           ;存入年收入
      
            inc si                                                                                                      ;si自增1
            loop s
      
            mov ax,es:[bx+5]
            mov dx,es:[bx+7]
            mov cx,ds:[di+168]
            mov es:[bx+10],cx
     
            div word ptr es:[bx+10]
      
            mov es:[bx+13],ax
            pop cx
            add bx,16
            add di,4                                                                                              ;di自增4
            mov bp,di
            loop s1
            mov ax,4c00h
       int 21h
codesg ends
end start

编译后,debug到了div word ptr es:[bx+10]这行的时候,出现了:divide overflow;不知道为什么?请大家帮忙,谢谢。

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

使用道具 举报

 楼主| 发表于 2014-3-2 13:53:15 | 显示全部楼层
assume cs:codesg,ds:data,es:table,ss:stack
data segment
  db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
  db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
  db '1993','1994','1995'
  ;以上是表示21年的21个字符串

  dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  dd 345980,590827,803530,1183000,184300,2759000,3753000,4649000,5937000
  ;以上是表示21年公司总收入的21个DWORD型数据

  dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  dw 11542,14430,15257,17800
  ;以上表示21年公司雇员人数的21个WORD型数据
data ends

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

stack segment
  dw 8 dup(0)
stack ends


codesg segment
start:mov ax,data
      mov ds,ax                        ;把data和DS关联起来
      mov ax,table
      mov es,ax                        ;把table和ES关联起来
      mov ax,stack
      mov ss,ax                        ;设置栈
      mov sp,16                        ;栈顶指针
      mov di,0
      mov bx,0
      mov bp,0
      mov cx,21
   s1:push cx
      mov si,0
      mov cx,4
    s:mov al,byte ptr ds:[bp+si]  
      mov byte ptr es:[bx+si],al       ;替换目标存入年份
      
      mov al,byte ptr ds:[bp+si+84]
      mov byte ptr es:[bx+si+5],al      ;存入年收入
      
      inc si                           ;si自增1
      loop s
      
      mov ax,es:[bx+5]
      mov dx,es:[bx+7]
      mov cx,ds:[di+168]
      mov es:[bx+10],cx
     
      div word ptr es:[bx+10]
      
      mov es:[bx+13],ax
      pop cx
      add bx,16
      add di,2                         ;di自增2
      add bp,4
      loop s1

      mov ax,4c00h
      int 21h
codesg ends
end start
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-27 10:52:07 | 显示全部楼层
assume cs:code,ds:data,es:table

data segment

    db '1975','1976','1977','1978','1979','1980','1981','1982','1983'

    db '1984','1985','1986','1987','1988','1989','1990','1991','1992'

    db '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 11452,14430,15257,17800

data ends

table segment

    db 21 dup ('year summ ne ?? ')

table ends

code segment

start:  mov ax,data

        mov ds,ax

        mov ax,table

        mov es,ax

        mov bx,0

        mov si,0

        mov di,0

        mov cx,21

s:      mov ax,[bx]

        mov es:[si],ax

        mov ax,[bx].2

        mov es:[si].2,ax



        mov ax,[bx].84

        mov es:[si].5,ax

        mov dx,[bx].86

        mov es:[si].7,dx



        div word ptr ds:[di].168

        mov es:[si].13,ax

        

        mov ax,[di].168

        mov es:[si].10,ax



        add di,2

        add bx,4

        add si,16

        loop s



        mov ax,4c00h

        int 21h

code ends

end start

这是源代码,你对比一下,看哪儿出错了!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-3-27 11:44:56 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-3-27 20:23:11 | 显示全部楼层
呵呵!没事儿,小事一桩,以后还要多多交流呢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-23 23:30:13 | 显示全部楼层
请帮我看下 我的程序是哪里的问题  ?
谢谢各位了   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-8-23 23:36:02 | 显示全部楼层
kyod 发表于 2014-3-2 13:53
assume cs:codesg,ds:data,es:table,ss:stack
data segment
  db '1975','1976','1977','1978','1979','1 ...

能帮我看看我的问题在哪吗 ?
谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-26 01:02

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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