微机:写一个简易信息检索系统,在数据区定义msg0-msg9共十条信息,然后从键盘接收0-9的数字,显示相应的信息
时间: 2024-02-16 17:03:52 浏览: 25
好的,以下是一个简单的信息检索系统的示例代码:
```
#include <stdio.h>
int main() {
char *msgs[] = {"msg0", "msg1", "msg2", "msg3", "msg4", "msg5", "msg6", "msg7", "msg8", "msg9"};
int index;
printf("请输入一个数字(0-9): ");
scanf("%d", &index);
if (index < 0 || index > 9) {
printf("输入无效!\n");
} else {
printf("信息: %s\n", msgs[index]);
}
return 0;
}
```
在这个程序中,我们首先定义了一个字符串数组 `msgs`,其中包含了十条不同的信息。然后,我们从键盘接收一个数字,并将其保存在变量 `index` 中。如果输入的数字小于0或大于9,我们将输出一条错误信息。否则,我们将输出与该数字对应的信息。
希望这个示例代码能够帮到你!
相关问题
写TPC486微机接口语言程序,实现:4x4小键盘号显示设计,在数码管上显示数字0-9
这里提供一个简单的TPC486微机接口语言程序,实现4x4小键盘号显示设计,在数码管上显示数字0-9:
```
.MODEL SMALL
.STACK 100H
.DATA
; 定义端口地址常量
PORTA EQU 0F000H
PORTB EQU 0F001H
; 定义键盘扫描码表
SCANCODE DB 1EH, 2AH, 2BH, 3AH, 0EH, 1AH, 1BH, 1CH, 09H, 19H, 29H, 39H, 00H, 16H, 26H, 36H
; 定义数码管显示码表
DIGIT DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH
.CODE
MAIN PROC
; 初始化端口
MOV AX, @DATA
MOV DS, AX
MOV DX, PORTA
MOV AL, 00H
OUT DX, AL
MOV DX, PORTB
MOV AL, 00H
OUT DX, AL
; 循环读取键盘输入并显示
MOV DX, PORTA
MOV BL, 0FH
MOV CX, 10
LOOP1:
; 扫描键盘输入
MOV AL, BL
OUT DX, AL
MOV DX, PORTB
IN AL, DX
; 判断键盘输入并显示
CMP AL, 00H
JE SKIP
MOV BX, 0AH
MOV CL, 00H
LOOP2:
CMP AL, SCANCODE[BX]
JE DISPLAY
ADD BX, 1
ADD CL, 1
CMP CL, 0AH
JE SKIP
JMP LOOP2
DISPLAY:
MOV DL, DIGIT[CL]
MOV DX, PORTA
MOV AL, 01H
OUT DX, AL
MOV DX, PORTB
OUT DX, DL
SKIP:
; 延时一段时间
MOV CX, 0FFFFH
MOV DX, 0FFFFH
LOOP $
; 循环显示0-9
MOV DX, PORTA
MOV AL, 02H
OUT DX, AL
MOV DX, PORTB
MOV CX, 10
MOV BL, 00H
LOOP3:
MOV DL, DIGIT[BL]
OUT DX, DL
; 延时一段时间
MOV CX, 0FFFFH
MOV DX, 0FFFFH
LOOP $
ADD BL, 1
CMP BL, 0AH
JL LOOP3
; 返回循环开始
JMP LOOP1
MAIN ENDP
END MAIN
```
程序的主要思路是循环读取键盘输入并显示,具体实现过程如下:
1. 初始化端口,将端口A和B的值都设置为0。
2. 进入主循环,循环读取键盘输入并显示。首先将端口A的值设置为0F,用于扫描键盘输入,然后将端口B的值读取到AL寄存器中。
3. 判断AL的值是否为0,如果是,表示没有键盘输入,跳过显示过程。如果AL不为0,则遍历键盘扫描码表,判断输入的键盘扫描码是否匹配,如果匹配,则将对应的数码管显示码写入端口B中,同时将端口A的值设置为01,用于显示数码管。
4. 在显示数码管后,增加一个延时,等待一段时间后再进行下一次循环。这里采用的是嵌套的循环来实现延时。
5. 循环显示0-9的数字,用于检验程序的正确性。首先将端口A的值设置为02,用于显示数字,然后在循环中遍历数码管显示码表,将每个数字的显示码写入端口B中,同时增加一个延时,等待一段时间后再显示下一个数字。
6. 最后跳转回主循环的开始,继续循环读取键盘输入并显示。
需要注意的是,这个程序只是一个简单的示例,没有考虑到很多实际情况,比如多个键同时按下、反复按同一个键等情况,需要根据具体需求进行修改和完善。
微机原理从键盘输入9个字符,找出ASII码值最大的字符,并在第二行显示
好的,这里给您提供一份 C 语言代码示例:
```
#include <stdio.h>
int main()
{
char c, max_c = 0;
int i;
printf("请输入9个字符:\n");
for (i = 0; i < 9; i++) {
c = getchar();
if (c > max_c) {
max_c = c;
}
}
printf("ASII码值最大的字符是:%c\n", max_c);
return 0;
}
```
代码解释:
1. 首先我们声明了变量 `c` 和 `max_c`,分别表示当前输入的字符和最大的字符。
2. 接着我们使用 `for` 循环来输入 9 个字符,每次输入一个字符,然后将其与 `max_c` 进行比较,如果当前输入的字符的 ASII 码值大于 `max_c`,则将其赋值给 `max_c`。
3. 最后在第二行输出最大的字符。
希望这个示例代码能够帮助到您。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://img-home.csdnimg.cn/images/20210720083646.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.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)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)