王爽匯編第三版檢測點10.5
阿新 • • 發佈:2018-03-11
數值 jmp 控制 tar body blog post 內存 控制器
(1)下面的程序執行後,ax 中的數值是多少?
1 assume cs:code 2 stack segment 3 dw 8 dup (0) 4 stack ends 5 code segment 6 start: mov ax,stack 7 mov ss,ax 8 mov sp,16 9 mov ds,ax 10 mov ax,0 11 call word ptr ds:[0] 12 inc ax 13 inc ax14 inc ax 15 mov ax,4c00h 16 int 21h 17 code ends 18 end start
答案: ax=3
解析:stack定義16字節的空間,其中都是0.然後ss,sp指向站定也就是stack:[10h],然後讓數據段也指向stack空間。也就是說stack段即是棧段也是數據段
call word ptr ds:[0]讀取指令到執行控制器,然後IP地址指向了下一行指令。(inc ax)然後執行call指令。然後push IP。先sp=sp-2,使sp指向了ss:[0eh]。然後這裏存儲著下一行的偏移地址。
執行 jmp word ptr 內存單元地址。 此時就執行到了下一行。(inc ax) 所以最後ax=3.
王爽匯編第三版檢測點10.5