assembly 如何使用存储在变量中的地址来访问内存位置

bxgwgixi  于 2022-12-23  发布在  其他
关注(0)|答案(1)|浏览(146)

我正在处理8086汇编中的中断,我需要打印地址[BX+SI+3fh]处的值,3fh存储在某个变量中。

mov ax, word ptr [BX+SI+var]
;... print ax ...

问题是在[BX+SI+var]中,使用的是var的地址,而不是值,所以它被翻译成[BX+SI+0002h]如何让它使用var作为值?

pxiryf3j

pxiryf3j1#

你必须根据变量var存储在哪一段来调整这段代码,但这里有一个通用的例子:

;assumes SI is already loaded with the desired value.
;assumes segment where var is stored is already loaded into DS

mov al, byte ptr [ds:var]  ;in this example, loads 3Fh into AL
xor ah,ah                  ;set AH to zero, so that AX = 003F
add bx,ax                  ;BX = BX + 3Fh
mov ax, word ptr [bx+si]   ;load from [BX + SI + value of var]

相关问题