文档介绍:从键盘键入一个四位的十六进制数,并在终端上显示为与它等值的二进制数
思路:
通过左移的方法逐个把每位十六进制数转换为四个二进制数,如果输入的字符非十六进制数则退出程序。
流程图:
DATA SEGMENT
BUFFER DB 4 DUP(?)
DATA ENDS
PROGRAM SEGMENT
MAIN PROC FAR
ASSUME CS:PROGRAM,DS:DATA
START:
PUSH DS
SUB AX,AX
PUSH AX
MOV AX,DATA
MOV DS,AX
FIRST: MOV BX,0
MOV CX,4
MOV AX,0
INPUT: ;此循环完成十六进制数的输入,并把它存在BUFFER中
MOV AH,01
INT 21H
CMP AL,3AH
JB H1
CMP AL,41H
JB EXIT
CMP AL,46H
JBE H0
CMP AL,61H
JB EXIT
CMP AL,66H
JA EXIT
SUB AL,20H
H0: SUB AL,37H
JMP H2
H1: CMP AL,30H
JB EXIT
SUB AL,30H
H2: MOV BUFFER[BX],AL
INC BX
LOOP INPUT
MOV DL,2DH ;显示—字符,作为十六进制和二进制的分界
MOV AH,2
INT 21H
MOV DI,4
MOV CX,4
MOV BX,0
CHANGE:
MOV DH,BUFFER[BX]
SAL DH,CL ;算数左移四位
CHANGE2:
SAL DH,1
JC CHANGE1 ;如果CF值为零,则左移位数为零,
MOV DL,30H 则显示二进制0,反之显示1
JMP OUTPUT
CHANGE1:
MOV DL,3