繁体   English   中英

英特尔®8086汇编中的指针和索引

[英]Pointers and Indexes in Intel 8086 Assembly

我有一个指向数组的指针,DI。

是否可以转到DI和另一个指针所指向的值?

例如:

mov bl,1           
mov bh,10
inc [di+bl]
inc [di+bh]

并且,在相关说明中,是否存在单行操作码来交换两个寄存器的值? (就我而言,是BX和BP?)

对于16位程序,唯一受支持的寻址形式为:

[BX+SI]
[BX+DI]
[BP+SI]
[BP+DI]
[SI]
[DI]
[BP]
[BX]

这些每个都可以包括8位或16位恒定位移。

(来源: 英特尔开发人员手册第2A卷 ,第38页)

提供的示例的问题在于blbh是八位寄存器,不能用作基本指针。 但是,如果将bx设置为所需的值,则inc [di+bx] (具有合适的指针大小说明符)有效。


至于交换“寄存器的高位和低位”, J-16 SDiZ建议ror bx, 8可以很好地交换blbh (而IIRC则是最佳的交换方式)。 但是,如果您想将bl 0位与bl 7位进行交换,则需要更多的逻辑。

DI不是指针,而是索引。

您可以ROR BX, 8旋转寄存器的低/高字节。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM