You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:编写汇编语言程序实现字符串字符大小写互换

实现字符串大小写双向互换的汇编解决方案

你的代码目前是通过AND指令强制将字符第5位清零,实现统一转大写。要实现大小写双向互换,核心是翻转ASCII字母的大小写标志位——ASCII中大小写字母仅在第5位(二进制100000b,即十六进制20h)存在差异:小写字母该位为1,大写为0。用XOR指令翻转这一位,就能让小写转大写、大写转小写。

修改后的完整代码

.386
.model flat,stdcall
.stack 4096
ExitProcess proto,dwExitCode:dword

.data
    mystring BYTE "Hello World",0

.code
main proc
    mov ecx,LENGTHOF mystring
    mov esi,OFFSET mystring

L1:
    ; 翻转第5位,实现大小写互换
    xor  BYTE PTR [esi],20h  
    inc  esi
    loop L1

    invoke ExitProcess,0
main endp
end main

关键说明

  • 替换原AND指令为XOR:XOR操作会根据原位值翻转,原1变0、原0变1,正好匹配大小写转换的需求。
  • 操作数20h等价于二进制100000b,直接对应ASCII的大小写标志位,写法更简洁直观。
  • 若要处理任意长度的字符串(非定长),可以修改循环逻辑为判断当前字符是否为0(字符串结束符),避免处理末尾的空字符:

L1:
cmp BYTE PTR [esi],0
je ExitLoop
xor BYTE PTR [esi],20h
inc esi
jmp L1
ExitLoop:

内容的提问来源于stack exchange,提问作者Prabhjot
相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:15:54