关于汇编语言中使用2号功能输出字符后,int 21H会改变AL的值

关于汇编语言中使用2号功能输出字符后,int 21H会改变AL的值

在一次汇编实验中,需要对单个字符进行输出,需要用到如下代码:

mov dl,2d
mov ah,2h
int 21

最开始al我是设置为0的,在我后面的代码需要用上,可是在执行了上面的语句之后,一直没有我想要的结果,可当我把上面的代码注释之后,就得到了我想要的结果。

为了找到原因,我在dosbox上调试了我的代码,发现上面的指令会改变al的值,如下图:

在这里插入图片描述

即在执行了int 21h这个指令之后,dl的值会赋给al,真的是令人抓狂。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
### 回答1: int 21h断的2#系统是读取键盘输入,也被称为DOS的标准输入函数。当该断被调用时,程序等待用户在键盘上输入一个字符,然后将该字符放入程序的缓冲区。如果用户输入的是可显示字符(如字母、数字、符等),则该字符在屏幕上显示出来。如果用户输入的是控制字符(如退格、回车、Tab等),则相应的操作被执行。 ### 回答2: int 21h是一种软断,广泛用于汇编语言,特别是DOS和Windows操作系统。其断的目的是向操作系统请求服务或执行各种与输入输出相关的功能int 21h断的2功能是读取键盘输入。当程序执行到int 21h指令,并设置寄存器AH的为2时,操作系统将检查键盘的状态,并将读取到的字符存放在寄存器AL。 通过这种方式,程序可以获取用户从键盘输入的信息,然后根据需要对其进行处理。比如,在命令行界面下,用户可以通过键盘输入命令名称或参数等,程序可以使用int 21h断的2功能来读取到用户的输入,并根据输入执行相应的操作。 在使用int 21h断的2功能时,需要注意以下几点: 1. 判断键盘缓冲区是否有字符可读,如果没有可读字符,程序可以进行等待,直到有字符可以读取。 2. 每次只读取一个字符,可以通过循环的方式读取多个字符。 3. 检查读取到的字符是否是控制字符,比如回车键、退格键等,这些字符需要根据需要进行处理。 4. 读取到的字符一般是ASCII码表示的,需要根据具体的需求进行转换,比如转换为相应的数字或字符。 总之,int 21h断的2功能汇编语言是非常有用的工具,可以方便地获取用户的键盘输入并进行相应的处理。 ### 回答3: int 21h 断是在汇编语言的一种软断,其实际上是调用DOS操作系统提供的功能服务。其2h是其的一个具体服务,用于在屏幕上输出字符。 当我们使用int 21h, ah=02h的指令时,即通过将ah寄存器设置为02h来调用此断服务。在调用前,我们需要将要输出字符的ASCII码放入dl寄存器。通过该断服务,DOS操作系统将在屏幕上输出对应ASCII码的字符。 例如,我们将要输出字符的ASCII码存储在dl寄存器,然后通过 int 21h, ah=02h的指令来调用断服务。DOS操作系统将将对应的字符输出到屏幕上。 需要注意的是,调用此断服务的程序必须位于DOS环境下,因为该断服务是通过DOS提供的功能来实现的。在其他操作系统或环境下无法正常运行。 int 21h断的功能非常丰富,除了可以进行屏幕输出之外,还可以进行文件操作、键盘输入等。其2h只是其的一种服务之一。因此,在编写汇编程序时,我们可以根据具体需要选择其他的调用方式和断服务。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值