![](/img/trans.png)
[英]what will be the addressing mode in assembly code generated by the compiler here?
[英]What differs the bp and si when memory addressing in assembly (emu8086)?
您的程序有一個包含單個 17 字節字符串的數據部分。 數據部分緊跟在堆棧部分之后。 部分對齊段落(16 字節),因此 DATA 部分擴展為 32 字節。 這對應於2 個段落,這就是您在查看標記這些部分開始的DS
和SS
的值時看到的差異:
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.