1. 程式人生 > >王爽匯編第三版檢測點10.5

王爽匯編第三版檢測點10.5

數值 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 ax
14 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