📄 05b.asm
字号:
DATA SEGMENT
ORG 1000H
BUF DW 1,2,3,0,-4,-5,-6,-7,-8,-9
EZ DB 0H
LZ DB 0H
T1 DB "ZHENG SHU, LING, FU SHU:",13,10,'$'
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
CLC
MOV AX,0
MOV BX,0
MOV SI,OFFSET BUF
MOV CX,10
CHECK:
MOV AX,[SI]
CMP AX,0
JZ EQALZERO
SHL AX,1
ADC BL,0
CMP BL,1
JZ LESSZERO
CONTINUE:
ADD SI,2
CLC
MOV BL,0
LOOP CHECK
JMP FINISH
EQALZERO:
MOV DI,OFFSET EZ
MOV DL,[DI]
INC DL
MOV [DI],DL
JMP CONTINUE
LESSZERO:
MOV DI,OFFSET LZ
MOV DL,[DI]
INC DL
MOV [DI],DL
JMP CONTINUE
FINISH:
MOV BL,10
MOV DI,OFFSET EZ
MOV AL,[DI]
SUB BL,AL
MOV DI,OFFSET LZ
MOV AL,[DI]
SUB BL,AL
MOV AL,BL
PUSH DX
PUSH AX
LEA DX,T1
MOV AH,09H
INT 21H
POP AX
POP DX
CALL HEX2ASCII
CALL DISPLAY
MOV DI,OFFSET EZ
MOV AL,[DI]
CALL HEX2ASCII
CALL DISPLAY
MOV DI,OFFSET LZ
MOV AL,[DI]
CALL HEX2ASCII
CALL DISPLAY
;==============================
RET
START ENDP
HEX2ASCII PROC NEAR
CLC ;16进制转ASCII子程序
DAA
ADD AL,0F0H
ADC AL,40H
RET
HEX2ASCII ENDP
DISPLAY PROC NEAR
PUSH DX
MOV DL,AL
MOV AH,2
INT 21H
MOV DL,2CH
MOV AH,2
INT 21H
POP DX
RET
DISPLAY ENDP
CODE ENDS
END STT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -