汇编中AL寄存器与DL寄存器会相互影响吗?怎样影响的?

来源:百度知道 编辑:UC知道 时间:2024/05/21 09:57:01
.MODEL SMALL
.CODE
START:MOV DL,'?'
MOV AH,02H
INT 21H

MOV AH,01H
INT 21H
MOV BL,AL
SUB BL,30H

MOV DL,'+'
MOV AH,02H
INT 21H

MOV AH,01H
INT 21H
SUB AL,30H
;MOV DH,AL DL与AL会相互影响 所以调用前必须先转存AL的值

MOV DL,'='
MOV AH,02H
INT 21H
;MOV AL,DH

ADD AL,BL
MOV AH,0
MOV BL,10
DIV BL
MOV BL,AH
MOV DL,AL
ADD DL,30H
MOV AH,02H
INT 21H
MOV DL,BL
ADD DL,30H
MOV AH,02H
INT 21H

MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
MOV AH,4CH
INT 21H
END START
在上述求两个一位数和的程序中,若将

寄存器之间是不会互相影响的。你说的情况,纯是DOS功能调用2号功能造成的。该功能成功执行后,把显示的字符(也就是DL寄存器)送入AL寄存器,作为返回值。所以,若后续指令还要用到AL寄存器,那么在使用2号DOS功能调用前,应该把它保存起来。

补充回答:在程序结束前加上键盘按键、暂停一下。
mov ah,1
int 21h