一、如題
assume cs:code,ds:data data segment dd 12345678H data ends code segment start: mov ax,data mov ds,ax mov bx,0 mov [bx],? mov [bx+2],?
jmp dword ptr ds:[0] mov ax,4c00h int 21h code ends end start
二、代碼實現
assume cs:code,ds:data data segment dd 12345678H data ends code segment start: mov ax,data mov ds,ax mov bx,0 mov [bx],offset start ;偏移地址 mov [bx+2],word ptr cs ;取出代碼段地址,mov [bx+2],cs 也可以 jmp dword ptr ds:[0] mov ax,4c00h int 21h code ends end start
三、上機調試
1.執行三條指令后,各個寄存器狀態
2.標記A:偏移地址賦值到數據段中,標記B:代碼段地址賦值給數據段
執行完標記AB兩條指令后查看數據段中的數據:word ptr ds:[2]的字型數據是0B39(段地址),
word ptr ds:[0]的字型數據是0000(偏移地址)
3.執行完jmp指令后,跳轉到了第一條指令,至此我們成功了!