|
主题 : : 课程设计1,思路 [待解决] |
回复[ 5次 ]
点击[ 46次 ] | |
荣誉值:0
信誉值:0
注册日期:2024-01-16 11:54 |
ASSUME CS:CODE,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,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
stack segment
db 100 dup (0)
stack ends
CODE SEGMENT
START:
MOV AX,DATA
MOV DS,AX
mov ax,0b800h
mov es,ax
mov ax,stack
mov ss,ax
mov sp,100
mov bx,0
mov di,160
mov si,0
mov bp,0
mov cx,21
main:
push cx
call year
call income
call people
call average
add di,160
add si,4
add bp,2
pop cx
loop main
mov ax,4c00h
int 21h
year: ;年份显示子程序-------------------------------------------------------
mov cx,4
push ax
push si
push di
push bp
yearshow:
mov al,ds:[si]
mov ah,1
mov es:[di+4]
inc si
add di,2
loop yearshow
pop bp
pop di
pop si
pop ax
ret
income: ;收入显示子程序-----------------------------------------------------
push bx
push bp
push si
push di
push ax
mov ax,ds:[si+84]
mov dx,ds:[si+86]
mov bx,0
mov bp,0
divdx:
push ax
mov ax,dx ;
mov dx,0 ;
mov cx,ax
jcxz divax
mov cx,10
div cx ;
mov bx,ax
divax: pop ax
mov cx,10
div cx
push dx
inc bp
mov cx,ax
jcxz ok2
mov dx,bx
jmp divdx
ok2:
mov cx,bp
incomeshow:
pop ax
mov ah,2
add al,30h
mov es:[di+46],ax
add di,2
loop incomeshow
pop ax
pop di
pop si
pop bp
pop bx
ret
people: ; 雇员子显示子程序-------------------------------------------------------
push bx
push di
push si
push bp
mov ax,ds:[bp+168]
peoplediv:
mov dx,0
mov cx,10
div cx
push dx
inc bx
mov cx,ax
jcxz ok3
mov cx,10
jmp peoplediv
ok3:
mov cx,bx
peopleshow:
pop ax
mov ah,3
add al,30h
mov es:[di+90],ax
add di,2
loop peopleshow
pop bp
pop si
pop di
pop bx
ret
average: ;人均收入显示子程序------------------------------------------------
push bx
push bp
push si
push di
push ax
mov ax,ds:[si+84]
mov dx,ds:[si+86]
mov bx,0
divgw:
push ax
mov ax,dx
mov dx,0
mov cx,ax
jcxz divdw
mov cx,ds:[bp+168]
div cx
mov bx,ax
divdw:
pop ax
mov cx,ds:[bp+168]
div cx
mov dx,bx
mov bx,0
mov bp,0
div10H:
push ax
mov ax,dx
mov dx,0
mov cx,ax
jcxz div10L
mov cx,10
div cx
mov bx,ax
div10L:
pop ax
mov cx,10
div cx
push dx
inc bp
mov cx,ax
jcxz ok4
mov dx,bx
jmp div10H
ok4:
mov cx,bp
averageshow:
pop ax
mov ah,4
add al,30h
mov es:[di+140],ax
add di,2
loop averageshow
pop ax
pop di
pop si
pop bp
pop bx
ret
CODE ENDS
END START | | |