鱼C论坛

 找回密码
 立即注册
查看: 4258|回复: 12

求助!!实验7整了几天都弄不明白

[复制链接]
发表于 2011-3-3 14:03:51 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 loop 于 2011-4-17 04:29 编辑

实验7的问题,代码如下
  1. assume cs:code,ds:data

  2.     data segment
  3.    
  4.     db '1975','1976','1977','1978','1979','1980','1981','1982','1983'
  5.     db '1984','1985','1986','1987','1988','1989','1990','1991','1992'
  6.     db '1993','1994','1995'


  7.     dd 10h,16h,17eh,54ch,2390,8000,16000,24486,50065,97479,140417,197514
  8.     dd 345980,590827,803530,1183000,1843000,2750000,3753000,4649000,5937000

  9.     dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
  10.     dw 11542,14430,15257,17800

  11.     data ends

  12.     stack segment
  13.     dw 0,0,0,0,0,0,0,0
  14.     dw 0,0,0,0,0,0,0,0,0,1,2,3,5,9,12,18,28,41,57,70,90
  15.       

  16.     stack ends




  17.      table segment

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

  19.      table ends


  20.      code segment

  21. w:mov ax,data
  22.      mov ds,ax
  23.      mov ax,table
  24.      mov es,ax
  25.      mov ax,0

  26.      mov cx,21
  27. s0:  
  28.      mov ax,[bx]     
  29.      mov es:[0+si],ax
  30.      mov ax,[84+bx]
  31.      mov es:[5+si],ax
  32.      add bx,2
  33.      mov ax,[bx]
  34.      mov es:[2+si],ax
  35.      mov ax,[84+bx]
  36.      mov es:[7+si],ax
  37.      add bx,2

  38.      mov ax,[168+di]
  39.      mov es:[10+si],ax
  40.      add di,2
  41.      add si,10h

  42.      loop s0

  43.      mov cx,21
  44.      mov ax,stack
  45.      mov ss,ax
  46.      mov sp,16
  47.      mov si,0
  48.      mov di,0
  49.      mov bx,0

  50. s1:pop dx
  51.      mov ax,[84+di]
  52.      div word ptr [168+bx]
  53.      mov es:[13+si],ax
  54.      add bx,2
  55.      add di,4
  56.      add si,10h
  57.      


  58.      loop s1

  59.      mov ax,4c00h
  60.      int 21h

  61.      code ends

  62.    end w
复制代码
未命名.jpg
2.jpg
为什么在ES段只能看到年份,其他的看不到。哪里出错了,搞不懂。
未命名.jpg
未命名.jpg
未命名.jpg

评分

参与人数 1荣誉 +10 收起 理由
loop + 10 代码用[code][/code] 扩起啦就更好了

查看全部评分

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-3-3 19:32:54 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-3-3 19:33:58 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-3-3 19:43:01 | 显示全部楼层
呵呵,大家一起学习,一起进步嘛
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-4 01:57:08 | 显示全部楼层
;P哈哈,探讨得真知啊!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-5 13:12:11 | 显示全部楼层
这个题目要等你吧第10章学完后,才能解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
头像被屏蔽
发表于 2011-3-10 06:03:02 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-24 09:43:29 | 显示全部楼层
代码是不是可以简化一下
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-3-25 09:58:11 | 显示全部楼层

遇到了一个错误

遇到了一个错误
[img][img][/img][/img][img][img][/img][/img]为什么会这样?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2011-3-25 10:05:06 | 显示全部楼层
回复 9# moshushi


    怎么会这样呢?我在我的机子上都能运行啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-14 12:09:19 | 显示全部楼层
本帖最后由 loop 于 2011-4-16 01:59 编辑
  1. assume cs:code,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.   
  7.   dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
  8.   dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
  9.   
  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. data ends

  13. table segment
  14.    db 21 dup ('year summ ne ?? ')
  15. table ends

  16. code segment
  17. sta:   mov ax,data
  18.    mov ds,ax
  19.    mov ax,table
  20.    mov es,ax
  21.    mov bx,0
  22.    mov si,0
  23.    mov di,0
  24.    mov cx,21
  25.    
  26. s: mov ax,[bx]
  27.    mov es:[si],ax
  28.    mov ax,[bx+2]
  29.    mov es:[si+2],ax
  30.    
  31.    mov ax,[bx+84]
  32.    mov es:[si+5],ax
  33.    mov ax,[bx+84+2]
  34.    mov es:[si+5+2],ax
  35.    
  36.    mov ax,[di+168]
  37.    mov es:[si+10],ax
  38.    
  39.    mov ax,[bx+84]
  40.    mov dx,[bx+84+2]
  41.    div word ptr [di+168]
  42.    mov es:[si+13],ax
  43.    
  44.    add bx,4
  45.    add di,2
  46.    add si,10h
  47.    loop s
  48.    
  49.    mov ax,4c00h
  50.    int 21h
  51. code ends
  52. end sta
复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-4-20 11:26:41 | 显示全部楼层
同问:为什么在ES段只能看到年份,其他的看不到。哪里出错了,搞不懂。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2011-5-6 17:34:51 | 显示全部楼层
回复 小甲鱼 的帖子

小甲鱼老师有时间帮我看下试验七的代码:
assume cs:code
data segment
        db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
       
        dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514,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,6535,8226,11542,14430,15275,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 al,[bx]                         ;年份部分传送部分
                mov es:[di],al
                inc bx
       
                mov al,[bx]
                mov es:[di+1],al
                inc bx
       
                mov al,[bx]
                mov es:[di+2],al
                inc bx
       
                mov al,[bx]
                mov es:[di+3],al
                inc bx
                add di,10h
loop s

                mov bx,0                               
                mov si,54h
                mov di,0
       
                mov cx,21
s1:                mov ax,[bx+si]                        ;总收入传送部分
                add bx,2
                mov dx,[bx+si]
                add bx,2
                mov es:[di+5],ax
                mov es:[di+7],dx
                add di,16
loop s1

                mov bx,0
                mov si,0a8h
                mov di,0
       
                mov cx,21
s2:                mov ax,[bx+si]                        ;人数传送部分
                mov es:[di+0ah],ax
                add bx,2
                add di,16
loop s2
       
                mov bx,0
                mov si,54h
                mov di,0
       
                mov cx,21
s3:                mov ax,[bx+si]                        ;人均收入计算并传送部分
                add bx,2
                mov dx,[bx+si]
                div word ptr es:[di+0ah]
                mov es:[di+0dh],ax
                add di,16
loop s3

                mov ax,4c00h
                int 21h
code ends
end start
为什么我在用G命令直接执行到MOV AX,4C00H 时总是提示我说除法运算溢出?想了好久没通,帮我看看是程序中那部分出错了?谢谢 小甲鱼老师!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-3-29 10:16

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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