Assembly 如何在MASM 32中从小写改为大写?

Assembly 如何在MASM 32中从小写改为大写?,assembly,masm,Assembly,Masm,我有这个代码,根据我的说法,应该把每个字符都转换成它的大写形式,我已经检查了位掩码,它很好。但是,当我打印字符串时,它仍然是小写形式 .MODEL SMALL .STACK .DATA MEN DB 'abcd' .CODE ORG 100H MAIN PROC FAR LEA

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

            .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

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

哦,我该死的,加上一个是为了调试,我用int 21打印它。你的段是如何设置的?我想你可能是把数据段编错了。我不知道你在说什么:(如果你不知道数据段是什么,把你的字符串放在里面。代码放在代码后面。这可能会使它工作。