【发布时间】:2021-12-17 17:56:39
【问题描述】:
我正在制作一个程序,可以将多个小写字母转换为其等效的大写字母。
例如,我想要的输出是:
Input a letter: asddf
The uppercase equivalent of letter asddf is ASDDF
但它只会像这样获取并打印最后一个字符:
Input a letter: asddf
The uppercase equivalent of letter fffff is FFFFF
我该如何解决这个问题?我知道我的代码不正确,但我不知道哪里出错了,因为我还是语言新手。谢谢!
这是我的代码:
org 100h
LEA DX, lowercase
MOV AH, 9
INT 21H
MOV CX, 5
MOV AH, 1
@LOOP:
INT 21H
LOOP @LOOP
MOV BL, AL
LEA DX, uppercase
MOV AH, 9
INT 21H
MOV DL, BH
MOV AH, 02H
INT 21h
MOV CX, 5
MOV DL, BL
MOV AH, 02H
@LOOP2:
INT 21h
LOOP @LOOP2
LEA DX, uppercase_
MOV AH, 9
INT 21H
SUB BL, 20H
MOV CX, 5
MOV AH, 2
MOV DL, BL
@LOOP3:
INT 21H
LOOP @LOOP3
MOV AH, 4CH
INT 21H
ret
lowercase db "Input a letter: $"
uppercase db 0AH, 0DH, "The uppercase equivalent of letter$"
uppercase_ db " is $"
【问题讨论】:
-
一次?就像与多个线程并行?如果你想use SIMD to do 16 or 32 characters in parallel,一次处理同一个字符串的多个字符会更有效,然后再处理下一个字符串。如果您只是意味着您有多个字符串并且需要最终在 8086(单线程且没有 SIMD)上完成它们,请遍历它们。无论如何,您的问题标题似乎与您对正在调试的问题的描述不符。