假设(SP)=100H,(SS)=1000H,(BP)=12H 执行 PUSH BP 指令后,栈顶的物理地址是多少?请画出堆栈空间
时间: 2023-06-16 22:04:44 浏览: 180
执行指令 `PUSH BP` 后,将寄存器 BP 中的值压入栈中,此时栈顶指针 SP 会减 2,指向栈中新分配的空间。因此,栈顶的物理地址是 `(SS):(SP-2)`,其中 `(SS)` 表示当前栈段的段地址,`(SP-2)` 表示栈指针减 2 后的偏移地址。
根据题目给出的信息:
- `(SP) = 100H`,表示当前栈指针的偏移地址为 100H;
- `(SS) = 1000H`,表示当前栈段的段地址为 1000H;
- `(BP) = 12H`,表示当前基址寄存器中的值为 12H。
因此,执行 `PUSH BP` 后,栈顶的物理地址为 `(1000H):(0FEH)`,即 0FEH 是相对于栈段起始地址的偏移量。
堆栈空间的示意图如下:
```
+---------------------------+ <- (1000H):(0FFH)
| |
| |
| |
+---------------------------+ <- (1000H):(0FEH) <- SP
| |
| |
| |
+---------------------------+ <- (1000H):(000H)
```
相关问题
设 DS =3000H, ES =2000H, SS =1000H, BP =0060H, SI =0600H, TABLE =60H。指令" MOV AX , TABLE [ SI ][ BP ]"的源操作数的物理地址为
根据指令 "MOV AX, TABLE[SI][BP]",可以得知源操作数是由 TABLE[SI][BP] 组成的,其中 TABLE 的起始地址为 60H,SI 存放偏移地址,BP 存放基地址。因此,可以先计算出偏移地址和基地址的和,然后再加上 TABLE 的起始地址,即可得到源操作数的物理地址。
偏移地址为 0600H,基地址为 0060H,它们的和为 0660H。因此,源操作数的物理地址为:
```
2000H:0660H
= 20660H
```
所以,源操作数的物理地址为 20660H。
AX=1000H,CL=90H,则执行指令DIVCL之后,AX=()。
执行 DIV 指令时,它将被除数存储在 AX 寄存器中,除数存储在通用寄存器或内存中。在本题中,被除数是 AX,除数是 CL。执行 DIV CL 后,除法运算的结果会存储在 AL 中,商存储在 AH 中。
因为 AX=1000H,所以被除数为 1000H。因为 CL=90H,所以除数为 90H。所以 AX/CL=1000H/90H=11H......70H。商为 11H,余数为 70H。
因此,执行 DIV CL 后,AX 的值为商 11H,即 AX=0011H。