如何在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)。但变量存储错误的位置。
答案 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$'