Jeszcze w latach 90-tych utworzyłem kilka podprogramów w
Turbo Assemblerze wywoływanych przez program główny w języku
Clipper. Znajdują sie one w pliku clip_asm.ZIP.
Najważniejszy
jest podprogram CZYTLIN do odczytywania linii
pliku tekstowego. Później znalazłem w bibliotece IDL
podprogram FREADLN o podobnej funkcji. Ważny jest też
podprogram OBSZAR , który tworzy dla Clippera
5.0 brakujący link __SCRSIZE używany przez
podprogramy z biblioteki IDL.
Ten link istnieje w programach
kompilowanych w starszej wersji Clippera 4 (Summer 87).
Do łączenia kodu w assemblerze z kodem w Clipperze służą instrukcje
extrn __parni:far
extrn __parc:far
extrn __retni:far
extrn __retni:far
extrn __ret:far
__parc służy do pobrania od języka clipper adresu parametru znakowego,
przy pomocy instrukcji
call __parc
__parni słuzy do pobrania od języka
Clipper adresu parametru liczbowego,
przy pomocy instrukcji
call __parni
__ret słuzy do powrotu do języka
Clipper bez oddania wyniku
przy pomocy instrukcji
call __ret
__retni słuzy do powrotu do języka
Clipper z oddaniem wyniku liczbowego
przy pomocy instrukcji
call __retni
__retc słuzy do powrotu do języka
Clipper z oddaniem wyniku typu znakowego
przy pomocy instrukcji
call __retc
Utworzyłem też kilka programów samodzielnych do testowania
różnych funkcji DOSa i nawet wykorzystywania
pamięci Extended. Po powstaniu Windows 95 straciły one na
znaczeniu, ale ponieważ istnieje możliwość łączenia
assemblera z nowoczesnymi językami Delphi i C Builder zamierzam
powrócić do pracy nad assemblerem. Kompilator języka Turbo-C
ma możliwość przekodowania programu na assembler (opcja -S).
Tu możesz ściągnąć archiwum pozostałych starych wersji
programów źródłowych
Moj_ASM.ZIP.
24 kwietnia 2004- utworzyłem podprogram w
assemblerze wywoływany z programu w języku C. Patrz asm_C.ZIP.
Przerabiam przykłady z
podręcznika J.Bielecki - Turbo Assembler i Turbo
Debugger.
Można je ściągnąć z pliku KSIAZKA_BIELECKI.ZIP.
Utworzyłem też wstawkę w assemblerze w programie w Borland C++
Builder. Patrz
BC_ASM.zip.
26 kwietnia 2004 - utworzyłem podprogram w assemblerze wywoływany z programu w Borland Pacal 7.0. Patrz
plik ASM_PAS.zip .
Jest tu
analogiczny podprogram co w
asm_C.ZIP na
temat pobrania z funkcji DOSa 19H
litery aktualnie przydzielonego dysku. Niestety nie mógł to
być ten sam podprogram. System Pascala nie tolerował segmentu z
danymi o nie standardowej nazwie, a system C++ wymagał
assume
DS:dgroup.Przy łączeniu modułów tworzonych w
różnych językach niezbędne jest wywoływanie zewnętrznego
kompilatora. Aby móc sledzić program tworzony przez Turbo C++ w
Turbo Debuggerze trzeba konsolidować program z opcją
/V
(dla linkera TLINK). Niebędne jest wykonanie mapy połączonego
programu.
28 kwietnia 2004 - Wykonałem dalsze testy na
łączenie programów w Turbo Pascalu i TC z assemblerem. Program
w TC lub Turbo Pascalu nalezy kompilować z opcjami na utworzenie
informacji dla Debuggera. Wtedy w Turbo Debuggerze jest widoczny
kod źródłowy programu w języku TC lub Turbo Pascal. Potrzebna
jest przy tym zgodność wersji kompilatora TCC z TASM bądź TPC
z TASM. Zmusza mnie to do trzymania kilku wersji Turbo
Assemblera. Bardzo pozyteczna jest dyrektywa Model
TPascal w połączeniu z dyrektywą ARGS.
Wtedy Turbo Assembler generuje rozkazy do pobrania adresu
parametrów.
29 kwietnia 2004 - Przybyły nowe przykłady z
kompilacji warunkowej w KSIAZKA_BIELECKI.ZIP.
Poprawiłem jeden ze starych programów. Patrz nowe_ASM.ZIP.
Przerobiłem samodzielnie pierwszy przykład z książki
Stanisława Kruka. Patrz
ksiazka_S_Kruk.zip.
30 kwietnia 2004 -Poprawiłem drugi ze starych
programów. Patrz
nowe_ASM.ZIP.
Oba programy Ekran.asm i Ekran1.asm testują
przerwanie BIOSa 10H do
obsługi ekranu. Powtórzyłem też test
programu ZERLP.asm. Inicjuje on drukarkę igłową przy pomocy
przerwania BIOS 17h. Dla
drukarki atramentowej działanie programu jest ignorowane.
1 maja 2004.- Skompilowałem z poprawkami (brak punktu
startu) 2 przyklady E1.asm
i gama.asm z książki S.Kruka i dodałem do
pliku
ksiazka_S_Kruk.zip.
Wykonałem 3 testy na łączenia assemblera z Borland Pascalem.
Program Test_asm.pas ma wstawki assemblerowe i
wyświetla na ekranie zawartość rejestrów w postaci
dziesiętnej.
Program Test_as2.pas wykorzystuje moduł dos.pas
i w języku pascal wywołuje funkcję DOSa 2aH-pobranie
daty systemowej . Dane typu registry symulują
działania na rejestrach. Podobnie działa program skopiowany z
pomocy systemowej ms_dos.pas. Oba te programy
wykorzystują systemową strukturę registers i procedurę msdos
do uruchomienia funkcji DOS. W katalogu Borland Pascala
bp\rtl\dos
znajdują się kody źródłowe w języku pascal i assembler tych
pomocniczych modułów. Nowe programy umieściłem w pliku ASM_PAS.zip .
Utworzyłem projekt w Delphi 2.0 ze wstawkami w assemblerze.
Patrz delphi_asm.zip .
Oczywiście należy zachować ostrożność,żeby nie zaburzyć
działania dość skomplikowanego programu.
8 maja 2004 - zakodowałem w Borland Pascalu 7.0
- 3 przykłady z książki _ Michael Martin- W Sercu BIOS-u.
Patrz bios.zip
Łączenie
assemblera z Pascalem jest to przeprowadzone za pomocą funkcji
działających na rejestrach procesora (INTR , INLINE, PORT) .
Programy te działają w oknie DOSa w systemie Windows 98.
Właściwie w oknie DOSa jest emulowany komputer z systemem DOS.
18 maja 2004- wykonałem udane testy z różnymi
odmianami programów MAKE. Czytają one zbiór
wsadowy typu MAK ( nie ma przymusu nazwy,
najczęściej domyślnie są MAKEFILE), w którym
są zadane reguły kompilowania najnowszych plików źródłowych
i łączenia najnowszych plików skompilowanych. Dotyczy to
różnych języków programowania i różnych systemów
kompilacji i różnych systemów operacyjnych. Dla Turbo
assemblera i dla Turbo C -jest to program MAKE.EXE,
dla Clippera RMAKE.EXE (pliki reguł typu
RMK), a dla Microsoft C++ (Visual C++) program NMAKE.EXE.
Całość przykładów znajduje się w archiwum MAK.ZIP.
http://www.intel.com/design/Pentium4/documentation.htm | Procesor Pentium 4 |
http://www.movsd.com | oprogramowanie MASM32 |
http://win32asm.cjb.net | |
http://betov.free.fr/RosAsm.html | kompilator RosAsm |
http://support.microsoft.com/default.aspx?scid=kb;en-us;228454 | Patch ML614.exe makroasemlera |
http://doc.ddart.net/asm/Microsoft_MASM_Programmers_Guide_v6.1/ | Podręcznik z Makroasemblera |
Data aktualizacji strony 2015-01-12
Większość linków do stron internetowych nie działa po upływie 10 lat od utworzenia strony , zamierzam je zastąpić innymi.
Uzupełniłem wszystkie brakujące pliki na mojej stronie
10 lat temu strona była na innym serwerze, który został zlikwidowany