從鍵盤上接收4位16進制數,並在屏幕上顯示與之等值的二進制數

;從鍵盤上接收4位16進制數,並在屏幕上顯示與之等值的二進制數
DATA SEGMENT
NUM  DW 0
CRLF DB 0AH,0DH,'$'
DATA ENDS

STACK SEGMENT PARA STACK
      DW 128 DUP(?)
TOP   LABEL WORD
STACK ENDS

CODE SEGMENT
          ASSUME CS:CODE,SS:STACK,DS:DATA
MAIN PROC FAR
START:
         MOV AX,DATA
MOV DS,AX
 
MOV AX,STACK
MOV SS,AX
LEA SP,TOP
 
MOV CX,4       ;循環接收4位16進制數
L0: MOV AH,1
INT 21H
CMP AL,40H     ;若爲A,B,C,D,E,F,則要先減去7再減去30H才能轉化爲實際數
JG  L1         ;若爲數字,則直接減去30H可轉化爲實際數
JL  L2
L1:    SUB AL,07H
L2:    SUB AL,30H
         PUSH AX
 
MOV AX,NUM     ;原有的16進制數向左移動一位,即*16
MOV BX,16      ;再加上當前從鍵盤輸入的數
MUL BX         ;舉一反三,輸入爲8進制數時則*8
POP BX
ADC AL,BL      ;從鍵盤輸入的數實際上存放在低8位中,相加時用ADC
MOV NUM,AX
LOOP L0
 
MOV AH,9
LEA DX,CRLF
INT 21H
 
MOV CX,16
MOV BX,NUM
L4: MOV DL,31H      ;移位輸出,CF=1時直接輸出1,CF=0時將DL-1->DL再輸出0
SAL BX,1        ;進制之間的轉化多與移位運算相關
JC  L3
         DEC DL
L3:  MOV AH,2
INT 21H
LOOP L4
 
MOV AX,4C00H
INT 21H
CODE ENDS
MAIN ENDP
         END START
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章