编写一个汇编语言程序,要把键盘输入的小写字母用大写字母显示出来
时间: 2025-06-22 12:44:53 浏览: 11
### 编写汇编语言程序以将小写字母转换为大写字母
为了实现从键盘输入并将其转换为大写的显示功能,在8086汇编语言中可以设计如下结构化程序[^1]。
#### 主要逻辑流程
- **初始化部分**
- 设置数据段寄存器DS指向适当位置。
- **获取用户输入**
- 使用INT 21H中断服务,其中AH=01H表示等待单个字符键入,并且回显该字符至屏幕。
- **判断与转换**
- 对于每一个接收到的ASCII码值进行分析;如果其位于'a'到'z'(即97~122)之间,则减去32得到相应的大写字母编码(因为'A'-'a'=32),否则保持不变。
- **输出处理过的字符**
- 同样通过INT 21H, AH=02H来单独打印每个已调整好的字符。
下面给出具体的代码示例:
```assembly
DATA SEGMENT
MSG DB 'Enter a letter:$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA ; 加载数据段地址到AX
MOV DS, AX ; 将AX中的内容传给DS
LEA DX, MSG ; 装载消息偏移量到DX
MOV AH, 09H ; 打印字符串函数号
INT 21H ; DOS系统调用
READ_LOOP:
MOV AH, 01H ; 函数号设置为接收一个字符
INT 21H ; 实际执行读取操作
CMP AL, 0DH ; 如果遇到回车符则结束循环
JE END_READING ;
SUB AL, 32 ; 默认尝试转成大写 (对于非小写字母这一步无影响)
CMP AL,'Z'+1 ; 判断是否超出大写字母范围
JBE PRINT_CHAR ; 若未超过则正常打印
ADD AL, 32 ; 还原被误改的非小写字母
PRINT_CHAR:
MOV DL,AL ; 把待打印字符放入DL准备输出
MOV AH,02H ; 设定为打印字符模式
INT 21H ; 输出当前字符
JMP READ_LOOP ; 返回继续读下一个字符
END_READING:
MOV AH,4CH ; 结束程序运行
INT 21H ;
CODE ENDS
END START
```
此段代码实现了基本的功能需求——当用户按下任意按键时会立即显示出对应的大小写版本直到按下了回车键为止。需要注意的是这里假设所有的输入都是有效的英文字母而没有做额外错误检测。
阅读全文
相关推荐

















