我正在使用 MASM 程序集,我正在尝试编写一个循环来逐字节处理字符串 str1,使用位操作将每个小写字母更改为相应的大写字母。如果字母已经是大写字母,请不要理会它。当我执行我的代码时,我的字符串 str1 似乎没有发生任何事情,我很难弄清楚为什么,也许我不应该这样处理我的数组,但是,这里是代码:
.386
.MODEL FLAT
str1 dword "aBcD", cr, Lf, 0
....
.code
_start:
output str1
**sub esi, esi ; sum = 0
lea ebx, str1
top: mov al, [ebx + esi] ; attempting to move each character value from
str1 into the register al for comparison and
possible conversion to uppercase
add esi, 5
cmp al, 0
je zero
sub al, 20h** ; convert lowercase to corresponding uppercase
loop top
zero: output zeromsg ; for TESTING of al purposes only
done: output str1value
output str1
没有任何变化,并且在没有发生转换的基础上,它以相反的顺序打印字符串。为什么?打印为:“DcBa”。任何询问将不胜感激!提前致谢。