assembly - 如何在 MASM 32 中将小写更改为大写?

标签 assembly masm

我有这段代码,根据我的说法,应该将每个字符切换为其大写形式,我已经检查了位掩码,这很好。但是,当我打印字符串时,它仍然是小写形式。

            .MODEL SMALL
            .STACK 
                    .DATA

MEN         DB      'abcd'


        .CODE

            ORG     100H
MAIN        PROC    FAR

            LEA     BX, MEN+1
            MOV   CX, 20

OTRO:       MOV     AH,[BX]
            CMP      AH, 61H 
            JB          OTRO2
            CMP     AH, 7AH
            JA         OTRO2
            AND     AH, 11011111B 
            MOV     [BX], AH

  OTRO2:    INC        BX
            LOOP    OTRO
            MOV     AX, 4C00H
            INT       21H

  MAIN      ENDP

  END     MAIN

最佳答案

您正在跳过第一个字符,

LEA     BX, MEN+1

并循环超出字符串的长度,

MOV   CX, 20

但除此之外,它似乎在这方面起作用。你如何打印字符串?它不在提供的代码中。

关于assembly - 如何在 MASM 32 中将小写更改为大写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13389901/

相关文章:

assembly - 无法理解调用者不需要清理堆栈的 cdecl 调用约定示例

windows - 试图找出 MASM 语法

visual-studio-2010 - x86 汇编语言的代码自动完成

c - 如何在汇编语言中使用c库函数fgets?

assembly - 如何在Y86-64(或其他具有ADD + AND但没有 native 右移的玩具ISA)中执行右移

assembly - 在没有乘法器的情况下加速以 2^8 为基数的大型模乘法

dart - 为什么我的 asm 校验和宏的 Dart 实现不起作用?

linux - 如何在汇编程序中打开文件并修改它?

assembly - 我可以在每个内核的基础上编写汇编代码吗?

assembly - 为什么MS-DOS不初始化DS和ES寄存器?