;progr.asm
public string;
extern print_msg;
.model small
.data
...
string db 'message $';
.code
start:
mov ax, @data;
mov ds, ax;
....
call print_msg;
end start;
Проблема при сборке программы
Имеются два файла progr.asm и proclib.asm:
Код:
Код:
; proclib.asm
.model small
.code
extern string;
.....
print_msg proc near public
mov ah, 9;
mov dx, offset string;
int 21h;
print_msg endp
.model small
.code
extern string;
.....
print_msg proc near public
mov ah, 9;
mov dx, offset string;
int 21h;
print_msg endp
затем все это собирается с помощью MASM 6.14
ml.exe /Zi /Fl /Fm progr.asm proclib.asm
при выполнении получившегося исполняемого файла
строка не выводиться, а в место нее выводяться случайные символы
то есть mov dx, offset string; кладет в dx неправильное смещение
у меня существуют подозрение что эта строка адресуется относительно другого сегментного адреса
для более полной информации приведу фрагмент *.map файла:
Start Stop Length Name Class
00000H 00312H 00313H _TEXT CODE
00314H 00515H 00202H _DATA DATA
00520H 00775H 00256H STACK STACK
Origin Group
0031:0 DGROUP
Address Publics by Name
0000:02AB proc1
.......
0000:02E7 print_msg
0031:0088 string
.......
Может кто-нибуть знает как заставить ЭТО правильно работать...?