說明
- 先讓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 標號這一條指令轉成機器碼后記錄的是到目的地址的位移。
- 傳送指令傳送的也是機器碼,而不是匯編指令。