用汇编语言编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z或a-z 字符,均显示'c';若是回车字符<CR>(其ASCII码为0DH),则自动结束程序,若为其 它字符则不显示,循环等待新的字符输入。
时间: 2024-09-22 21:02:28 浏览: 38
汇编 从键盘输入字符,若是 0~9,则直接显示。若是 A~Z 或 a~z,则均显示‘*’。若是其它字符则不显示,继续等待新的字符输入。用回车键结束程序。
在汇编语言中编写这样的程序需要利用特定的指令集来处理输入、比较ASCII值并作出相应的响应。这里是一个基于x86架构的简单示例,假设我们正在使用MS-DOS环境下常用的8086汇编语言:
```assembly
; 定义数据段
segment .data
prompt db '请输入字符: $'
crCode dw 0DH ; 回车键ASCII码
cChar db 'c', 0 ; 输出字符
; 定义代码段
segment .text
org 100h ; 指定起始地址
start:
mov ah, 0Ah ; BIOS功能号,用于键盘输入
lea dx, prompt ; 传入提示字符串
int 21h ; 调用中断服务函数获取用户输入
getChar:
lodsb ; 读取下一个输入字符到AL寄存器
cmp al, crCode ; 比较是否是回车键
je endProgram ; 如果是,直接结束程序
cmp al, '1' ; 判断是否数字
jl notDisplay
cmp al, '9'
jg notDisplay ; 数字范围判断
mov dl, al ; 显示字符
jmp displayChar
notDisplay:
cmp al, 'A' ; 判断是否大写字母
jl notDisplay
cmp al, 'Z'
jg notDisplay ; 字母范围判断
mov dl, cChar ; 显示字符 'c'
jmp displayChar
displayChar:
mov ah, 0Eh ; BIOS功能号,输出单个字符
int 10h ; 执行输出操作
jmp getChar ; 循环等待新输入
endProgram:
mov ah, 4Ch ; 结束标志,退出程序
xor al, al ; 返回码0
int 21h ; 调用中断服务函数结束程序
times 510 - ($-$$) db 0 ; 填充剩余空间为偶数节
dw 0AA55h ; 魔数保证引导
end start
```
这个程序首先提示用户输入,然后读取每个字符并检查是否是回车、数字或字母。如果是,就按规则显示或结束;否则,忽略该字符。请注意,这只是一个基本示例,实际运行时可能需要考虑错误处理和其他细节。
阅读全文