Wstawka Assemblerowa w Delphi

0

Witam, proste pytanko, dlaczego to nie dziala?

asm
   mov AH, 4Ch
   int 21h
end; 
0

O ile się orientuję, to dlatego nie działa, ponieważ w trybie chronionym systemu operacyjnego nie można wywoływać przerwań - a współczesne systemy właśnie w takim trybie działają.

0

To w jaki sposb tego uniknac? W takim razie nauka assemblera nie ma sensu bo wstawki nie beda dzialac?

0

Wstawki będą działać ale musisz korzystać z API Windowsa.

0

http://delphi.about.com/library/bluc/text/uc052501a.htm - popróbuj sobie przykłady stąd, np.:

function Sum(X,Y:integer):integer; 
begin 
 asm
  mov eax,X
  add eax,Y
  mov Result,eax
 end;
end;

Tamta wstawka od Ciebie wywołuje przerwanie, możesz sobie w jakimś dosowym środowisku, np. Turbo Pascal'u takie wstawki stosować i będzie Ci działać.

Osobiście uważam, że nauka assemblera teraz nie ma sensu. C jest dość dobrą nakładką na assemblera :) A poza tym ludzie starają się tworzyć/ulepszać języki skryptowe (Python itp.), żeby łatwo i szybko można było programować. Mamy tak szybkie komputery teraz, że tylko w niektórych przypadkach optymalizacja jest uzasadniona.

0

Ma sens chociażby po to żeby sobie prze debugować projekt w trybie Release.

0

Czyli na prawde nie ma nawet jak wypróbować skompilowanych programów? Na prawdę beznadziejne posunięcie ze strony twórców systemów...

0

Rozróżnij „użycie assemblera” od „użycie assemblera do wykonania funkcji systemowej DOS-a”. Przerwanie int 21h jest to przerwanie do wywoływania funkcji DOS-owych.
Delphi to kompilator pod Windowsa. Można używać wstawek asemblerowych w Delphi, ale zgodnie ze znaczeniem tego słowa: wstawek. Np. do przeprowadzenia jakiejś operacji na pamięci, lub obliczeń które będą szybsze w asemblerze (lub które, bo to też się zdarza, łatwiej zapisać w asemblerze niż w języku wysokiego poziomu). Ale bez wywoływania funkcji zewnętrznych, a zwłaszcza przerwań DOS-a czy BIOS-u.
Wstawek DOS-owych (z przerwaniem int 21 itp.) możesz używać pisząc program pod DOS-a: czyli w Turbo Pascalu albo DOS-owej wersji Free Pascala.
Ale bierz też pod uwagę, że FPC (Free Pascal) nawet pod DOS-a to też tryb chroniony, co parę rzeczy komplikuje, a parę ułatwia.

Można też pod Windows pisać całkowicie w asemblerze (bez Delphi). Szukaj jednak poradników dotyczących Windowsa, a nie DOS-a.
Można też pisać pod Linuksa. Tam to wygląda nawet bardziej podobnie do DOS-a, bo funkcje systemowe Linuksa też się wywołuje przez przerwania (tam akurat int 80h).

Osobiście uważam, że nauka assemblera teraz nie ma sensu.
Ma sens, bo ktoś musi pisać systemy operacyjne, biblioteki standardowe różnych języków, kompilatory, emulatory, zoptymalizowane funkcje przetwarzania dźwięku i obrazu.

1 użytkowników online, w tym zalogowanych: 0, gości: 1