assembler€86ˆ 1

assembler€86ˆ 1



>2 10. Przykłady programów

DCZATEK.........................

F PROC

0000 PROGRAM

Length = 0072

ESZTA................................

L WORD

07D4 DANE

EKUNDY............................

EST.ASM

L BYTE Symbols-2

07DA DANE

ETNE SEK.........................

L BYTE

07DB DANE

TART...................................

L NEAR

0000 PROGRAM

EKSr...................................

LBYTE

07DC DANE

rYNIKI..................................

N PROC

0072 PROGRAM

Length = 003D

ERO.....................................

Number

0030

N AK_N AEKRAN...........

LNEAR

00BE PROGRAM

>0000.....................................

L NEAR

0088 PROGRAM

?0001.....................................

L NEAR

009E PROGRAM

?0002.....................................

LNEAR

00AD PROGRAM

70003.....................................

L NEAR

00CE PROGRAM

70004.....................................

L NEAR

00FC PROGRAM

70005.....................................

L NEAR

0113 PROGRAM

70006.....................................

L NEAR

012A PROGRAM

259 Sourcc I .ines 308 Total Lines 64 Symbols

8874 Byt es symbol space frec 0 Waming Errors 0 Sevcre Errors

Przykładowe wyniki czasu wykonywania powyższego testu na różnych komputerach iostępnych w kraju.

Typ komputera proecsor.częstotliwośC

Czas wykonywania testu z wyświetlaniem

w [min:sek] bez wyświetlania

tarta graficzna

XT. 8088,4.88 MHz, CGA

1:15.85

0:28.50

KT. 8088.5 MI Iz. CG A

1:15.41

0:27.79

XT, 8088.10 MHz, EGA.

0:49.54

0:13.56

AT. 80286.8 mHZ EGA.

0:28.23

0:4.61

AT, 80286,10 MHz. EGA

0:13.89

0:3.68

“super" AT, 80386. 16 MHz, EGA

0:19.77

0:1.92

10.2. Symulacja klawiatury

Program pokazuje sposób doÅ‚Ä…czania do procedur rezydujÄ…cych w ROM BIOS, wÅ‚asnej obsÅ‚ugi przerwania. Ponieważ sposób obsÅ‚ugi przerwania 09H zostaje zmieniony (komunikacja z klawiaturÄ…), uruchomienie programu jest nieco uciążliwe. Nic można bowiem w niektórych momentach korzystać z programu uruchomieniowego (np. ASD), który zakÅ‚ada standardowÄ… obsÅ‚ugÄ™ klawiatury komputera. Zapoznanie siÄ™ z przykÅ‚adem pozwoli zrozumieć także, stosowane czÄ™sto w różnych programach demonstracyjnych, mechanizmy pozwalajÄ…ce na symulowanie uderzeÅ„ w klawisze i tym samym automatyczne wykonywanie pewnych operacji. Pozostaje przy tym wrażenie, że ktoÅ›" faktycznie siedzi przy klawiaturze.

powered by


10.2. Symulacja klawiatury

Czytelnik sam zorientuje siÄ™ zapewne, że program może być wykorzystany do zrobienia dobrego żartu koledze programiÅ›cie. Program można prosto przerobić tak, aby uruchamiaÅ‚ siÄ™ o okreÅ›lonej godzinie i zaczÄ…Å‚ ' sam'* wykonywać pewne operacje (np. uruchomić grÄ™ komputerowÄ… i sam w niÄ… grać) wprowadzajÄ…c w zdumienie programistÄ™, który majÄ…c zablokowanÄ… klawiaturÄ™ może jedynie patrzeć zdziwionym wzrokiem na to co siÄ™ dzieje.

Program jest przygotowany w jednym segmencie, nie posiada wÅ‚asnego stosu i musi być zapisany do pliku o rozszerzeniu COM. Programy rozpoczynajÄ… siÄ™ definicjÄ… struktury danych wykorzystywanÄ… do zapamiÄ™tywania w programie adresów logicznych, tzn. zawartoÅ›ci rejestrów IP oraz CS. NastÄ™pnie zdefiniowano peÅ‚ny blok PSP, zgodnie z tabl. 8.2.

Należy tutaj zaznaczyć, że w ogólnym przypadku nie ma potrzeby definiowania bloku PSP w programie zapisanym w pliku o rozszerzeniu COM. Blok ten jest tworzony automatycznie w czasie generowania programu wynikowego, który w takim przypadku musi rozpoczynać siÄ™ dyrektywÄ… ORG 100H. W przykÅ‚adzie zdefiniowano go w celach dydaktycznych, w programie jest też wykorzystywana wartość enviroment.

