0

Im 汇编语言如何访问外部 asm 文件中定义的字节(db)?例如:

::文件 1::

;All it contains is bytes in this file
BytesIWant db 'Hello, World!$'

::文件 2::

;In this file i want to print out the BytesIWant variable from File 1
mov ah, 09
mov dx, BytesIWant
int 21

现在我该如何完成这项任务?我还有一个问题。如何从主机文件运行另一个 asm 文件。示例:::主机文件::

;Random asm code goes here
{Here i want to start another asm program}

::程序开始:: 例如。NextThing.bin

mov ah, 09
mov dx, hi
int 21

hi db 'Hello!$'
4

1 回答 1

0

我不确定我是否理解这个问题。它是关于如何从当前正在运行的可执行文件中启动另一个可执行文件,或者如何将汇编程序中的两个目标文件链接在一起以仅获取一个可执行文件是一个问题?

为了在正在运行的可执行文件中加载和执行另一个可执行文件,我们可以使用 DOS“EXEC”-函数,其中 AH=4Bh 和 AL=1 的 int 21h,DS:DX 指向带有扩展名和 ES:BX 的 ASCIZ 程序名称指向参数块。我们必须将当前 SS 和 SP 寄存器的地址保存在内存位置,并且在子可执行文件终止后,我们必须将其加载回来。

参数块示例:

PARBLOCK  equ THIS WORD                ; Parameter-Block for the EXEC-Function
          DW 0                         ; same environment-block
          DW OFFSET COMLINE            ; Offset- and Segment- address
          DW SEG CODE                  ;  of the command line
          DD 0                         ; no data in PSP #1
          DD 0                         ; no data in PSP #2
COMLINE   DB 80h dup (0)               ; command line

短剑

于 2014-02-28T14:51:04.530 回答