首页 > 解决方案 > 如何将输入字符串转换为大写字母

问题描述

你好,所以我正在制作一个程序,用户输入一个字符串,输出字符串应该是大写字母。但我得到的是与输入和所有大写字母相同长度的输出 - 但字母只是“A”。我不知道程序是否可以读取缓冲区或如果不能更正,或者我的代码有其他问题。请帮忙

READ MACRO MSG
    MOV AH,0AH
    LEA DX,MSG
    INT 21H
ENDM

PRINT MACRO MSG
    MOV AH,09H
    LEA DX,MSG
    INT 21H
ENDM

DATA SEGMENT
    CR EQU 0DH
    LF EQU 0AH
    MSG1 DB "ENTER THE STRING IN LOWERCASE:$"
    MSG2 DB CR,LF,"THE UPPERCASE STRING IS :$"

BUFF DB 255
             DB 0
             DB 255 DUP ('$')
DATA ENDS

CODE SEGMENT
    ASSUME CS:CODE,DS:DATA
START:    
    MOV AX,DATA
    MOV DS,AX
    
    PRINT MSG1
    READ BUFF
    MOV SI,OFFSET BUFF+2
    MOV CL,BYTEPTR[SI-1]
    MOV CH,00H

LP1:MOV AH,[SI]
    MOV AL,61H
JB LP1
    CMP AL,7BH
    JNB LP1
    SUB AL,20H
    MOV [SI],AL

LP2:
    INC SI
    LOOP LP1
    PRINT MSG2
    PRINT BUFF+2
    MOV AH,4CH
    INT 21H
CODE ENDS
END START

标签: assemblyx86-16

解决方案


推荐阅读