21,500
社区成员
发帖
与我相关
我的任务
分享
.model small
.data
X db 'abcdefABCDEF123',0,'$';
Y db 100 dup (0)
db '$'
.code
mov ax,@data
mov ds,ax
mov es,ax ;关联段
mov ax,0
lea si,x
lea di,y
a:
lodsb
cmp al,'$'
jz ok
mov ah,al
cmp ah,'0' ;若是0-9则直接输出到Y
jb error
cmp ah,'9'
ja next
jmp s
next:
or ah,00100000b ;把大写转化成小写字母
cmp ah,'a'
jb error
cmp ah,'f' ;若值在'a'和'f'之间,则继续,否则忽略
ja error
mov al,31h
stosb ;因为abcdef必定>10,所以十位为1
sub ah,'a'
add ah,30h ;ah-'a'并转化成相应的数字
mov al,ah
jmp s
s:
stosb
jmp a
error:
jmp a
ok:
lea dx,y
MOV AH,9
INT 21h ;输出结果
MOV AH,4CH
INT 21H
end