Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.12.2013, 16:03   #31
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию

Вообще паскалевский код 64 битный(у меня Windows7 x64), а асемблерный 16 битный, нужно чтобы разряднсть и у асма и у паскаля была одинаковой(мне так подсказали) чтобы норм работало, поэтому нужно либо код асма переписывать под x64, либо паскалевский писать под 16 бит
zla9_kolu4ka вне форума Ответить с цитированием
Старый 14.12.2013, 16:09   #32
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Как раз паскалевский код написан так, что ему n-битность до лампочки. Он компилируется и в 16-битный под dos, и в 32-битный под windows. А вот ассемблерная часть. Там да, непонятки. Тасм его компилирует, но при вызове из паскалевской программы виснет. Наглухо. Я и модель менял на pascal и вызовы в стиле паскаля пытался делать. Не-а.
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 14.12.2013, 16:27   #33
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию

Цитата:
Тасм его компилирует, но при вызове из паскалевской программы виснет
А у вас разрядность совпадает?
Вы паскалевский код где компилируете?


Кстате код
Код:
Program mov16;
var
x,a:    integer;
b,z:    byte;

{$L mov_16.obj}
Procedure mov_16(var x:integer;var z:byte); external;

begin
writeln('Вычислить: x=a a,x: integer;');
write('Введите значение a ');
readln(a);
x:=a;
writeln('Вычислить z=b; b,z:byte;');
write('Введите значение b ');
readln(b);
z:=b;
writeln('ПАСКАЛЬ: x=',x,' z= ',z );
z:=0;
x:=0;
mov_16(x,z);
writeln('АССЕМБЛЕР: x=',x,' ;z= ',z);
readln;
end.
не компилируется на LazaRUS, этот код же написан под turbo pascal(судя по книге и вроде как вы ZX Spectrum-128 запустили на turbo pascal и у вас норм), а в LazaRUS компилятор FreePascal, а FreePascal совместим с Borland Pascal, а Borland Pascal, насколько я знаю, продвинутая версия Turbo Pascal, так почему тогда код не компилируется?

Последний раз редактировалось zla9_kolu4ka; 14.12.2013 в 16:33.
zla9_kolu4ka вне форума Ответить с цитированием
Старый 14.12.2013, 16:30   #34
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Компилировал в bp7 (real mode) и в free pascal.
Ассемблерный текст компилировал tasm'мом
ZX Spectrum-128 вне форума Ответить с цитированием
Старый 14.12.2013, 16:44   #35
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию

Цитата:
Компилировал в bp7 (real mode) и в free pascal.
Я не разбираюсь в режимах работы процессора(читала уже забыла)
вы скажите, разрядность одинакова или нет?(тем более что однин и тот же компилятор иожно запустить и под 16 бит и под 32 и под 64)
Например, про Free Pascal почитайте
http://www.cyberforum.ru/pascal/thread89342.html
можно запустить и в DOS и в Win32

Последний раз редактировалось zla9_kolu4ka; 14.12.2013 в 16:48.
zla9_kolu4ka вне форума Ответить с цитированием
Старый 14.12.2013, 18:55   #36
Son Of Pain
Участник клуба
 
Регистрация: 23.12.2010
Сообщений: 1,129
По умолчанию

На самом деле все проще ) в ассемблерном коде процедура объявлена как far, а в паскале нет.
Напиши
Код:
Procedure mov_16(var x:integer;var z:byte); far; external;
Son Of Pain вне форума Ответить с цитированием
Старый 14.12.2013, 19:54   #37
zla9_kolu4ka
Форумчанин
 
Регистрация: 16.09.2013
Сообщений: 149
По умолчанию

Цитата:
Напиши
Procedure mov_16(var x:integer;var z:byte); far; external;
тоже самое, не компилируется, если есть
{$L mov_16.obj}
или
mov_16(x,z);
zla9_kolu4ka вне форума Ответить с цитированием
Старый 15.12.2013, 13:33   #38
ZX Spectrum-128
Участник клуба
 
Регистрация: 05.11.2013
Сообщений: 1,601
По умолчанию

Son Of Pain, да, спасибо. Теперь нормально отрабатывает.

PS: я вообще-то не копенгаген в ассемблере


Цитата:
тоже самое, не компилируется, если есть
zla9_kolu4ka, турбо паскалем норм все
ZX Spectrum-128 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
меню(асм) A.S.W Фриланс 1 21.08.2011 20:49
асм (с%о) Ислам Помощь студентам 7 21.05.2011 09:11
Перевод из асм в с++ Flay Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 18.09.2010 21:05
Умножение массивов Паскаль+АСМ xVxSeRGxVx Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 24 21.02.2010 14:11