《汇编语言》(王爽)实验7

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
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值