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