说明
- 先让ax=0
- 执行s中的两条nop,作用大概是将ip+2
- 把s2中的第一条指令写到s里去
- 跳到s去
- 执行s2里的命令,但是要注意的是,对于s2来说,跳转到s1去只需要往上移三条指令
mov ax,0
int 21h
mov ax,0
就到了s1。而由于jmp short 标号这个机器码记录的不是目的地址,而是转移到目的地址的位移。当把s2的指令写给s时,对应于该转移的初始位置变成了s,因此往上移三条指令到了源程序的第3行(mov ax,4c00h),而不是s1里的(mov ax,0)。
由此可见:
- jmp short 标号这一条指令转成机器码后记录的是到目的地址的位移。
- 传送指令传送的也是机器码,而不是汇编指令。