汇编程序设计:将数字串转换成16进制输出

来源:百度知道 编辑:UC知道 时间:2024/09/24 04:13:43
输入一个无符号的数字串,然后以16进制形式显示出串的值。
例:INPUT A NUMBER:59
RESULT:38H
其中59是下划线上的内容,是程序运行时输入的串
希望哪位高人快点帮忙指点啊!!!谢啦谢啦!!

code segment
assume cs:code,ds:code
org 100h
start:
push cs
pop ds
;输入一个十进制数
Input:lea dx,Mes0
mov ah,9
int 21h ;显示提示
xor bp,bp ;BP清0
mov cx,4
@In:mov ah,0
int 16h ;无回显输入
cmp al,0dh
jz OK ;回车结束输入
cmp al,'0'
jb @In
cmp al,'9';数据校验
ja @In
mov ah,0eh
int 10h ;显示有效输入
and al,0fh
shl bp,1
mov bx,bp
shl bp,1
shl bp,1
add bp,bx
mov ah,0
add bp,ax ;BP*10+AX
loop @In
;转换成16进制输出
OK:
lea dx,mes1
mov ah,9
int 21h
lea si,mes2
mov di,si
mov dx,si
mov cx,4
Q0:push cx
mov cl,4
rol bp,cl
mov ax,bp
and al,0fh
or al,'0'
cmp al,'9'
jbe Q1
add al,7
Q1:mov [si],al
inc si
pop cx
loop Q0
mov cx,3
T1:mov al,[di]
cmp al,'0'
jnz Q2
inc dx
inc di
loop T1