» Poradna » Programy

Příklad softwarového přerušení v asembleru

 |   | 

Zdravim všechny, potřeboval bych pomoc ... můžete mi v tomhle najít nějakej příklad přerušení? Moc díkVzor rezidentního programu se samozaváděním do horní paměti Public Domain by vit$oft; Tento komentovaný program v jazyku Netwide Assembler (verze 0.98) je určen; jako vzor pro začátečníky v programování residentních programů v DOSu.; Uložte tento text pod názvem TSRUP.ASM a přeložte příkazem;; NASMW TSRUP.ASM -f bin -o TSRUP.COM;; Přeložený program lze spouštět v DOSu nebo v konsoli Windows 9x/NT.;; Terminate and Stay Resident (TSR) je třída 16bitových programů, které; poskytují služby jiným současně běžícím DOSovým programům, podobně jako; ovladače zařízení (DEVICE), které se instalují při zavádění systému. Na; rozdíl od DEVICE, správně napsaný TSR program lze nainstalovat až v případě; potřeby a zase odstranit z paměti, pokud již není zapotřebí.;; Pro pochopení, jak se TSR instalují do paměti, je třeba znát principy; alokace paměti v DOSu. MS-DOS přiděluje operační paměť v 16 bajtových; kvantech zvaných 'paragraf'. Každému přidělenému paměťovému bloku těsně; předchází paragraf zvaný 'řídicí blok paměti' (Memory Control Block, MCB); udržující informace o jeho velikosti, procesu, kterému patří a vazbě na; další takové bloky. Pokud program požádá o přidělení (alokaci) určitého; množství paměti, DOS musí přerovnat řetězec paměťových bloků, vybere; souvislou část paměti o požadované velikosti a označí ji jako obsazenou.; Při spouštění COM programu z povelové řádky se o alokaci stará příkazový; interpreter (obvykle COMMAND.COM), který alokuje dva paměťové bloky:; 1. malý blok pro kopii systémových proměnných (environment); 2. hlavní blok pro Program Segment Prefix (PSP) a vlastní kód spouštěného; programu. Ve prospěch spouštěného programu je alokován celý volný zbytek; konvenční paměti.; Po ukončení běhu programu DOS uvolní oba paměťové bloky alokované při; startu i případné další, pokud byly přiděleny ukončovanému procesu; v průběhu jeho činnosti. Residentní programy vyžadují, aby část jejich kódu; zůstala v paměti i po ukončení jejich běhu. TSR proto končí voláním; speciální funkce DOSu 31h, při kterém určí, kolik paměti má zůstat; alokováno. O toto množství pak bude snížena velikost paměti dostupné pro; později spouštěné programy. Velikost disponsibilní paměti lze zjistit; příkazem MEM.;; Konvenční paměť v DOSu je vzácný statek, všechny ovladače a residentní; programy by měly být optimalizovány na co nejmenší spotřebu residentní; paměti. Tento vzorový při instalaci do paměti zároveň posouvá residentní; kód tak, aby překrýval nepotřebnou část PSP, díky tomu zabírá po instalaci; pouze 128 bajtů.;;; Nejprve definujme několik užitečných maker.%MACRO PROC 1 ; Makra PROC a ENDP pouze ohraničují proceduru.%1: ; Jméno procedury bude určovat návěští. %PUSH %1 ; Uložení kontextu prostoru jmen.%ENDMACRO%MACRO ENDP 1 ; Makra PROC/ENDP lze vynechat, ale zpřehledňují %IFCTX %1 ; program a kontrolují vnořování procedur, %POP ; podobně jako pseudoinstrukce %MACRO a %ENDMACRO. %ELSE %ERROR Unmatched PROC/ENDP %1 %ENDIF%ENDMACRO%MACRO DosFn 1-2 ; Volání služby DOSu INT 21h AH=%1 BX=%2. %IF %1 MOV AH,%1 %ELSE MOV AX,%1 %ENDIF %IF %0 = 2 ; Je-li deklarován druhý parametr, vloží se do BX MOV BX,%2 %ENDIF INT 21h%ENDMACRO%MACRO Write 1+ ; Vypsání textového řetězce na standardní výstup (konsolu).[SECTION .data] %%String: DB %1 ; Literá

Odpovědi na otázku

 |   | 

Priklad preruseni v tom kodu je treba INT 21h, ale netusim, co chces vlastne udelat.

Souhlasím  |  Nesouhlasím  |  Odpovědět
 |   | 

DosFn 5801h,SI ; Obnova alokační strategie z registru SI. POPF ; Vrací v ES alokovaný segment, platný pokus má CF=0..90: RETENDP FindUMB; Tento program TSRUP ve zdrojovém i přeloženém tvaru lze najít na; stránkách vit$oft freeware.;; Pro kompilaci je nutný freewarový Netwide Assembler.;; Další odkazy k programování viz x86 Assembler WebRing,; internetový magazín Assembly Programming Journal,; referenční zdroj informací o přerušeních Interrupt List....Konec toho co se ti nepodařilo nacpat do poradny.-----------------------------------http://www.vitsoft.info/tsrupc.htm -----------------------------------

Souhlasím  |  Nesouhlasím  |  Odpovědět

Související témata: Paměti, Příklad, Přerušení, Macro, Blok, Paragraf, Vzor, Public domain, Speciální funkce, Malý blok, Hlavní blok, Alokace, Assembler, Push, Segment


Určitě si přečtěte

Vyzkoušeli jsme chytrou čínskou zásuvku Sonoff S26 za tři stovky. Nevyhořeli jsme

Vyzkoušeli jsme chytrou čínskou zásuvku Sonoff S26 za tři stovky. Nevyhořeli jsme

** Je sice z Aliexpressu, ale funguje ** Můžete ji ovládat hlasem přes Amazon Echo nebo Google Home ** Za tři stovky zautomatizuje menší 230V spotřebič

Jakub Čížek | 109

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

Pojďme programovat elektroniku: Rádiový čip, který má skoro každá bezdrátová myš

** Bezdrátové myši řídí čip od Nordic Semiconductors ** Jeho rádiové vysílače si před lety oblíbila i komunita kutilů ** Dnes si je vyzkoušíme v praxi

Jakub Čížek | 9


Aktuální číslo časopisu Computer

Megatest: 20 powerbank s USB-C

Test: mobily do 3 500 Kč

Radíme s výběrem routeru

Tipy na nejlepší vánoční dárky