Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
[ASM&pas] согласен с Chingachgukom, но изголится можно :-) 16.04.02 19:10 Число просмотров: 907
Автор: Cyril <sc> Статус: Member
|
> ..делаем так.. > (1.) > В obj файле объявляю сегмент данных (сегмент кода > неважен..) > > DATA segment byte public ;почему именно "DATA" - так > написанно > hz dw 0666h ;в книжке ..см выше.. > DATA ends > > CODE segment byte public > assume cs:CODE,ds:DATA > ;код... > CODE ends > end > > (2.) > затем создаю obj.. далее в pas-проге прописываю {$l > name_obj}, > компилю...(в пасе) > > (3.) > Захожу в TD (turbo debuger) открываю exe (скопилированный > на пасе :) > открываю dump (ориенитированный по ds и указывающий на > 'общий' сегмент данных,то есть соединенный из obj-сегмента > и сегмента данных пас программы) > ...и что вижу:все данные ,что описаны были в пас-программе, > есть - а что в obj сегменте - НЕТУ (нУ просто Их нет,то > есть нет к примеру того самого "hz") > > вот чЕ делать???? > > Ps А что насчет разных имен... то помимо имени 'DATA' > пробовал и другие > (_DATA DSeg _BSS - проблема та же...данных из obj не > находит)
// данные поместить в сегмент code, иначе пас начнет ругаться
.286
public S
CODE segment byte public
S db 4,'TEST','$'
CODE ends
END
// в Паскале вызываем это так
program Test;
{$L test.obj}
var
ps : ^string;
procedure S; external;
begin
ps := Addr(S);
writeln(ps^);
end.
В принципе, это то же самое что вызвать ф-ю асма возвращающую указатель на данные
P. S. Ну и нафига тебе такой гемор
|
|
|