WÅ‚aÅ›ciwy program skÅ‚ada siÄ™ z trzech części. Część pierwsza, rozpoczynajÄ…ca siÄ™ od etykiety starty jest wykonywana jednokrotnie po wywoÅ‚aniu programu i jej funkcje sprowadzajÄ… siÄ™ do: zadeklarowania systemowi nowych adresów procedur obsÅ‚ugi przerwaÅ„ od klawiatury 09H oraz zegara ICH, zapamiÄ™tania adresów poprzednich oraz zaznaczenia, że nowe procedury obsÅ‚ugi tych przerwaÅ„ majÄ… pozostać w pamiÄ™ci operacyjnej. Dwie kolejne części programu to nowa obsÅ‚uga przerwaÅ„. Procedura klawiatura testuje, czy naciÅ›niÄ™ty zostaÅ‚ klawisz + lub - na dodatkowym polu numerycznym klawiatury i ustawia odpowiednio semafor aktywny, od stanu którego zależy sposób pracy drugiej procedury. Jeżeli program jest aktywny {aktywny = 1), to nie jest uruchamiana standardowa obsÅ‚uga klawiatury i komputer nic reaguje na naciskanie klawiszy (oczywiÅ›cie z wyjÄ…tkiem klawisza - na prawym polu). W lej sytuacji, w procedurze musi znaleźć siÄ™ sekwencja zerujÄ…ca bit kontrolny w rejestrze o adresie 61H oraz wyzerowanie przerwania pochodzÄ…cego od klawiatury. WyjÅ›cie z procedury odbywa siÄ™ przez rozkaz IRET. Gdy semafor aktywny = 0 i nie zostaÅ‚ wciÅ›niÄ™ty klawisz +, wówczas nastÄ™puje przejÅ›cie do standardowej obsÅ‚ugi klawiatury w ROM BIOS i komputer dziaÅ‚a normalnie. Procedura duszek jest wÅ‚Ä…czona szeregowo do dotychczasowej obsÅ‚ugi przerwania zegarowego. Jeżeli semafor aktywny = 0, to nic jest wykonywane Å¼adne dziaÅ‚anie. Jeżeli program jest aktywny, to rozpoczyna symulowanie dziaÅ‚ania klawiatury, tzn. wprowadza kolejne znaki do systemu i za pomocÄ… gÅ‚oÅ›nika imituje dźwiÄ™k tak, jakby rzeczywiÅ›cie ktoÅ› uderzaÅ‚ w klawisze. Aby zrozumieć dziaÅ‚anie tej części programu, trzeba wyjaÅ›nić w skrócie dziaÅ‚anie standardowej procedury obsÅ‚ugi bufora klawiatury. W komputerach klasy IBM PC czytanie klawiatury odbywa siÄ™ za poÅ›rednictwem przerwania INT 09H. Każdorazowe naciÅ›niÄ™cie klawisza powoduje wygenerowanie przerwania sprzÄ™towego, procedura obsÅ‚ugi tego przerwania czyta kod ASCII oraz tzw. Scan-Codc naciÅ›niÄ™tego klawisza i zapamiÄ™tuje go w buforze rozpoczynajÄ…cym siÄ™ od adresu 0040H:001EH. W buforze można zapamiÄ™tać maksymalnie kody 16 znaków. Gdy bufor zostanie przepeÅ‚niony, co może mieć miejsce gdy znaki sÄ… wprowadzane zbyt szybko lub program nie odczytaÅ‚ wczeÅ›niej wprowadzonych


Wyszukiwarka

Podobne podstrony:
assembler?86? 2 264 10. Przykłady programów znaków, wówczas kolejny znak jest ignorowany, przerwan
assembler?86? 3 266 10. PrzykÅ‚ady programów 80    ) 81 82    006C 00
assembler?86? 1 202 8. Uruchamianie programów asemblerowych boliczne zebrane w tabeli zostają w pr
assembler?86? 1 222 & Uruchamianie programów asemblerowych L [adres [drive sektor sektor]] Pol
assembler?86? 8 25610. Przykłady programów z parametrem błędnym (różnym od 1 lub 2) powoduje wyświ
assembler?86? 9 25810. PrzykÅ‚ady programów 104 105    0871    D
assembler?86? 4 26810. Przykłady programów 186 01C5 8A D8 mov bl,al 187 01C7 2E: A0 01BER mov
assembler?86? 6 272 W. Przykłady programów INT1CH.............................. L 0004 01B5 PROG
higeina 21 PrzykÅ‚ady programu Å›wietlnego dla kurczÄ…t-brojlerów Wiek Godzin Å›wiatÅ‚a na
17 Przykład 2.1 27 - cechy geometryczne przekroju: A = 26,9 cm2, t{ = 10,7 mm. Nośność elementów ro
19 Przykład 2.2 29 O 8■375 A,* - 8,17 ’23— = 10,43 cm2 < Af = 11,48 cm2. Sprowadzone pole przekr
15 Przykład 3.7 55 redukcyjnym ijf = 1,0 NRc = iM/d = 1,0-96,6-10“4■ 215-103 = 2077 kN. Sprawdzenie
19 Przykład 4.4 a następnie wg (Zl-8) Mcr = isYĘĘ = 47,58■ 10~2V16678• 22860 = 9290 kNm i wg
15 Przykład 4.5 Mcr = ±AoNy + V (AoNy)2 + B2i;NyNz = + (-7,16 ■ 10“2 ■ 236,0) + + V(—7S16■ 10“2■ 23
15 I Przykład 10.3 Czop kołnierzowy łożyska ślizgowego wzdłużnego o średnicy d — 50 mm jest wykonan

więcej podobnych podstron