在我之前的一篇博客里已经写过如何输出一个字符的ASCII码的十进制形式,以十六进制形式输出的方法与其相差不多,详情可查看我的专栏《汇编语言》里的第一篇博客。
要求如下:
代码如下:
data segment
string1 db 5 dup(?)
string2 db 5 dup(?)
data ends
code segment
assume cs:code,ds:data
start:
mov ax,data ;初始化段寄存器
mov ds,ax
mov ah,1 ;从键盘输入一个字符
int 21H
mov ah,0
mov si,2
mov bh,10H
again:
div bh
add ah,30H
mov string1+si,ah
cbw
add si,1
cmp ax,0 ;商不为0就继续作除法
jne again
je makeover1
makeover1:
mov string1+si,'$' ;字符串结束标志
mov bx,2
mov dx,si
next:
sub si,1
mov cl,[string1+si] ;将string1逆向复制到string2
mov string2+bx,cl
add bx,1
cmp bx,dx ;控制复制次数
jne next
je makeover2
makeover2:
mov string2+bx,'$' ;字符串结束标志
mov dl,0AH ;输出一个换行符
mov ah,2
int 21H
mov dx,offset string2 ;输出字符串
mov ah,9
int 21H
mov ah,4cH
mov al,0
int 21H
code ends
end start
运行结果如下:
成功实现。