一段汇编程序的问题
来源:百度知道 编辑: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?
有人说是要保护数据,但具体还是不懂,望高人指点。
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),再继续循环。