这个代码用些地方错误了!!可我老改不出来……谢谢高手帮我改一下
编程,将BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来。
分析:将十六进制数由高到低逐位转换为ASCII码,再进行屏幕显示DOS功能调用。
参考子程序如下:
HTOA2 PROC
PUSH CX
PUSH DX
XOR AL,AL
MOV CH,4
LOP: MOV CL,4
ROL BX,CL
MOV AL,BL
AND AL,0FH
ADD AL,30H
CMP AL,3AH
JL PRN
ADD AL,07H
PRN: MOV DL,AL
MOV AH,02H
INT 21H
DEC CH
JNZ LOP
POP DX
POP CX
RET
HTOA2 ENDP
如何使用汇编语言将BX寄存器内的二进制数用十六进制数的形式在屏幕上显示出来?
答案:3 悬赏:70 手机版
解决时间 2021-01-27 17:49
- 提问者网友:富士山上尢
- 2021-01-27 13:19
最佳答案
- 五星知识达人网友:蕴藏春秋
- 2021-01-27 14:11
disp proc near ;显示16进制数(字母大写)子程序,入口:BX寄存器存有二进制待显示数
mov dl,bh
mov cl,4
shr dl,cl
cmp dl,10
jc hex1
add dl,30h
hex1: add dl,37h
mov ah,02h
int 21h
mov dl,bh
and dl,0fh
cmp dl,10
jc hex2
add dl,30h
hex2: add dl,37h
mov ah,02h
int 21h
mov dl,bl
mov cl,4
shr dl,cl
cmp dl,10
jc hex3
add dl,30h
hex3: add dl,37h
mov ah,02h
int 21h
mov dl,bl
and dl,0fh
cmp dl,10
jc hex4
add dl,30h
hex4: add dl,37h
mov ah,02h
int 21h
mov dl,48h
mov ah,02h
int 21h
ret
disp endp
mov dl,bh
mov cl,4
shr dl,cl
cmp dl,10
jc hex1
add dl,30h
hex1: add dl,37h
mov ah,02h
int 21h
mov dl,bh
and dl,0fh
cmp dl,10
jc hex2
add dl,30h
hex2: add dl,37h
mov ah,02h
int 21h
mov dl,bl
mov cl,4
shr dl,cl
cmp dl,10
jc hex3
add dl,30h
hex3: add dl,37h
mov ah,02h
int 21h
mov dl,bl
and dl,0fh
cmp dl,10
jc hex4
add dl,30h
hex4: add dl,37h
mov ah,02h
int 21h
mov dl,48h
mov ah,02h
int 21h
ret
disp endp
全部回答
- 1楼网友:痴妹与他
- 2021-01-27 16:49
mov ax,bx
call asc16
;.............................
.exit
asc16: push ax
mov al,ah
call asc8 ;显示al
pop ax
asc8: push ax
shr al,4
call asc4 ;显示al低4位
pop ax
asc4: and al,0fh
add al,'0'
cmp al,'9'
jbe asc1
add al,7 ;变换到a-f
asc1: mov dl,al
mov ah,2
int 21h ;显示1个ascii
ret
- 2楼网友:等灯
- 2021-01-27 15:19
DEC CH
cmp ch,0 ;这句忘了
JNZ LOP
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