...从键盘上输入8位二进制数,显示出相应的十六进制数 尽量短
发布网友
发布时间:2024-10-26 17:55
我来回答
共1个回答
热心网友
时间:2024-10-26 17:53
调度通过!
DATAS SEGMENT
m1 db 'input:$'
m2 db 'output:$'
m3 db 0dh,0ah,'$'
DATAS ENDS
STACKS SEGMENT
;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
MOV AX,DATAS
MOV DS,AX
lea dx,m1 ;输出提示
mov ah,9
int 21h
mov cx,8 ;循环8次接受字符
mov bx,0 ;过滤0 1 回车
s1:
mov ah,7
int 21h
cmp al,0dh
jz s2
cmp al,30h
jb s1
cmp al,31h
ja s1
mov dx,ax
mov ah,2
int 21h
mov ax,dx
sub al,30h
xor dx,dx
mov dl,al
shl bl,1
or bl,dl
loop s1
s2:
lea dx,m3 ;回车换行
mov ah,9
int 21h
lea dx,m2 ;输出提示
mov ah,9
int 21h
mov cl,4 ;16进制显示bl中的值
mov bh,bl
and bl,0f0h
shr bl,cl
mov al,bl
mov cx,2
s3:
add al,30h
cmp al,39h
jbe s4
add al,7
s4:
mov dl,al
mov ah,2
int 21h
and bh,0fh
mov al,bh
loop s3
mov ah,0 ;等待输入
int 16h
MOV AH,4CH
INT 21H
CODES ENDS
END START