Something
public text v1 · immutableassume cs:code,ds:data,ss:stack
data segment
db 16 dup (0)
db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985','1986','1987','1988','1989','1990','1991','1992','1993','1994','1995'
db 12 dup (0)
dd 16,22,382,1356,2390,8000,16000,24486,50065,9749,149417,197514,345980,590827,803530,1183000,1843000,2759000,3753000,4649000,5937000
db 12 dup (0)
dw 3,7,9,13,28,38,130,220,476,778,1001,1442,2258,2793,4037,5635,7226,11542,14430,15257,17800,0,0
data ends
stack segment
db 32 dup (0)
stack ends
code segment
start:
call cleal_monitor
mov dh,2 ;↓
mov dl,3 ;确定字符串首字符显示的位置。
mov cl,7 ;显示属性
mov ax,data
mov ds,ax ;ds指向data段
mov si,0 ;si指向数据段的段首
show_age: mov bx,ds:[si+16]
mov ds:[0],bx
mov bx,ds:[si+18]
mov ds:[2],bx
call show_str
mov ax,cx
mov cx,bx
jcxz over_loop
mov cx,ax
add si,4
inc dh
jmp show_age
over_loop: mov cx,ax
mov di,0
mov si,0
mov dh,2
mov dl,40
mov cx,21
comnop_s: mov bx,cx
mov ax,ds:[di+208]
call dtoc
add di,2
mov cl,7
call show_str
inc dh
mov cx,bx
loop comnop_s
mov di,0
mov si,0
mov dh,2
mov dl,40
mov cx,21
profit_s: mov bx,cx
mov ax,ds:[di+112]
mov dx,ds:[di+114]
mov cx,0
mov cl,0ah
call dtocdw
add di,2
mov cl,7
call show_str
inc dh
mov cx,bx
loop profit_s
mov ax,0
int 16h
mov ax,4c00h
int 21h
cleal_monitor: push ax
push cx
push es
push si
mov ax,0b800h
mov es,ax
mov cx,7d0h
mov si,0
cle_s: mov al,0
mov es:[si],al
add si,2
loop cle_s
pop si
pop es
pop cx
pop ax
ret
show_str: push ax
push bx
push cx
push dx
push es
push ds
push bp
push si
mov ax,0b800h
mov es,ax
mov ax,0
mov al,dl
mov bl,2
mul bl
mov si,ax
mov al,0a0h
mov ah,0
mov bl,dh
mul bl
mov bp,ax
mov dx,cx
mov bx,0
mov ax,0
show_str_s: mov al,ds:[bx]
mov es:[bp][si],al
inc si
mov cx,ax
mov al,dl
mov es:[bp][si],al
inc si
inc bx
inc cx
loop show_str_s
pop si
pop bp
pop ds
pop es
pop dx
pop cx
pop bx
pop ax
ret
dtoc: push si
push dx
push cx
push bx
push ax
mov dx,0
mov bx,0
mov cx,0
mov bl,0ah
dtoc_s0: div bx
add dl,30h
push dx
mov dx,0
mov cx,ax
inc cx
inc si
loop dtoc_s0
mov cx,si
mov si,0
dtoc_s1: pop dx
mov ds:[si],dl
inc si
loop dtoc_s1
mov ds:[si],dh
pop ax
pop bx
pop cx
pop dx
pop si
ret
dtocdw: push si
push dx
push cx
push bx
push ax
mov si,0
dtocdw_s0: mov bx,ax ;将ax中的数据入栈,ax中是被除数的低位
mov ch,0
mov ax,dx ;将在dx中的被除数的高位,放入ax
mov dx,0
div cl ;除法
mov dl,ah ;将
mov dh,0 ;
mov ah,0 ;
push ax ;
mov ax,bx ;
mov dx,0
mov bl,cl ;
mov bh,0 ;
div bx ;
mov cx,dx ;
pop dx ;
add dl,30h ;
push dx ;
mov dx,0 ;
mov cx,ax ;
inc cx ;
inc si ;
loop dtocdw_s0 ; 0
mov cx,si
mov si,0
dtocdw_s1: pop dx
mov ds:[si],dl
inc si
loop dtocdw_s1
mov ds:[si],dh
pop ax
pop bx
pop cx
pop dx
pop si
ret
code ends
end start