assembly 无法将上限转换为下限,反之亦然用户输入字符串

33qvvth1  于 2023-10-19  发布在  其他
关注(0)|答案(1)|浏览(81)

我试图写一个汇编程序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

siotufzp

siotufzp1#

  1. mov si, offset buffer是错误的。文本从buffer+2开始。
  2. cmp al, 0是错误的。您的buffer没有初始化为零,无论如何都应该使用返回的字节计数。
    1.您的代码永远不会将大写转换为小写,因为; Uppercase to lowercase块不可访问。
  3. next_bit是一个用词不当。你可能是说next_byte
  4. lea dx, si是错误的。您已经递增了si以指向字符串。您应该使用buffer+2重新加载dx。(也应该是语法错误)
    1.文本没有以$结尾,因此int 21/09无法按原样打印。
  5. jmp check没有错:)但是跳到下一行肯定是没用的。

相关问题