1. 程式人生 > >組合語言實現輸入一個四位十六進位制數一十六位二進位制輸出

組合語言實現輸入一個四位十六進位制數一十六位二進位制輸出

DATAS SEGMENT
    string db 'please input four char between 0 and f(hex):$'
    ;此處輸入資料段程式碼  
DATAS ENDS


STACKS SEGMENT
    ;此處輸入堆疊段程式碼
STACKS ENDS


CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    
    mov dx,offset string;輸出提示資訊
    mov ah,09h
    int 21h
    mov dl,0ah;換行
    mov ah,2
    int 21h


    MOV  CX, 0404H 
MOV  BX, 0
L1:  ;迴圈四次輸入字元
    MOV  AH, 01H
INT  21H;鍵盤讀入一個字元存入AL中
SUB  AL, 30H 
    CMP  AL, 0AH;數字調到L2
JL   L2
    SUB  AL,  07H;字元
L2:  
    SHL  BX,CL;BX左移四位
OR   BL,AL
    DEC  CH
    JNZ   L1
    
    mov dl,0dh;回車
    int 21h
    mov dl,0ah;換行
    mov ah,2
    int 21h
    
    MOV CX,0010H;迴圈十六次
R:;左移是'1'判斷是還是'0'
    SHL BX,1
    JB PRINT1;cf=1跳轉
    JNB PRINT2;cf=0跳轉
  
PRINT1:;輸出字元'1'
    MOV DL,31H
    MOV AH,2
    INT 21H
    JMP L
    
PRINT2:;輸出字元'0'
    MOV DL,30H
    MOV AH,2
    INT 21H
    
L:  LOOP R
;錄入四位十六進位制數,儲存在BX中並轉化為二進位制輸出 
    ;此處輸入程式碼段程式碼
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START