一段汇编程序的问题

来源:百度知道 编辑:UC知道 时间:2024/05/25 02:10:42
start: push ds
sub ax,ax
push ax
mov dh,2

repeat: push dx
call decibin
call crlf
call binihex
call crlf
pop dx
dec dh
jnz repeat
ret
main endp
……………………
……………………
dh是一个计数器,
在主程序处,为什么要先push dx,再pop dx?
有人说是要保护数据,但具体还是不懂,望高人指点。

你在push dx后面调用了四个子过程,你确定它们没有操作dx? 如果操作了的话,那么就要先压栈再出栈来保护dx原有的数据。

DH中放入了一个数(2),循环前,保存DX(假设为02),然后循环中的子程序很可能改变了DX的内容。所以主程序中后面POP DX,就是取出(02),减1(DEC DH),再继续循环。