INT 21H MOV AX,S8 CALL DISPAXD
CALL DISPCR LEA DX,STR5 MOV AH,09H INT 21H MOV AX,S9 CALL DISPAXD
CALL DISPCR LEA DX,STR6 MOV AH,09H INT 21H MOV AX,S10 CALL DISPAXD
MOV AH,4CH ;返回DOS INT 21H
; 将16位二进制数(AX)转化成十进制数并显示在频幕上 ; 入口参数:AX,出口参数:屏幕显示 DISPAXD PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI
LEA DI,DECIMAL ;注意在数据段定义DECIMAL空间(5字节) CALL TRANS16TO10 MOV CX,5
LEA DI,DECIMAL+4 MOV AH,2 DISPAXD2: MOV DL,[DI] ADD DL,30H DEC DI INT 21H LOOP DISPAXD2 POP DI POP DX POP CX POP BX POP AX RET
DISPAXD ENDP
;将16位二进制数(CX)转化成十进制数并保存在指定缓冲区中 ;入口参数:AX(待转换的数据),DI(转换结果存储区域的首地址),
出口参数:存储区域的内容
TRANS16TO10 PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX PUSH DI MOV BX,10 MOV CX,5 TRANS1: XOR DX,DX DIV BX MOV [DI],DL INC DI LOOP TRANS1
POP DI POP DX POP CX POP BX POP AX RET
TRANS16TO10 ENDP
DISPCR PROC NEAR PUSH AX PUSH DX MOV AH,2 MOV DL,0AH INT 21H MOV AH,2 MOV DL,0DH INT 21H POP DX POP AX RET
DISPCR ENDP
;显示AL,AX寄存器内容的子程序 DISPAL PROC NEAR PUSH AX PUSH CX PUSH DX PUSH AX
MOV CL,4 ;处理高位十六进制数 SHR AL,CL
CALL CHANG ;十六进制数变换成ASCII码 MOV AH,02 MOV DL,AL INT 21H
POP AX
AND AL,0FH ;处理低位十六进制数 CALL CHANG ;同上解释 MOV AH,02 MOV DL,AL INT 21H POP DX POP CX POP AX RET
DISPAL ENDP
CHANG PROC NEAR ;数码转换 CMP AL,10 JNGE CHANG1 ADD AL,7 CHANG1: ADD AL,30H RET
CHANG ENDP DISPAX PROC NEAR XCHG AL,AH CALL DISPAL XCHG AH,AL CALL DISPAL RET
DISPAX ENDP
COMPUTMEAN PROC NEAR PUSH BP MOV BP,SP PUSH SI PUSH DI PUSH AX PUSH BX
PUSH CX PUSH DX
MOV SI,[BP+4] ;数据区首地址 XOR DX,DX XOR BX,BX SUB DI,S10 MOV CX,DI XOR DI,DI PUSH CX CPTM1: MOV AX,[SI] ADD SI,2 CWD ADD BX,AX DAA ADC DI,DX DAA LOOP CPTM1 MOV DX,DI MOV AX,BX POP BX IDIV BX CPTM2: MOV [BP+4],AX POP DX POP CX POP BX POP AX POP DI POP SI POP BP RET
COMPUTMEAN ENDP
CODE ENDS END START