鱼C论坛

 找回密码
 立即注册
查看: 2975|回复: 2

[争议讨论] 实验7 大家帮我看看

[复制链接]
发表于 2012-6-27 17:43:36 | 显示全部楼层 |阅读模式
1鱼币
贴上代码,不想打哪么多字,在debug测试了,大家帮我看看代码有没错误



年分,0-53H
收入,54H-0A7H
雇员,0A8H-0D1H
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+02H]      ;年份循环
mov es:[si+02H],ax

mov ax,[bx+54H]
mov es:[si+05H],ax    ;收入循环
mov ax,[bx+56H]
mov es:[si+07H],ax

mov ax,ds:[di+0A8H]
mov es:[si+0AH],ax     ;人数循环

mov ax,es:[si+05H]
mov dx,es:[si+07H]
div word ptr es:[si+0AH]      ;人均收入
mov es:[si+0DH],ax

add si,10H
add di,02H
add bx,04H
loop s

小甲鱼最新课程 -> https://ilovefishc.com
发表于 2012-9-3 13:28:21 | 显示全部楼层
呵呵  楼主 ~   
代码上有几点小提示   :
  
1,  在寻址上, 过多使用 idata, 使程序的灵活性变低,  而且这种寻址方式有时会造成不必要的错误
2,  结构上,  有一点小小的逻辑错误  
提示:  这个逻辑错误造成内存错误

改正后的代码:

  1. assume cs:codesg, ds:datasg, es:table, ss:pau  ;pau == pause 暂停  因为在汇编中pause也是个指令 所以缩写
  2. datasg 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'    ;表示21年

  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    ; 表示21年公司收入(千美元)

  8. dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  9. dw 11542,14430,15257,17800   ;表示21年公司员工数
  10. datasg ends

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

  14. pau segment
  15. dw 0         ;栈
  16. pau ends

  17. codesg segment
  18. start:mov ax, datasg
  19.       mov ds, ax
  20.           mov ax, table
  21.           mov es, ax
  22.           mov ax, pau
  23.           mov ss, ax
  24.           mov sp, 16
  25.           mov cx, 15
  26.           mov bx, 0
  27.           mov di, 0
  28.           mov bp, 0
  29.    s0:push cx
  30.       mov si, 0
  31.    s1:mov cx, 1
  32.       mov ax, [di]
  33.       mov es:[bx+si], ax
  34.           mov ax, [di+2]
  35.       mov es:[bx+si+2], ax
  36.       add si, 5
  37.       mov ax, [di+84]
  38.           mov es:[bx+si], ax
  39.           mov ax, [di+86]
  40.           mov es:[bx+si+2], ax
  41.           add si, 5
  42.           mov ax, ds:[bp+168]
  43.           mov es:[bx+si], ax
  44.           add si, 3
  45.           mov dx, [di+86]
  46.           mov ax, [di+84]
  47.           div word ptr ds:[bp+168]
  48.           mov es:[bx+si], ax
  49.           add di, 4
  50.           add bp, 2
  51.           loop s1
  52.           add bx, 16
  53.           pop cx
  54.           loop s0
  55.           
  56.              mov ax, 4c00h
  57.           int 21h
  58. codesg ends
  59. end start
复制代码

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

使用道具 举报

发表于 2012-9-3 13:29:05 | 显示全部楼层
如有问题请与我联系,    我个人资料里有我qq
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-7-12 23:12

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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