assume cs:code, ds:data, es:table, ss:stacks
;编程,将data段中的数据按如下格式写入到table段中,并计算21年中的人均收入(取整)
;结果也按照下面的格式保存在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'
;收入
dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514
dd 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, 5635, 8226
dw 11542, 14430, 15257, 17800
data ends
table segment
db 21 dup ('year sumn ne ?? ')
table ends
stacks segment
dw 128 dup(0)
stacks ends
code segment
start:
mov ax,data
mov ds,ax ;设置DS的段地址
mov ax,table
mov es,ax ;设置ES的段地址指向table
mov ax,stacks
mov ss,ax ;设置SS的段地址
mov sp,128 ;设置SP的栈顶指针
mov bx,0 ;目标结构元素首地址的移动
mov si,0 ;数据偏移地址的移动
mov di,0 ;目标偏移地址的移动
mov bp,0
mov cx,21
inputTable:
push cx
mov cx,2
mov di,0
;复制年份和收入
inputYandS:
mov ax,ds:[0+si]
mov es:[0+bx+di],ax
mov ax,ds:[84+si]
mov es:[5+bx+di],ax
push ax ;将总收入的高低16位分别压栈
add si,2
add di,2
loop inputYandS
;复制员工人数
mov ax,ds:[168+bp]
mov es:[10+bx],ax
add bp,2
;计算人均收入
pop dx
pop ax
div word ptr es:[10+bx]
mov es:[13+bx],ax
add bx,16
pop cx
loop inputTable
mov ax, 4C00H
int 21H
code ends
end start
《汇编语言》(王爽)实验7
最新推荐文章于 2024-06-11 18:19:04 发布