C中按任意键继续的方式和理解

正确实现“按任意键继续”功能

 

在大家写程序的时候,经常会遇到“按任意键继续”这样的功能。网上能找到的方法主要有两种:
1. 使用 _getch() 语句
2. 使用 system("pause") 语句

现在挨个说说。

_getch()

_getch() 功能是从控制台输入一个字符(控制台不显示该输入),是 conio.h 里面声明的一个函数。
所以 _getch() 很好的实现了“按任意键继续”的功能。

system("pause")

system 的功能是通过控制台执行一个命令,是 stdlib.h 里面声明的一个函数。
该函数需要一个字符串指针参数表示命令。这里,"pause" 就是 system 函数将要执行的命令。

 

使用 system("pause") 实现暂停的程序,当多次调用后,退出程序时,会看到控制台留有一堆
Press any key to continue . . .
Press any key to continue . . .
Press any key to continue . . .
字样。

示例代码:

#include <stdio.h>
#include <conio.h>
#include <stdlib.h>
int main() {

	char a;
	scanf("%c",&a);
	printf("a=%c\n",a);
	system("pause");
	system("pause");	
	system("pause");
	return 0;
}

运行结果:

 

  • 5
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,以下是该程序的汇编语言实现: ``` ; 设置数据段和堆栈段 .model small .stack 100h .data msg db 'Press any key to continue$' .code main proc ; 初始化段寄存器 mov ax, @data mov ds, ax ; 循环输出数字 mov cx, 10 mov ah, 09h mov dl, 0 mov bh, 0 output_loop: ; 输出数字 int 21h ; 等待用户按下任意键 mov ah, 0 int 16h ; 判断是否按下ESC键 cmp ah, 1Bh je exit_loop ; 更新数字 inc dl cmp dl, 10 jz reset_num jmp output_loop reset_num: mov dl, 0 jmp output_loop exit_loop: ; 退出程序 mov ah, 4Ch int 21h main endp end main ``` 在这段汇编代码,我们使用了int 21h来调用DOS的断服务程序,实现了在屏幕上输出数字和等待用户按下任意键的功能。具体来说,该程序的执行过程如下: 1. 首先,我们使用mov指令初始化段寄存器,将DS寄存器设置为数据段的基地址。 2. 然后,我们使用mov指令将循环次数10存储到CX寄存器,将输出数字的断服务程序号09h存储到AH寄存器,将数字0存储到DL寄存器,将输出属性0存储到BH寄存器。 3. 接下来,我们使用一个循环来依次输出数字0到9。在每次输出数字后,我们使用int 16h调用DOS的断服务程序来等待用户按下任意键。如果用户按下了ESC键,我们使用jmp指令跳转到exit_loop标签处退出循环;否则,我们使用cmp指令判断用户是否按下了其他键。如果是,我们使用jmp指令跳转回output_loop标签处继续输出数字;否则,我们使用inc指令将数字加1,使用cmp指令判断是否需要将数字重置为0,然后使用jmp指令跳转回output_loop标签处继续输出数字。 4. 最后,我们使用mov指令将程序退出的断服务程序号4Ch存储到AH寄存器,然后使用int 21h调用DOS的断服务程序来退出程序。 希望这段汇编代码能够帮助你更好地理解该程序的实现方式

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值