监测点10.4-10.5
监测点10.4mov ax,6 ;ax=6
call ax ;sp=-2,ip=6
inc ax
mov bp,sp ;bp=-2
add ax, ;ds:=05;ax=11
监测点10.5
1.
assume cs:code
stack segment
dw 8 dup(0)
stack ends
code segment
start:
mov ax,stack ;将栈值赋值给ax
mov ss,ax ;ss=栈段地址
mov sp,16 ;sp=16
mov ds,ax ;ds=栈段地址
mov ax,0 ;ax=0
call word ptr ds:;ds:指向本身,00为nop像下执行
inc ax ;ax=1
inc ax ;ax=2
inc ax ;ax=3
mov ax,4c00h
int 21h
code ends
end start
执行后ax=3
2.
assume cs:code
data segment
dw 8 dup(0)
data ends
code segment
start:
mov ax,data ;将data赋值给ax
mov ss,ax ;栈的段地址为data
mov word ptr ss:,offset s ;将标号s赋值给数据单元0处以字的形式
mov ss:,cs ;将当前cs段地址赋值给数据单元2处
call dword ptr ss: ;取出ip为ss处的偏移地址,cs为ss,也就是指向标号s处
nop
s:
mov ax,offset s ;ax=s处标号值
sub ax,ss: ;这里是ax-0
mov bx,cs ;bx为cs
sub bx,ss: ;这里是bx-0
mov ax,4c00h
int 21h
code ends
end start
这里bx为cs段地址的值,ax为标号的值 {:5_105:}
页:
[1]