鱼C论坛

 找回密码
 立即注册
查看: 2352|回复: 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,这样就能存进去年份了。。。
小甲鱼最新课程 -> https://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^_^

查看全部评分

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-15 15:24:39 | 显示全部楼层
这是课后标准答案,建议对照答案自己调试解决。
  1. assume cs:code,ds:data,es:table

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

  10. data ends

  11. table segment

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

  13. table ends

  14. code segment

  15. start:  mov ax,data

  16.         mov ds,ax

  17.         mov ax,table

  18.         mov es,ax

  19.         mov bx,0

  20.         mov si,0

  21.         mov di,0

  22.         mov cx,21

  23. s:      mov ax,[bx]

  24.         mov es:[si],ax

  25.         mov ax,[bx].2

  26.         mov es:[si].2,ax



  27.         mov ax,[bx].84

  28.         mov es:[si].5,ax

  29.         mov dx,[bx].86

  30.         mov es:[si].7,dx



  31.         div word ptr ds:[di].168

  32.         mov es:[si].13,ax

  33.         

  34.         mov ax,[di].168

  35.         mov es:[si].10,ax



  36.         add di,2

  37.         add bx,4

  38.         add si,16

  39.         loop s



  40.         mov ax,4c00h

  41.         int 21h

  42. code ends

  43. end start
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-15 15:26:14 | 显示全部楼层
编辑代码的时候请使用代码编辑框,这样别人复制你的代码时会省去很多时间滴
如图所示
代码编辑框.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-8-15 16:22:21 | 显示全部楼层
前来观看。。。。。。。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

谢谢,难怪,原来打错了,这样是可以存进年分了,但除法溢出,我写这个题目写了两个程序都除法溢出,求助
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

在loop s1上面加上add si, 2就可以了。。。
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

谢谢
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-10-24 09:06:55 | 显示全部楼层
  1. assume cs:code ,ds:data ,es:table   
  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.    ;以上是表示21年的21个字符串,0-53h
  7.   dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  8.   dd 345980,59827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  9.   ;以上是表示21年公司总收入的21个dword型数据 ,54h-0a7h
  10.   dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  11.   dw 11542,14430,15257,17800
  12.   ;以上是表示21年公司雇员人数的21个Word型数据 ,0a8h-0d1h
  13.   db ' ' ;0d2h
  14. data  ends

  15. table segment
  16.    db 21 dup ('year summ ne ?? ')
  17. table ends



  18. code segment

  19. start: mov ax,data
  20.        mov ds,ax
  21.            mov bx,0
  22.            mov si,0
  23.            mov di,0
  24.           
  25.            mov ax,table
  26.            mov es,ax
  27.           
  28.            mov cx,21
  29. s:     mov ax,[si]
  30.        mov es:[bx],ax
  31.            mov ax,2[si]
  32.            mov es:2[bx],ax
  33.           
  34.           
  35.                
  36.            mov ax,84[si]
  37.            mov es:5[bx],ax
  38.            mov dx,86[si]
  39.            mov es:7[bx],dx
  40.           
  41.            div word ptr ds:168[di]
  42.            mov es:13[bx],ax
  43.           
  44.            mov ax,168[di]
  45.            mov es:10[bx],ax
  46.           
  47.            add si,4
  48.            add bx,16
  49.            add di,2
  50.            loop s  
  51.           
  52.            mov ax,4c00h
  53.            int 21h
  54. code ends
  55. end start
复制代码
我和小鱼老师的代码对过了,应该没有错误,但是运行完之后,只有年份显示
1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-10-24 09:12:18 | 显示全部楼层
有时运行后是这样
2.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2014-10-24 09:16:26 | 显示全部楼层
  1. assume cs:code ,ds:data ,es:table   
  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.    ;以上是表示21年的21个字符串,0-53h
  7.   dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  8.   dd 345980,59827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  9.   ;以上是表示21年公司总收入的21个dword型数据 ,54h-0a7h
  10.   dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  11.   dw 11542,14430,15257,17800
  12.   ;以上是表示21年公司雇员人数的21个Word型数据 ,0a8h-0d1h
  13.   db ' ' ;0d2h
  14. data  ends

  15. table segment
  16.    db 21 dup ('year summ ne ?? ')
  17. table ends

  18. code segment
  19. start:  mov ax,data

  20.         mov ds,ax

  21.         mov ax,table

  22.         mov ss,ax

  23.         mov bx,0

  24.         mov si,0

  25.         mov bp,0

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

  29. s0:mov ax,[bx+si]

  30.    mov [bp+0],ax

  31.    add si,2

  32.    mov ax,[bx+si]

  33.    mov [bp+2],ax

  34.    add si,2

  35.    add bp,10h

  36.    loop s0



  37.    mov cx,21

  38.    mov bp,0

  39.    mov si,0

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

  41.    mov [bp+5],ax

  42.    add si,2

  43.    mov ax,[bx+si+84]

  44.    mov [bp+7],ax

  45.    add si,2

  46.    add bp,10h

  47.    loop s1



  48.    mov cx,21

  49.    mov bp,0

  50.    mov si,0

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

  52.    mov [bp+10],ax

  53.    add si,2

  54.    add bp,10h

  55.    loop s2



  56.    mov cx,21

  57.    mov bp,0

  58. s3:mov ax,[bp+5]

  59.    mov dx,[bp+7]

  60.    div word ptr [bp+10]

  61.    mov [bp+13],ax

  62.    add bp,10h

  63.    loop s3



  64.     mov ax,4c00h

  65.     int 21h

  66. code ends

  67. end start
复制代码
这是小鱼老师的另外一个程序,我在注释里提了三个问题。运行结果还是不对
3.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

我也遇到同样的问题,同求解释
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 11:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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