用汇编指令,利用宏指令INPUT和OUTPUT实现将键入的大写字母变为小写字母显示出来。
时间: 2024-05-03 19:17:08 浏览: 24
以下是用汇编指令实现将键入的大写字母变为小写字母的示例代码,其中使用了INPUT和OUTPUT宏指令:
```
.MODEL SMALL
.STACK 100H
.DATA
inputChar DB ?
outputChar DB ?
.CODE
MAIN PROC
MOV AX, @DATA
MOV DS, AX
; 读取输入字符
INPUT inputChar
; 将大写字母转换为小写字母
CMP inputChar, 'A'
JB outputCharIsUpper
CMP inputChar, 'Z'
JA outputCharIsUpper
ADD inputChar, 32 ; 'A'到'Z'的ASCII码值加上32等于对应的小写字母的ASCII码值
JMP outputCharIsLower
outputCharIsUpper:
MOV outputChar, inputChar ; 如果不是大写字母,则直接输出原字符
JMP output
outputCharIsLower:
MOV outputChar, inputChar ; 如果是大写字母,则输出转换后的小写字母
output:
; 输出字符
OUTPUT outputChar
MOV AH, 4CH
INT 21H
MAIN ENDP
END MAIN
```
相关问题
汇编语言用循环实现输入大写字母变成小写
Hello! ,循环实现输入大写字母变成小写,可以通过汇编语言的循环语句和ASCII码表来实现。具体的实现方式可以参考以下汇编代码示例:
```
assume cs:codesg
data_seg segment
input db 'HELLO',0AH,0DH,'$'
data_seg ends
code_seg segment
start:
mov ax, data_seg
mov ds, ax
mov ax, 0 ; 字符计数器清零
mov bx, 0 ; 计数器清零
mov cx, 5 ; 循环次数为字符长度
loop1: ; 循环语句开始
mov al, input[bx] ; 取字符
cmp al, 'A' ; 判断是否大写
jb skip ; 如果不是大写跳过本次循环
cmp al, 'Z' ; 判断是否小于等于 Z
ja skip ; 如果大于 Z 跳过本次循环
add al, 20H ; 大写字母加上 20H 为对应小写字母
mov input[bx], al ; 将小写字母赋值给原字符
skip: ; 跳过本次循环
inc bx ; 计数器加 1
inc ax ; 字符计数器加 1
cmp ax, cx ; 判断是否遍历完所有字符
jle loop1 ; 如果没有则继续循环
mov ah, 09H ; DOS 功能号 09H 表示在屏幕上输出字符串
mov dx, offset input; DX 存储要输出的字符串地址
int 21H ; 执行 DOS 中断
mov ah, 4CH ; 退出程序
int 21H ; 执行 DOS 中断
code_seg ends
end start
```
这段汇编代码主要是通过循环遍历输入的字符串,判断每个字母是否为大写字母,如果是则将其转换成小写字母。最后输出转换后的字符串。
汇编语言实现将字符串里面的大写字母转化为小写字母,其他字符不变、
汇编语言中可以使用 ASCII 码表来实现将大写字母转化为小写字母。ASCII 码表中,大写字母的编码范围是 65 到 90,小写字母的编码范围是 97 到 122。因此,可以遍历字符串中的每个字符,如果该字符的 ASCII 码值在大写字母的编码范围内,则将其加上 32,即可得到对应的小写字母。
下面是一个示例程序,实现了将字符串中的大写字母转化为小写字母的功能:
```
section .data
str db "Hello, World!",0
section .text
global _start
_start:
; 将字符串的地址存入 esi 寄存器
mov esi, str
; 遍历字符串中的每个字符
loop:
; 如果当前字符为 0,即字符串结束符,则跳出循环
cmp byte [esi], 0
je end_loop
; 判断当前字符是否为大写字母
cmp byte [esi], 'A'
jl next_char
cmp byte [esi], 'Z'
jg next_char
; 如果是大写字母,则将其转化为小写字母
add byte [esi], 32
next_char:
; 继续处理下一个字符
inc esi
jmp loop
end_loop:
; 输出转化后的字符串
mov eax, 4
mov ebx, 1
mov ecx, str
mov edx, 14
int 0x80
; 退出程序
mov eax, 1
xor ebx, ebx
int 0x80
```
在上面的程序中,首先将字符串的地址存入了 esi 寄存器。然后使用循环遍历字符串中的每个字符。在处理每个字符时,先判断当前字符是否为大写字母,如果是,则将其加上 32,即可得到对应的小写字母。处理完所有字符后,使用系统调用输出转化后的字符串,并退出程序。运行该程序后,输出结果为:
```
hello, world!
```
相关推荐
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)