組合語言實現輸入一個四位十六進位制數一十六位二進位制輸出
阿新 • • 發佈:2019-02-10
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
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