簡體   English   中英

在匯編 (emu8086) 中尋址 memory 時,bp 和 si 有何不同?

[英]What differs the bp and si when memory addressing in assembly (emu8086)?

我正在使用 emu8086 微處理器模擬器 我想知道為什么當我嘗試將一個值放入帶有 SI 的 memory 地址中時,它就放在 DS:SI 中,但是當我嘗試將它與 BP 一起放置時,它會轉到 DS:BP+20h此處與 SI

這是英國石油公司

我確定 SI 是 8 位,BP 是 16 位,但我不知道為什么會這樣

您的程序有一個包含單個 17 字節字符串的數據部分。 數據部分緊跟在堆棧部分之后。 部分對齊段落(16 字節),因此 DATA 部分擴展為 32 字節。 這對應於2 個段落,這就是您在查看標記這些部分開始的DSSS的值時看到的差異:

DS=0710h
SS=0712h

使用[si]的指令尋址DS段,使用[bp]的指令尋址SS段。

因為這些部分之間有 32 個字節的差異,所以您可以正常通過mov al, [bp] (BP=0) 尋址 STACK 部分的第一個字節,但也可以通過mov al, [0020h]mov al, [ds:bp+32]


我敢肯定這是因為 SI 是 8 位而 BP 是 16 位

SI 是一個 16 位寄存器。
8 位寄存器是 AL、AH、BL、BH、CL、CH、DL 和 DH。
16 位寄存器是 AX、BX、CX、DX、SI、DI、BP、SP、CS、DS、ES 和 SS。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM