assembly - 如何将输入字符串转换为大写字母
问题描述
你好,所以我正在制作一个程序,用户输入一个字符串,输出字符串应该是大写字母。但我得到的是与输入和所有大写字母相同长度的输出 - 但字母只是“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
解决方案
推荐阅读
- perforce - 合并混乱后如何在 P4 中合并
- sql - 如何截断时间戳以重新调整 Oracle 中的日期?
- sql-server - 编写 TSQL 查询的最佳方式
- python - 如何在python中制作2种颜色?比较
- amazon-ec2 - Terraform 快照不适用于 ebs_block_device 的动态块
- reactjs - 使用 React Js 创建一个简单的 todolist。不知道为什么我的状态没有用新的 todo 项更新
- java - 分数简化
- java - 编辑字符串数组并将其转换为二维字符数组
- bash - 如何在终端中简单地将命令的所有控制台输出写入文件?
- c - 为什么不能使用指针更改字符?