关于中断改变al的问题

来源:百度知道 编辑:UC知道 时间:2024/06/30 20:13:17
先看下这两个程序
CODES SEGMENT
ASSUME CS:CODES
START:
mov al,9h
add al,30h
mov dl,al
mov ah,02h
int 21h
mov dl,al
mov ah,02h
int 21h
MOV AH,4CH
INT 21H

CODES ENDS
END START
输出结果为99
另一个程序
CODES SEGMENT
ASSUME CS:CODES
START:
MOV AL,5
MOV BL,8
ADD AL,30H
ADD BL,30H

MOV AH,02H
MOV DL,AL
INT 21H

MOV AH,02H
MOV DL,BL
INT 21H

MOV AH,02H
MOV DL,AL
INT 21H

MOV AH,4CH
INT 21H

CODES ENDS
END START
输出结果为588
问题是:为什么第二个程序里,al的值改变了?

不仅是二号中断,九号中断也会出现al被改变的情况,可能是这些中断内部没有把ax压栈
如果需要用到al 在调用之前 最好 保存
可以先push 然后再 pop 这样不管怎么影响都可以确保你的 al值不变了

al值好像没有变~~