|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 l万lin 于 2013-11-10 22:47 编辑
实验7
问题截图:
数据看程序就可以了
题目要求:
我写的代码:
- 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:只从学了编程以后得了强迫症,发个帖子也得整理好久,哎.....
|
|