在EMU8086中定义特定偏移量中的字节

时间:2015-04-02 07:54:11

标签: assembly

如何在EMU8086中定义特定偏移中的字节。我使用org命令,但它不起作用。我怎样才能做到这一点。我的代码如下:

org 100h
lea si,dgs
lea di,dgs2
mov al,'r'
etk:scasb
jnz etk
mov bl,[di]


ret
org 150h
dgs     db 'bekir oflaz$'
org 200h
dgs2    db 'mehmer kaplan$'

我认为bekir oflaz$字符串将从第150个偏移地址开始。但在我的测试中,它在我的代码块之后立即开始。 lea命令正确存储变量的偏移量(150h和200h)。但变量存储错误的位置。

1 个答案:

答案 0 :(得分:1)

如果有多个ORG,则EMU8086中的ORG指令似乎不起作用,这与其他汇编程序不同,后者将字节从一个节的末尾填充到一个节的开头。下一个ORG创建的下一部分。

所以DB/DUP是我所知道的最简单的技术。我不知道EMU8086是否支持宏。如果是这样,您可以创建一个这样的宏:

orgpad     macro pos
           db (pos-$) dup 0
orgpad     endm

每当您需要将代码或数据对齐到某个位置时使用它:

orgpad 150h
dgs     db 'bekir oflaz$'
orgpad 200h
dgs2    db 'mehmer kaplan$'

如果不支持宏,只需将DB/DUP指令放在代码/数据中:

        db (150h-$) dup 0
dgs     db 'bekir oflaz$'
        db (200h-$) dup 0
dgs2    db 'mehmer kaplan$'