我试图写一个汇编程序emu 8086上转换上到下,反之亦然用户输入的字符串,但它不改变任何字符串:
.data
buffer db 10,?,10 dup(“)
.code
;读取输入
mov ah,0ah int 21h
mov si,2
mov ah,0 mov al,[si]
;转换
开始:
CMP Al,0
杰秀
;小写到小写
cmp al,a
jl上
cmp al,'z'
jg上
sub al,32
jmp检查
上:cmp al,'A'
jl next_bit
cmp al,'Z'
jg next_bit
add al,32
jmp检查
检查:
mov [si],jmp next_bit
;递增si寄存器以获得下一个字符
next_bit:inc si
mov al,[si]
jmp启动
;显示结果
显示:
mov si,2
莱亚德克斯,si
mov ah,9
int 21h
jmp结束
end:mov ah,4ch
int 21h
1条答案
按热度按时间siotufzp1#
mov si, offset buffer
是错误的。文本从buffer+2
开始。cmp al, 0
是错误的。您的buffer
没有初始化为零,无论如何都应该使用返回的字节计数。1.您的代码永远不会将大写转换为小写,因为
; Uppercase to lowercase
块不可访问。next_bit
是一个用词不当。你可能是说next_byte
。lea dx, si
是错误的。您已经递增了si
以指向字符串。您应该使用buffer+2
重新加载dx
。(也应该是语法错误)1.文本没有以
$
结尾,因此int 21/09无法按原样打印。jmp check
没有错:)但是跳到下一行肯定是没用的。