8086汇编-实验7-制表

assume cs:code

stack segment ;栈段
	dw 0,0,0,0,0,0,0,0
stack ends

data segment ;属性
	db 1,'year',' num',' sum',' ave'
data ends

data0 segment ;年份 076f
	db 1,'2000','2001','2002','2003','2004'
data0 ends

data1 segment ;员工人数
	db 1,4,11,16,20,25
data1 ends

data2 segment ;总工资支出
	db 1
	dw 16,22,384,1400,2300
data2 ends

data3 segment ;平均收入
	db 1
	dw 0,0,0,0,0
data3 ends

table segment
 db 'year',' num',' sum',' ave' ;属性
 db 80 dup (0) ;数据
table ends
;6x16的矩阵,第一行为属性名,第二行到第六行为属性值
;year   num   Sum   ave:属性名
;0~3    5~7   9~11  13~15:属性名首地址
;0      5     9     13:数据首地址

code segment
	;计算平均收入
	start:
	mov si,1
	mov di,0
	mov cx,5
	
	s:
	mov dx,data2 ;被除数数组~2byte
	mov ds,dx
	mov ax,[si]
	
	mov dx,data1 ;除数数组~1byte
	mov ds,dx
	mov bl,[di]
	
	div bl ;除操作

	mov dx,data3 ;商数组~2byte
	mov ds,dx
	mov ah,0
	mov [si],ax
	
	inc si
	inc si
	inc di
	loop s
	
	
	;将数据填入表中
	mov dx,stack ;设置栈大小 077A:0027
	mov ss,dx
	mov sp,16
	
    mov dx,table ;指定表的位置 0774:0000
	mov es,dx
    mov bx,10h
	
    ;数据写入table
	mov cx,5
    s0:
    push cx
    ;输入年份
    mov di,0
    mov dx,data0
    mov ds,dx
    mov dl,ds:[0] ;记录下一次读取第几个内存单元
    mov dh,0
    mov si,dx
    mov cx,4
    s1:
    mov al,[si] ;read
    mov es:[bx+di],al ;write
    inc si
    inc di
    inc dl
    mov ds:[0],dl
    loop s1
    pop cx
    
    ;人数
    mov di,5
    mov dx,data1
    mov ds,dx
    mov dl,ds:[0] ;记录下一次读取第几个内存单元
    mov dh,0
    mov si,dx
    mov al,[si] ;read
    mov es:[bx+di],al ;write
    inc dl
    mov ds:[0],dl
    
    ;总工资
    mov di,9
    mov dx,data2
    mov ds,dx
    mov dl,ds:[0] ;记录下一次读取第几个内存单元
    mov dh,0
    mov si,dx
    mov ax,[si] ;read
    mov es:[bx+di],ax ;write
    inc dl
	inc dl
    mov ds:[0],dl
    
    ;平均工资
    mov di,13
    mov dx,data3
    mov ds,dx
    mov dl,ds:[0] ;记录下一次读取第几个内存单元
    mov dh,0
    mov si,dx
    mov ax,[si] ;read
    mov es:[bx+di],ax ;write
    inc dl
	inc dl
    mov ds:[0],dl
    
    add bx,10h
    loop s0
	
	mov ax,4c00h ;077A:00b8
	int 21h
code ends
end start
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值