|  | 
 
| 
监测点10.4
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 复制代码mov ax,6    ;ax=6
call ax     ;sp=-2,ip=6
inc ax    
mov bp,sp   ;bp=-2
add ax,[bp] ;ds:[bp]=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:[0eh]  ;ds:[0eh]指向本身,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:[0],offset s   ;将标号s赋值给数据单元0处以字的形式
        mov ss:[2],cs                  ;将当前cs段地址赋值给数据单元2处
        call dword ptr ss:[0]          ;取出ip为ss[0]处的偏移地址,cs为ss[2],也就是指向标号s处
        nop
        s:
        mov ax,offset s                ;ax=s处标号值
        sub ax,ss:[0ch]                 ;这里是ax-0
        mov bx,cs                      ;bx为cs
        sub bx,ss:[0eh]                ;这里是bx-0
        mov ax,4c00h
        int 21h
code ends
end start
这里bx为cs段地址的值,ax为标号的值
 | 
 |