|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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:只从学了编程以后得了强迫症,发个帖子也得整理好久,哎.....
|
|