鱼C论坛

 找回密码
 立即注册
查看: 1618|回复: 1

[汇编作业问题]郁闷了一晚上.趁还没到11点停电赶紧发帖请教下!

[复制链接]
发表于 2013-11-10 22:42:36 | 显示全部楼层 |阅读模式

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

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

x
本帖最后由 l万lin 于 2013-11-10 22:47 编辑

实验7
问题截图: 1.jpg
数据看程序就可以了
题目要求:
2.png
我写的代码:
assume cs:codesg,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'              ;偏移地址:0-53H
                dd 16,22,382,1356,2390,8000,16000,24486,50065,97479,140417,197514
                dd 345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000                                ;偏移地址:054H-0A7H
                dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,8226
                dw 11452,14430,15257,17800                      ;偏移地址:0A8H-0D2H
        data ends
        table segment
                db 21 dup ('year summ ne ?? ')
        table ends

        codesg segment
        start:
        mov ax,data
        mov ds,ax
        mov ax,table
        mov es,ax
        
        mov cx,21
        mov bx,0
        mov si,0
        s0:
        mov al,[bx+0]
        mov es:[si+0],al
        mov al,[bx+1]
        mov es:[si+1],al
        mov al,[bx+2]
        mov es:[si+2],al
        mov al,[bx+3]
        mov es:[si+3],al
        add bx,4
        add si,10H
        loop s0
        
        mov cx,21
        mov bx,0
        mov si,0
        s1:
        mov ax,[54H+bx]
        mov dx,[54H+bx+2]
        mov es:[5+si],ax
        mov es:[5+si+2],dx
        add bx,4
        add si,10H
        loop s1
        
        mov cx,21
        mov bx,0
        mov si,0
        s2:
        mov ax,[08AH+bx]                                                ;从ds段中偏移地址为08AH处开始取值放入ax中
        mov es:[0AH+si],ax                                                ;再从ax放入es段0A开始处
        add bx,2                                                     ;因为存储类型为dw,所以bx加2
        add si,10H
        loop s2
        
        mov cx,21
        mov bx,0
        s3:
        mov ax,es:[bx+5]                                                ;取出收入低位放入ax寄存器中,因为存储类型为dd
        mov dx,es:[bx+7]                                                ;同理取出收入高位放入dx中
        mov bx,es:[bx+0AH]                                ;取出雇员数放入bx中        
        div bx                                                      ;求平均
        mov es:[bx+0DH],ax                                ;把平均数放入es段偏移地址0DH开始处
        add bx,10H
        loop s3
        
        mov ax,4c00h
        int 21h
        codesg ends
end start
出现的问题:
循环0和1没有问题,就是后面两个循环中出现了问题,我的思路在代码注释里写了,但是debug运行后查看的结果不对,检测修改好几次还是没有成功,初学汇编.还望多指教.写的比较冗杂,求解!




ps:只从学了编程以后得了强迫症,发个帖子也得整理好久,哎.....

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

使用道具 举报

 楼主| 发表于 2013-11-11 13:56:50 | 显示全部楼层
自己顶顶!我顶......
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-17 12:40

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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