📄 06.asm
字号:
DATA SEGMENT
ORG 1000H
TEMP DB 128,127,122,128,128,128,127,128,129,129,128,128,129,128,128,128
ORG 1010H
AVER DB 10 DUP(?)
ORG 1020H
BCD1 DB 10 DUP(?)
ORG 1030H
BCD2 DB 10 DUP(?)
ORG 1040H
XLATED DB 10 DUP(?)
ORG 1060H
LEDA DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,88H,83H,0C6H,0A1H,86H,8EH,7FH
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START PROC FAR
STT:PUSH DS
SUB AX,AX
PUSH AX
;==============================
MOV AX,DATA
MOV DS,AX
MOV AX,0
MOV BX,0
MOV CX,0
MOV DX,0
CALL Z1
CALL Z2
CALL Z3
CALL Z4
CALL Z5
;==============================
RET
START ENDP
Z1 PROC NEAR
;将首地址为1000H开始存放的16个单字节数组取平均值后,存放在1010H开始的单元中
MOV SI,OFFSET TEMP
CLC
MOV CX,15
MOV AL,[SI]
LP1:INC SI
MOV BL,[SI]
ADD AX,BX
ADC DX,0
LOOP LP1
MOV BX,16
DIV BX
MOV SI,OFFSET AVER
MOV [SI],DX
ADD SI,2
MOV [SI],AX
RET
Z1 ENDP
Z2 PROC NEAR
;将存放在1010H开始的数转换成压缩的BCD码,存放在1020H开始的单元中
MOV CX,[SI]
MOV AX,0
LP: ADD AL,1
MOV BL,AL
DAA
CMP BL,9AH
JE LP2
JMP LP3
LP2:ADD AH,1
LP3:LOOP LP
MOV SI,OFFSET BCD1
MOV [SI],AX
RET
Z2 ENDP
Z3 PROC NEAR
;将存放在1020H开始的压缩BCD码转换成非压缩BCD码,存放在1030开始的单元中
MOV AX,0
MOV BX,0
MOV SI,OFFSET BCD1
MOV AL,[SI]
MOV BL,AL
AND AL,0F0H
MOV CL,4
SHR AL,CL
AND BL,0FH
MOV DI,OFFSET BCD2
MOV [DI],BL
INC DI
MOV [DI],AL
INC SI
MOV AL,[SI]
INC DI
MOV [DI],AL
RET
Z3 ENDP
Z4 PROC NEAR
;将存放在1030H开始的非压缩BCD码转换成七段共阳极LED显示值,存放在1040H开始的单元中
MOV SI,OFFSET BCD2
MOV AL,[SI]
MOV BX,OFFSET LEDA
XLAT
MOV DI,OFFSET XLATED
MOV [DI],AL
MOV CX,2
LP4:INC SI
INC DI
MOV AL,[SI]
XLAT
MOV [DI],AL
LOOP LP4
RET
Z4 ENDP
Z5 PROC NEAR
;将存放在1040H开始的全部数据送CRT显示
MOV AX,0
MOV BX,0
MOV DI,OFFSET XLATED
ADD DI,2
MOV CX,3
LP5:MOV DL,[DI]
MOV AL,DL
CALL DISPLAY1
DEC DI
LOOP LP5
RET
Z5 ENDP
HEX2ASCII PROC NEAR
;16进制ASCII码子程序
CLC
DAA
ADD AL,0F0H
ADC AL,40H
RET
HEX2ASCII ENDP
DISPLAY PROC NEAR
;数据显示子程序
PUSH DX
MOV DL,AL
MOV AH,2
INT 21H
POP DX
RET
DISPLAY ENDP
DISPLAY0 PROC NEAR
;格式显示子程序
PUSH DX
MOV DL,48H
MOV AH,2
INT 21H
MOV DL,20H
INT 21H
POP DX
RET
DISPLAY0 ENDP
DISPLAY1 PROC NEAR
;分离高低4位、调用数据显示子程序、调用格式显示子程序以完成全部显示过程子程序
PUSH CX
MOV BL,AL
AND AL,0F0H
MOV CL,4
SHR AL,CL
AND BL,0FH
CALL HEX2ASCII
CALL DISPLAY
MOV AL,BL
CALL HEX2ASCII
CALL DISPLAY
CALL DISPLAY0
POP CX
RET
DISPLAY1 ENDP
CODE ENDS
END STT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -