push IP
jmp word ptr 内存单元地址
push CS
push IP
jmp dword ptr 内存单元地址
mov sp,10h
mov ax,0123h
mov ds:[0],ax ;ds:[0]-->23h, ds:[1]-->01h
mov word ptr ds:[2],0 ;ds:[2]--->00h, ds:[3]-->00h
call dword ptr ds:[0]
;执行call,ds:[2-3]==>cs(0000h), ds:[0-1]===>IP(0123h), sp = 0ch
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax, stack
mov ss, 16
mov ds, ax ; 数据段和堆栈段共用
mov ax, 0
call word ptr ds:[0EH]
inc ax
inc ax
inc ax
code ends
end start
assume cs:code
data segment
dw 8 dup (0)
data ends
code segment
start:
mov ax, data
mov ss, ax
mov sp, 16
mov word ptr ss:[0], offset s ;s的偏移地址送入ss:[0-1]
mov ss:[2], cs ;cs值送入 ss:[2-3]
call dword ptr ss:[0]
nop
s:
mov ax, offset s ;读入 s 处的地址
sub ax, ss:[0ch] ;ss:[0CH- 0DH]实际上就是 nop 指令所在的偏移地址,故 ax =1
mov bx, cs
sub bx, ss:[0EH] ;ss:[0EH-0FH]实际上就是CS,所以此处 bx = 0
code ends
end start
欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) | Powered by Discuz! X3.2 |