到现在为止,如果我想解决在另一个段中声明的一些var和/或在同一个段中但在不同的模块中声明的一些var,我只是使用public / extrn对来逃避它。 / p>
; declaring module .asm
public some_var
otherseg segment para public 'code'
some_var db ?
otherseg ends
; referencing module .asm
extern some_var:byte
otherseg segment para public 'code'
test_proc proc
mov ax, [some_var]
test_proc endp
otherseg ends
但是现在我需要访问int向量表以及BIOS / DOS程序存储器的其他部分,所以我宣布了一个' AT'像这样的片段:
memmap segment public at 0000h
; some int vector addresses I'll be using.
org 13h * 4
orig_int_13h dw ?
; BIOS addr
; other interesting memory addrs
; graphic memory
org 0B800h
text_mode_base_addr dw ?
memmap ends
问题在于,它已在另一个文件中声明,我不知道如何让它可以从我引用的模块中看到。
; read some vector addr
mov ax, offset memmap ; error memmap no declared
mov es, ax
mov bx, es:[text_mode_base_addr] ; reads top left character in the screen
如果我在同一个文件中声明AT段,它将起作用。
如何使用在另一个文件中声明的片段? 请注意,我不想使用' include'魔法。