克服仅BX索引限制

时间:2014-06-14 18:35:31

标签: assembly x86 nasm

我正在使用BIOS中断int 10h实现简单的0终止字符串打印功能。

程序如下:

  • 从堆栈弹出到dx,这是我们的字符串开始的位置
  • cx
  • 中设置一个计数器
  • 检索[dx + cx]处的字节。如果为0,则返回,否则moval
  • int 10h
  • 递增cx并跳回第3点

问题是nasm只允许我使用bx作为索引寄存器。我认为这种限制的目的不是让某人的生活变得更加困难,这意味着我的实施会出现问题。是什么,我怎么能克服它?

1 个答案:

答案 0 :(得分:2)

在16位模式下,您必须使用BX。例如。 see here

  

对于16位寻址,偏移值可以位于三个寄存器之一:BX,SI或DI