荣誉值:0
信誉值:0
注册日期:2018-10-13 21:08 |
assume cs:code
data segment
db '1975',0,'1976',0,'1977',0,'1978',0,'1979',0,'1980',0,'1981',0,'1982',0,'1983',0
db '1984',0,'1985',0,'1986',0,'1987',0,'1988',0,'1989',0,'1990',0,'1991',0,'1992',0
db '1993',0,'1994',0,'1995',0
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 11452,14430,15257,17800
db 9 dup (0)
db 144 dup (0)
db 96 dup (0)
db 64 dup(0)
data ends
code segment
start:
mov bx,data
mov ds,bx
call clear_screen
mov dh,2
mov dl,2
mov si,0
call show
salary:
mov di,69h
mov cx,21
mov si,0f0h
salary_s:
push cx
mov ax,[di]
mov dx,[di+2]
call dtoc
inc si
add di,4
pop cx
loop salary_s
show_salary:
mov dh,2
mov dl,12
mov si,0f0h
call show
staff:
mov di,0bdh
mov cx,21
mov si,180h
staff_s:
push cx
mov ax,[di]
mov dx,0
call dtoc
inc si
add di,2
pop cx
loop staff_s
show_staff:
mov dh,2
mov dl,22
mov si,0180h
call show
avg:
mov cx,21
mov si,01e0h
mov bx,69h
mov di,0bdh
avg_s:
push cx
mov ax,[bx]
mov dx,[bx+2]
mov cx,[di]
div cx
mov dx,0
call dtoc
inc si
add bx,4
add di,2
pop cx
loop avg_s
show_avg:
mov dh,2
mov dl,30
mov si,01e0h
call show
program_end:
mov ax,4c00h
int 21h
dtoc:
push ax
push bx
push cx
push dx
push di
mov cx,0ah
mov bx,cx
mov di,0
dtoc_s0:
call divdw
push cx
inc di
mov cx,ax
add cx,dx
jcxz dtoc_ok
mov cx,bx
jmp dtoc_s0
dtoc_ok:
mov cx,di
dtoc_s1:
pop dx
add dx,30h
mov [si],dl
inc si
loop dtoc_s1
mov byte ptr [si],0
pop di
pop dx
pop cx
pop bx
pop ax
ret
divdw:
push bx
push ax
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
push ax
div cx
mov cx,dx
mov dx,bx
pop bx
divdw_ok:
pop bx
ret
clear_screen:
push ax
push cx
push di
mov ax,0b800h
mov es,ax
mov cx,0fa0h
mov di,0
clear_screen1:
mov byte ptr es:[di],20h
mov byte ptr es:[di+1],0
add di,2
loop clear_screen1
clear_screen_ok:
pop di
pop cx
pop ax
ret
show_str:
push ax
push bx
push dx
push di
push cx
mov ax,0b800h
mov es,ax
mov cl,dh
mov ch,0
jcxz set_cols
mov bx,0
set_rows:
add bx,0a0h
loop set_rows
set_cols:
mov cl,dl
mov ch,0
jcxz set_str
s: add bx,2
loop s
mov di,0
set_str:
mov cl,[si]
mov ch,0
jcxz show_str_ok
mov es:[bx][di],cl
set_color:
pop cx
mov es:[bx][di+1],cl
push cx
inc si
add di,2
jmp set_str
show_str_ok:
pop cx
pop di
pop dx
pop bx
pop ax
ret
show:
push bx
push cx
push dx
push si
mov bl,0fh
mov cx,21
show_s:
push cx
mov cl,bl
call show_str
inc dh
inc si
pop cx
loop show_s
show_ok:
pop si
pop dx
pop cx
pop bx
ret
code ends
end start | | |