求助!汇编语言int21h输出的时候为什么会改变al寄存器的值??

L0: MOV AH,1
INT 21H

MOV AH,2
MOV DL,13
INT 21H
MOV DL,10
INT 21H
我想实现一个当用户输入一个按键之后 自动换行的功能,假如我输入的是a
那么输入之后al的值为61H 但是经过后面的int21h输出换行符之后 为什么al寄存器的值就变了? 经过debug分布调试,我发现al的值变为和dl一样的值了,就是0DH 和 0AH 这是为什么??

第1个回答  2011-08-02
int 21h 是一个中断,跳转到中断指定的程序,各寄存器的值相应的会还原。
第2个回答  2011-07-29
al会返回输出的字符,虽然标准文档里没有提到,但设计者就是这样设计的。追问

谢谢!小弟再多问两句! 是每次调用int21h输出的时候 都会把输出的ASCII码值 同时存入al寄存器吗?

追答

是的,参考http://www.delorie.com/djgpp/doc/rbinter/id/65/25.html

本回答被提问者采纳

求助!汇编语言int21h输出的时候为什么会改变al寄存器的值??
int 21h 是一个中断,跳转到中断指定的程序,各寄存器的值相应的会还原。

汇编语言中执行 MOV AH,02H INT 21H 后AL的值为什么会改变?急,在线等...
中断后会调用对应中断号的服务程序,在中断服务程序中会使用ax而没有对ax进行现场保护,返回会改变,通常也把函数的返回值放到ax中。所以调用前要对ax进行保护,可以执行前压入堆栈PUSH AX,执行后再弹出POP AX。

汇编中9号功能调用的小问题
比如把显示我们输入的数字再加1再输出来 CODE SEGMENT ASSUME CS:CODE START:MOV AH,1 INT 21H MOV BL,AL;先放到BL存下,也就是保起来 MOV DL,0AH;显示回车 MOV AH,2 INT 21H MOV DL,0DH;换行 INT 21H MOV DL,BL INC DL;加1 INT 21H MOV DL,0AH;回车 MOV AH,2 INT 21H MOV DL...

汇编中MOV AH,02H int 21h输出的DL吗?
MOV AH,02H 是给AH赋值02H,是显示字符的作用,MOV DL, 08H 是表示显示的字符的ASCII码是08H,INT 21H是是DOS的中断调用,整个语句的意思很简单,就是在屏幕上显示08H。汇编博大精通,好好学啊。

汇编程序中int 21H 的功能是什么?
int 21是DOS功能调用,调用功能号放在AH中,使用格式如下:MOV AH,Fn INT 21 功能号对应功能如下:00 程序终止(同INT 20H)CS=程序段前缀 01 键盘输入并回显 AL=输入字符 02 显示输出 DL=输出字符 03 异步通迅输入 AL=输入数据 04 异步通迅输出 DL=输出数据 05 打印机输出 DL=输出字符 06 ...

汇编语言 INT 21H功能
出口参数:AL=读入字符的ASCII码 (4)、功能04H 功能描述:向辅助设备输出一个字符,该辅助设备的缺省值为COM1 入口参数:AH=04H DL=待输出字符的ASCII码 出口参数:无 (5)、功能05H 功能描述:向标准的输出设备输出一个字符。该缺省的输出设备为LPT1端口的打印机,除非用MODE命令来改变 入口参数...

用汇编语言编写源程序,判断X的值是否在5<X<24,若是则显示very good如不...
int 21h ;调用21号中断 jmp en co :mov dx,offset correct mov ah,9 int 21h en :mov ax,4c00h ;ax,4c00即 ah=4c 表示调用4c号子程序(返回程序),al=0表示返回值是0 int 21h ;调用21h号中断程序 code ends end start ...

8086输入小写输出大写的程序
最后一步是将字符输出到屏幕上。在8086汇编语言中,可以使用BIOS中断10h来实现字符输出。以下是输出字符的代码:```mov ah, 02h ; 设置AH寄存器为02h,表示输出字符 mov dl, bl ; 将要输出的字符保存到DL寄存器 int 21h ; 调用21h中断,输出字符 ```这段代码将设置AH寄存器的值为02h,这表示要...

汇编语言编程执行时说类型不匹配,我不知道怎么改?有知道的帮我改下...
int 21h 改成 mov ax,xx;因为xx存放的是十六位的结果,所以也存放在十六位寄存器中 mov cl,10;除数 xor ah,ah;将AX的高8位清零 div cl;字节除法 mov bh,ah;结果的余数在ah(个位),商在al(十位),但是下面我们会用到mov ah,2,会改变ah的值,所以我们将ah存放在bh中 mov dl,al;输出十...

汇编语言结束的语句
汇编结束不一定要带这两句,【mov ax,4c00h int 21h】是DOS系统功能调INT 21H功能中的一种,表示带返回码结束用户程序。【mov ax,4c00h int 21h】不是定值,也可写成【mov AH,4ch int 21h】。int 21H指令中,寄存器AX,分为AH和AL,AH中存入指令码4C表示带返回码结束,AL=返回码。DOS系统...

相似回答