Moje programy w assemblerze

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.

 

Kody rozkazów
http://www.intel.com/design/Pentium4/documentation.htm Procesor Pentium 4
   

Linki na temat asemblera
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