push di
xor di,di
add di,30
call shouru
pop di
;----------------------写人数间距加20
;=============================================================================
;显示人数
push di
xor di,di
add di,60
call renshu
pop di
;----------------------与平均娄间距加20
;=============================================================================
;显示平均
push di
xor di,di
add di,90
call pingjun
call dtoc
;----------------------结果转ASCII码
call show_str
pop di
;----------------------显示
;=============================================================================
add bx,160
mov di,0
add si,2
add bp,4
loop zhuxh
mov ah,01
int 21h
;========= ====================================================
;==============================================================================
;==========================显示show_str========================================
show_str:
push bp
push cx
mov bp,offset d4
xssj: mov cl,ds:[bp]
mov ch,0
inc bp
jcxz xswk
mov es:[bx+di],cl
inc di
mov word ptr es:[bx+di],2
inc di
jmp xssj
xswk: pop cx
pop bp
ret
;==============================================================================
;==========================转换DTOC============================================
dtoc: push si
push di
push bp
push cx
push bx
mov bx,10
mov si,0
;-----------保存数据
d_hys: mov bp,ax
;-----------转移L位
mov ax,dx
xor dx,dx
;-----------H转AX D清零
div bx
;-----------H/10
mov di,ax
;-----------H结果=DI
mov ax,bp
;-----------L重赋给AX
div bx
;-----------REG+L/10 DX=余娄 H结果=DI
;=========== L结果AX
d_ecs: pop bx
pop cx
d_2: pop bp
pop di
pop si
ret
;===============================================================================
;==========================除法divdd==========================================
divdd: push si
push bp
push bx
push cx
;-------------保存数据
mov bp,ax
;-------------L转BP
mov ax,dx
mov dx,0
;-------------H给AX
div bx
;-------------H/10
mov si,ax
;-------------H结果给SI
mov ax,bp
;-------------L重赋给AX
div bx
mov dx,si
;-------------H赋值给DX
pop cx
pop bx
pop bp
pop si
ret
;==============================================================================
;==========================日期riqi============================================
riqi: push si
;------------------保存数据
;push
add si,si
mov ax,ds:[si]
mov ds:0d2h,ax
mov ax,ds:2[si]
mov ds:0d4h,ax
mov word ptr ds:0d6h,0
call show_str
pop si
ret
;==============================================================================
;==========================收入shouru==========================================
shouru: push si
push bp
;------------------保存数据
mov si,offset d4
;------------------d4=si
mov ax,ds:[bp]
mov dx,ds:2[bp]
;-------------------AX&DX赋值
call dtoc
call show_str
;-------------------转换ASCII&显示
pop bp
pop si
ret
;==============================================================================
;==========================人数renshu==========================================
renshu: push si
;------------------保存数据
;mov dx,offset d3
mov ax,ds:0a8h[si]
mov dx,0
call dtoc
call show_str
pop si
;===============================================================================
;==========================平均pingjun==========================================
pingjun: push si
push bx
push di
push bp
;-------------------;保存数据
mov ax,ds:[bp]
mov dx,ds:2[bp]
;-------------------DX&AX赋值 被除数
mov bx,ds:0A8H[si]
;-------------------BX赋值 除数
call divdd