荣誉值:0
信誉值:0
注册日期:2023-07-25 10:13 |
assume cs:code,ss:stack,ds:data
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
dd 97479,140417,197514,345980,590827,803530,1183000,1843000,2759000
dd 3753000,4649000,5937000
dd 3,7,9,13,28,38,130,220,476
dd 778,1001,1442,2258,2793,4037,5635,8226,11542
dd 14430,15257,17800
dd 21 dup(0)
dd 0
data ends
table segment
db 21 dup(' ',0) //每行40个字节
table ends
stack segment
db 64 dup(0) //注意栈不要溢出
stack ends
----------------------------------------------------------------------------------
code segment
start:
mov ax,data
mov ds,ax
mov ax,table
mov es,ax
mov ax,stack
mov ss,ax
mov sp,64
----------------------------------------------------------------------------------
employee:
push ax
push dx
push cx
push si
push di
push bx
mov cx,21
mov si,84
mov di,168
mov bx,252
ave:
push cx
mov ax,[si]
mov dx,[si+2]
mov cx,[di]
call divdw
mov [bx],ax
mov [bx+2],dx
add si,4
add di,4
add bx,4
pop cx
loop ave
pop bx
pop di
pop si
pop cx
pop dx
pop ax
**********************************************************************************
**********************************************************************************
主程序:
----------------------------------------------------------------------------------
mov cx,21
mov bx,0
mov si,0
c0: call insert_y //向table中录入年份
add bx,40
loop c0
----------------------------------------------------------------------------------
mov cx,21
mov si,84
mov bp,0
c1: push cx
mov cx,10
mov ax,[si]
mov dx,[si+2]
call dtoc1 //向table中录入收入
add si,4
add bp,40
pop cx
loop c1
----------------------------------------------------------------------------------
mov cx,21
mov si,168
mov bp,0
c2: push cx
mov cx,10
mov ax,[si]
mov dx,[si+2]
call dtoc2 //向table中录入雇员数
add si,4
add bp,40
pop cx
loop c2
----------------------------------------------------------------------------------
mov cx,21
mov si,252
mov bp,0
c3: push cx
mov cx,10
mov ax,[si]
mov dx,[si+2]
call dtoc3 //向table中录入人均收入
add si,4
add bp,40
pop cx
loop c3
----------------------------------------------------------------------------------
mov cx,21
mov dh,2
mov dl,3
mov si,0
c4: push cx
mov cl,2
call show_str_table //在屏幕上显示
pop cx
inc dh
add si,40
loop c4
mov ax,4c00h
int 21h
主程序完
**********************************************************************************
**********************************************************************************
divdw: push ax
push dx
push cx
push bx
push ax
mov bx,0
mov ax,dx
mov dx,0
div cx
mov bx,ax
pop ax
div cx
mov cx,dx
mov dx,bx
pop bx
add sp,6
ret
----------------------------------------------------------------------------------
show_str_table:
push si
push dx
push cx
push ax
push ds
push di
mov di,0
mov ax,0b800h
mov ds,ax
mov ax,0a0h
mul dh
mov di,ax
mov dh,0
add dl,dl
add di,dx
mov ch,0
mov ax,cx
fz:mov cl,es:[si]
jcxz okay
mov byte ptr ds:[di],cl
mov byte ptr ds:[di+1],al
inc si
add di,2
jmp short fz
okay:
pop di
pop ds
pop ax
pop cx
pop dx
pop si
ret
----------------------------------------------------------------------------------
insert_y:
push ax
push cx
push di
mov di,0
mov cx,2
x0: mov ax,[si]
mov es:[bx+di],ax
add si,2
add di,2
loop x0
pop di
pop cx
pop ax
ret
----------------------------------------------------------------------------------
dtoc1:
push ax
push dx
push cx
push bx
push si
push di
mov di,0
mov si,0
mov bx,cx
qy1: mov cx,bx
call divdw
push ax
push cx
add ax,dx
mov cx,ax
pop di
pop ax
add di,30h
push di
inc si
jcxz num1
jmp short qy1
num1: mov cx,si
mov di,0
y1: pop es:[bp+di+12]
inc di
loop y1
mov byte ptr es:[bp+di+12],20h
pop di
pop si
pop bx
pop cx
pop dx
pop ax
ret
----------------------------------------------------------------------------------
dtoc2:
push ax
push dx
push cx
push bx
push si
push di
mov di,0
mov si,0
mov bx,cx
qy2: mov cx,bx
call divdw
push ax
push cx
add ax,dx
mov cx,ax
pop di
pop ax
add di,30h
push di
inc si
jcxz num2
jmp short qy2
num2: mov cx,si
mov di,0
y2: pop es:[bp+di+22]
inc di
loop y2
mov byte ptr es:[bp+di+22],20h
pop di
pop si
pop bx
pop cx
pop dx
pop ax
ret
----------------------------------------------------------------------------------
dtoc3:
push ax
push dx
push cx
push bx
push si
push di
mov di,0
mov si,0
mov bx,cx
qy3: mov cx,bx
call divdw
push ax
push cx
add ax,dx
mov cx,ax
pop di
pop ax
add di,30h
push di
inc si
jcxz num3
jmp short qy3
num3: mov cx,si
mov di,0
y3: pop es:[bp+di+32]
inc di
loop y3
mov byte ptr es:[bp+di+32],20h
pop di
pop si
pop bx
pop cx
pop dx
pop ax
ret
----------------------------------------------------------------------------------
code ends
end start | | |