还有pop指令,pop是出栈,但是是不是仅仅是出栈,比如pop ax ,是不是先把ax的内容清0后再出栈,还是什么的?
---------
pop和push是对栈的操作。
pop ax,就是把栈顶的东西抛出到ax这个容器里面,所以不管ax先前有什么都会被这个抛过来的值覆盖,所以ax并不需要什么操作。
push ax,就是把ax的值放到栈顶,因为只是取了ax的值,ax本身没有变化;栈增加一层。
还有一个指令问题,指令在内存中是机器码形式的,这我知道,但是每个指令的长度是不同的,
既然是不同的,系统怎么区分这些指令,
ja si 和nop同是机器码,都顺序排列,比如说机器码这样 0AAAAH,0EEH系统怎么区分他们是0AAAAEEH,还是0AAAAH,0EEH?
---------
这个http://bbs.pediy.com/showthread.php?t=50907有讲到,intel有文档规定指令对应的二进制值。其实这跟指令长度无关,就像是一个对应表。