我正在使用emu8086微處理器仿真器我想知道為什么當我嘗試將一個值放在帶有SI的記憶體地址中時,它會放在DS:SI中,但是當我嘗試將它與BP一起放置時,它會轉到DS:BP 20h 這里是SI
這里是 BP
我確定這是 SI 為 8 位,BP 為 16 位,但我不知道為什么會這樣
uj5u.com熱心網友回復:
您的程式有一個包含單個 17 位元組字串的 DATA 部分。此 DATA 部分之后緊跟 STACK 部分。節獲得段落對齊(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。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/470468.html