X
ďťż

asmwtpas

Lemur zaprasza


Jak pisać wstawki asemblerowe w turbo pascalu

"
Assembler i turbo pascal
"


Na wstępie tego rozdziału wielkie dzięki dla wszystkich, którzy
proponowali mi jego przygotowanie - istotnie wielu ludziom krótki
opis jak wstawiać wstawki w asm do turbo pascala może się przydać,
choć w sumie sprawa jest dość prosta, toteż - jak zwykle - w wielkim
skrócie ją omówię i pozostawiwszy mały paskalowy przykładzik,
zakończę.


1. Kwestia zmiennych/danych:
Pascal nie udostępnia instrukcji "DB" czy "DW", lecz wszystkie dane
trzeba deklarować na początku programu/procedury np.

Const
napis:string='Czesc uzytkowniku'#13#10'$';
[...]
VAR
zmienna:word;



2. Dostęp do zmiennych:
Kiedy już zadeklarowaliśmy zmienne, obojętnie czy są to zmienne
globalne (deklarowane w głównej sekcji zmiennych programu), czy
lokalne (deklarowane w "VAR" podprocedury/funkcji), mamy do nich
dostęp z poziomu ASM: Możemy odwoływać się do ich
segmentu/przesunięcia za pomocą instrukcji "SEG Zmienna" i
"OFFSET Zmienna" które działają tak samo jak analogiczne instrukcje
np. w TASM. Poza tym możemy używać naszych zmiennych w instrukcjach
typu MOV, np.:


MOV AX,Zmienna


Musimy tu jednak pamiętać, że zmienne są to umowne obszary
zaalokowanej pamięci, więc są traktowane jako pamięć i nie można
dokonywać np. transferu zmienna-zmienna za pomocą MOV - zob.
.

3. Sposób numeracji:
Domyślnie w pascalu i również we wstawkach w asemblerze, obowiązuje
numeracja dziesiętna (zapis 10 oznacza 10d czyli 0AH), ale oczywiście
można używać zapisu szesnastkowego i to na dwa sposoby - poprzedzając
liczbę znakiem "$" (np. $0a), lub dodając na końcu liczby literkę "h"
(np. 0ah).

,br>

4. Kwestia segmentów:
Trzeba pamiętać, że Pascal generuje jako kod wynikowy, program typu
.exe, który m.in. tym różni się od .com'ów, że może się mieścić w
kilku segmentach - nie obowiązuje tu zasada, że CS i DS to ten sam
segment. Wynika z tego, że chcąc odwołać się do jakiejś zmiennej przez
jej wskaźnik (np. wydruk łańcucha INT 21h/09h) nie możemy z góry
zakładać, że DS już na nią (zmienną) wskazuje, metodę uniknięcia
komplikacji pokazuję w przykładzie.

5. Czy warto zapamiętywać rejestry na stosie:
Nie wiem czy istotnie jest to konieczne w podprocedurach, ale jeśli
używamy wstawki asm w programie głównym jest to raczej wskazane -
jeśli nie zapiszesz rejestrów może wysypać ci się program; dlatego
polecam metodę, że na początku wstawki w asm zapamiętujesz rejestry,
które ulegną zmianie, przed jej zakończeniem - pobierasz oryginalne
wartości rejestrów.



I to tyle teoretyzowania w sprawie pascala, na koniec tradycyjnie już
i zwyczajowo polecam wgląd do ,
lub najbardziej niezawodną metodę - bolesną, lecz pouczającą a nazwaną
"eksperyment" lub "metoda prób i błędów":-).

 


Powrót do spisu treści
kursu





by


Form and Graphics:

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • teen-mushing.xlx.pl
  • Wątki
    Powered by wordpress | Theme: simpletex | © Lemur zaprasza

    Drogi uzytkowniku!

    W trosce o komfort korzystania z naszego serwisu chcemy dostarczac Ci coraz lepsze uslugi. By moc to robic prosimy, abys wyrazil zgode na dopasowanie tresci marketingowych do Twoich zachowan w serwisie. Zgoda ta pozwoli nam czesciowo finansowac rozwoj swiadczonych uslug.

    Pamietaj, ze dbamy o Twoja prywatnosc. Nie zwiekszamy zakresu naszych uprawnien bez Twojej zgody. Zadbamy rowniez o bezpieczenstwo Twoich danych. Wyrazona zgode mozesz cofnac w kazdej chwili.

     Tak, zgadzam sie na nadanie mi "cookie" i korzystanie z danych przez Administratora Serwisu i jego partnerow w celu dopasowania tresci do moich potrzeb. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

     Tak, zgadzam sie na przetwarzanie moich danych osobowych przez Administratora Serwisu i jego partnerow w celu personalizowania wyswietlanych mi reklam i dostosowania do mnie prezentowanych tresci marketingowych. Przeczytalem(am) Polityke prywatnosci. Rozumiem ja i akceptuje.

    Wyrazenie powyzszych zgod jest dobrowolne i mozesz je w dowolnym momencie wycofac poprzez opcje: "Twoje zgody", dostepnej w prawym, dolnym rogu strony lub poprzez usuniecie "cookies" w swojej przegladarce dla powyzej strony, z tym, ze wycofanie zgody nie bedzie mialo wplywu na zgodnosc z prawem przetwarzania na podstawie zgody, przed jej wycofaniem.