荣誉值:0
信誉值:0
注册日期:2011-05-17 10:38 |
data segment
db '1975', '1976', '1977', '1978', '1979', '1980', '1981', '1982'
db '1983', '1984', '1985', '1986', '1987', '1988', '1989', '1990'
db '1991', '1992', '1993', '1994', '1995'
dd 16, 22, 382, 1356, 2390, 8000, 16000, 24486, 50065, 97479, 140417, 197514
dd 345980, 590827, 803530, 118300, 184300, 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
stack segment
db 32 dup (0)
stack ends
assume cs:code,ds:data,ss:stack
code segment
start: mov ax,data
mov ds,ax
mov ax,0b800h
mov es,ax
mov ax,stack
mov ss,ax
mov sp,32
mov bx,0
mov bp,0
mov cx,21
year_outer: push cx
xor di,di
xor si,si
mov cx,4
year_inner: mov al,[bx+si]
mov ah,7
mov es:[bp+di],ax
inc si
add di,2
loop year_inner
add bx,4
add bp,0a0h
pop cx
loop year_outer
xor bp,bp
xor si,si
mov cx,21
revenue_dtoc: push cx
xor di,di
mov ax,[84+si]
mov dx,[84+si+2]
mov cx,10
call revenue_divw
add si,4
pop cx
loop revenue_dtoc
xor bp,bp
xor si,si
mov cx,21
employee_dtoc: push cx
xor di,di
mov ax,[168+si]
xor dx,dx
mov cx,10
call employee_divw
add si,2
pop cx
loop employee_dtoc
xor bp,bp
xor si,si
xor bx,bx
mov cx,21
avg_dtoc: push cx
xor di,di
mov ax,[84+si]
mov dx,[84+si+2]
mov cx,[168+bx]
push bx
call avg_divw
pop bx
add si,4
add bx,2
pop cx
loop avg_dtoc
mov ah,4ch
int 21h
avg_divw: push ax
mov ax,dx
xor dx,dx
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx ;收入/雇员数=人均收入(数字形式),商存储在ax和dx中
mov cx,10
avg_s: push ax
mov ax,dx
xor dx,dx
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
inc di
add cx,30h
push cx
mov cx,ax
add cx,dx
jcxz oka
mov cx,10
jmp avg_s
oka: mov cx,di
xor di,di
ok_a: pop es:[bp+di+74]
mov ah,7
inc di
mov byte ptr es:[bp+di+74],ah
inc di
loop ok_a
add bp,0a0h
ret
employee_divw: push ax
mov ax,dx
xor dx,dx
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx ;单次除法溢出运算结束
inc di
add cx,30h
push cx
mov cx,ax
add cx,dx
jcxz oke
mov cx,10
jmp employee_divw
revenue_divw: push ax
mov ax,dx
xor dx,dx
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx ;单次除法溢出运算结束
inc di
add cx,30h
push cx
mov cx,ax
add cx,dx
jcxz okr
mov cx,10
jmp revenue_divw
okr: mov cx,di
xor di,di
ok_s: pop es:[bp+di+20]
mov ah,7
inc di
mov byte ptr es:[bp+di+20],ah
inc di
loop ok_s
add bp,0a0h
ret
oke: mov cx,di
xor di,di
ok_e: pop es:[bp+di+48]
mov ah,7
inc di
mov byte ptr es:[bp+di+48],ah
inc di
loop ok_e
add bp,0a0h
ret
code ends
end start | | |