鱼C论坛

 找回密码
 立即注册
查看: 2068|回复: 11

求助,实验七,年份存不了

[复制链接]
发表于 2014-8-15 14:58:26 | 显示全部楼层 |阅读模式
1鱼币
ssume cs:code,ds:date,es:table

date 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,1843000,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型数据
       
date ends

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

code segment

start: mov ax,date
                mov ds,ax
                mov ax,table
                mov es,ax
                mov bx,0
                mov bp,0
                mov si,0
                mov cx,21
  s1: mov dx,[bx+2]               
                mov ax,[bx+0]                ;传年份
                mov es:[bp+02],dx
                mov es:[bp+0],ax
                mov ax,ds:[si+0a8h]
                mov es:[bp+0ah],ax  ;传人数
                mov dx,[bx+56h]
                mov ax,[bx+54h]                ;传收入
                mov es:[bp+07h],dx
                mov es:[bp+05h],ax
                div word ptr es:[bp+0ah]
                mov es:[bp+0dh],ax  ;传人均收入
                add bp,16
                mov bx,4
                loop s1
               
                mov ax,4c00h
                int 21h
               
code ends
end start       





ZO]JUOLZE@)QZO8[8%8G_BP.jpg

最佳答案

查看完整内容

loop s1上面的mov bx, 4改为add bx, 4,这样就能存进去年份了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-15 14:58:27 | 显示全部楼层
loop s1上面的mov bx, 4改为add bx, 4,这样就能存进去年份了。。。

评分

参与人数 1荣誉 +5 鱼币 +5 贡献 +1 收起 理由
小靚同学Leon + 5 + 5 + 1 热爱鱼C^_^

查看全部评分

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

使用道具 举报

发表于 2014-8-15 15:24:39 | 显示全部楼层
这是课后标准答案,建议对照答案自己调试解决。
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-8-15 15:26:14 | 显示全部楼层
编辑代码的时候请使用代码编辑框,这样别人复制你的代码时会省去很多时间滴
如图所示
代码编辑框.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-15 16:22:21 | 显示全部楼层
前来观看。。。。。。。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-15 17:42:55 | 显示全部楼层
一个人在战斗 发表于 2014-8-15 17:30
loop s1上面的mov bx, 4改为add bx, 4,这样就能存进去年份了。。。

谢谢,难怪,原来打错了,这样是可以存进年分了,但除法溢出,我写这个题目写了两个程序都除法溢出,求助
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-8-15 20:18:58 | 显示全部楼层
进击的小灰灰 发表于 2014-8-15 17:42
谢谢,难怪,原来打错了,这样是可以存进年分了,但除法溢出,我写这个题目写了两个程序都除法溢出,求助 ...

在loop s1上面加上add si, 2就可以了。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2014-8-15 23:39:55 | 显示全部楼层
一个人在战斗 发表于 2014-8-15 20:18
在loop s1上面加上add si, 2就可以了。。。

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

使用道具 举报

发表于 2014-10-24 09:06:55 | 显示全部楼层
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'
   ;以上是表示21年的21个字符串,0-53h
  dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  dd 345980,59827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  ;以上是表示21年公司总收入的21个dword型数据 ,54h-0a7h
  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型数据 ,0a8h-0d1h
  db ' ' ;0d2h
data  ends

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



code segment 

start: mov ax,data
       mov ds,ax 
           mov bx,0
           mov si,0 
           mov di,0 
           
           mov ax,table 
           mov es,ax 
           
           mov cx,21
s:     mov ax,[si]
       mov es:[bx],ax
           mov ax,2[si]
           mov es:2[bx],ax
           
           
                
           mov ax,84[si]
           mov es:5[bx],ax
           mov dx,86[si]
           mov es:7[bx],dx
           
           div word ptr ds:168[di]
           mov es:13[bx],ax
           
           mov ax,168[di]
           mov es:10[bx],ax
           
           add si,4
           add bx,16
           add di,2
           loop s  
           
           mov ax,4c00h
           int 21h
code ends
end start
我和小鱼老师的代码对过了,应该没有错误,但是运行完之后,只有年份显示
1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-24 09:12:18 | 显示全部楼层
有时运行后是这样
2.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2014-10-24 09:16:26 | 显示全部楼层
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'
   ;以上是表示21年的21个字符串,0-53h
  dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  dd 345980,59827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  ;以上是表示21年公司总收入的21个dword型数据 ,54h-0a7h
  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型数据 ,0a8h-0d1h
  db ' ' ;0d2h
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 ss,ax 

        mov bx,0 

        mov si,0 

        mov bp,0 

        mov cx,21           ;bx的值始终未变,要bx有什么用。?
                                    ;哪里优化了?
                                                        ;为什么在debug中用d看不到应该有的结果?

s0:mov ax,[bx+si] 

   mov [bp+0],ax 

   add si,2 

   mov ax,[bx+si] 

   mov [bp+2],ax 

   add si,2 

   add bp,10h 

   loop s0 

 

   mov cx,21 

   mov bp,0 

   mov si,0 

s1:mov ax,[bx+si+84] 

   mov [bp+5],ax 

   add si,2 

   mov ax,[bx+si+84] 

   mov [bp+7],ax 

   add si,2 

   add bp,10h 

   loop s1 

 

   mov cx,21 

   mov bp,0 

   mov si,0 

s2:mov ax,[bx+si+168] 

   mov [bp+10],ax 

   add si,2 

   add bp,10h 

   loop s2 

 

   mov cx,21 

   mov bp,0 

s3:mov ax,[bp+5] 

   mov dx,[bp+7] 

   div word ptr [bp+10] 

   mov [bp+13],ax 

   add bp,10h 

   loop s3 

 

    mov ax,4c00h

    int 21h

code ends

end start
这是小鱼老师的另外一个程序,我在注释里提了三个问题。运行结果还是不对
3.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2015-4-20 21:31:36 | 显示全部楼层
胖胖大头梨 发表于 2014-10-24 09:16
这是小鱼老师的另外一个程序,我在注释里提了三个问题。运行结果还是不对

我也遇到同样的问题,同求解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 20:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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