|
|
| Witamy wszystkich w pierwszym numerze |
|
| Redakcja |
spis treści |
Miło nam oddać do waszych rąk pierwszy numer biuletynu ASSEMBLER NEWS. Będzie to pismo wydawane w formie elektronicznej w postaci plików HTML oraz PDF.
Chcielibyśmy aby nasze pismo ukazywało się jako miesięcznik i mamy nadzieję, że zrealizujemy nasze założenia. Tematyką pisma będzie asembler i jego okolice, tzn. budowa i działanie komputera, współdziałanie jego komponentów oraz nowe technologie w zakresie programowania i sterowania osprzętem.
Będziemy wdzięczni za wyrozumiałość oraz za wszelkie uwagi co do prowadzonego przez nas pisma, którego jakość będziemy starali się poprawiać w kolejnych numerach. Rozkład i tematyka głównych działów pisma będzie ewoluowała w kolejnych numerach w zależności od potrzeb czytelników oraz w miarę powstawania nowych zagadnień i wyczerpywania aktualnie poruszanej na jego łamach tematyki.
W aktualnym numerze postaramy się przybliżyć czytelnikom zagadnienia związane z zawartością plików OBJ, wykorzystaniem asemblera w celu usprawnienia pracy w środowisku DOS oraz zaprezentujemy kilka tabel mogących usprawnić programowanie nie tylko w języku asemblera. Wkażdym numerze pisma będziemy prezentowali kilka odnośników do miejsc w sieci WWW dotyczących kwestii związanych z tematyką pisma. Wszelkie opinie, uwagi i wnioski dotyczące pisma będą mile widziane i będą stanowiły podstawę przeobrażeń aktualnej formy magazynu. Zapraszamy także wszystkie osoby chętne do zareklamowania własnych stron WWW na łamach naszego pisma, jedynym warunkiem jest tu tylko to aby tematyka strony choć w części była związana z asemblerem.
Z powodu zaistniałych sytuacji nie wiemy czy ukaże się numer drugi Biuletynu, jednakże na razie życzymy miłej lektury...
|
|
|
|
| Rafał Wedlarski - oropHacx |
spis treści |
W pierwszym artykule z serii "Co siedzi w kompie" omówieę najważniejszą część tej maszyny czyli Plyte glowna... jest ona podstawa komputera. W niej montuje sie roznego rodzaju karty rozszerzen, pamiec operacyjna (_ram_) i wreszcie procesor. Znajduje sie tu rowniez bardzo wazny uklad - BIOS. W biosie sa przechowywane cenne informacje o ustawieniach systemowych np. czas, data jak i informacje o zainstalowanych uzadzeniach (na plycie jest tez specjalna bateryjka, podtrzymojaca te informacje). Mozna tu znalezc duzo wiecej ustawien (na przyklad z jakiego dysku ma startowac system), ktore moge opisac dokladnie w nastepnej czesci tego artykulu. Teraz dokladnie opisze z czego sie skalada i jak wygladaja plyty glowne, a w szczegolnosci uklady dla Pentium II bo takich chyba teraz jest najwiecej na rynku (chociarz za kilka miesiecy powiny zapanowac Katmai`e czyli PIII). Bardzo waznym elementem identyfikujacym i okreslajacym mozliwosci plyt jest chipset. Chipset to zestaw ukladow scalonych, odpowiedzialnych za wykonywanie okreslonych zadan w odpowiednich urzadzeniach elektronicznych czyli na przyklad sterownie przeplywem danych miedzy magistralami ISA i PCI lub komunikacja z urzadzeniami zewnetrznymi. Jecnym z elemetowl plyt szyny, do ktorych montujemy karty rozszerzen. Rozrorzniamy trzy typy takich kart : ISA, PCI i AGP. Pierwszy typ czyli ISA jest najstarszym tego typu ukladem. Byl jedynym gniazdem w starych komputerach takich jak 386, 486 a w tych najnowszych wystepuje w coraz mniejszej ilosci (2-3). Rowniez kart przystosowanych do tego typu magistrali jest coraz mniej (chociarz wiele ludzi jeszcze z nich kozysta np. ja mam karte dzwiekowa 'ISA' Sound Blaster). Nowszym ukladem jest PCI - wystepujacy na plytach do PentiumI i nowszych. Takie gniazda w nowszych modelach plyt glownych wystepuja zazwyczaj w ilosci 4-5 i sa bardzo polularne (chociarzby wewnetrzne modemy starsze 3Dfx`y i karty gradiczne itp.).
Ostatnim typem sa zlacza AGP (Accelerated Graphics Port). Jak mozna sie domyslec po nazwie jest to 32 -bitowa szyna danych, umozliwiajaca bezposredni dostep chipsetu karty graficznej do pamieci systemowej. Komunikacja pomiedzy procesorem graficznym a systemem odbywa sie cztery razy szybciej niz w szynach PCI. Pozatym AGP pracuje niezaleznie od innych magistrali i dlatego nie blokuje innych operacji wykonywanych przez system. To by bylo tyle na temat kart rozszerzen. Teraz zajme sie komunikacja z napedami (HDD - twardy dysk ;o] i CD-ROM) i urzadzeniami zewnetrznymi (np. mysz, klawiatura lub skaner). Sluza do tego specjalne zlacza IDE, SCSI lub tez USB. Chyba najpopularniejszy jest ten pierwszy. Wystepuje w wiekszosci komputerow. Natomiast SCSI (Small Computer System Interface) jest zadziej spotykany, a to dlatego, iz uwazany jest za trudny w obsludze. Jest zato ciagle udoskonalany i z tego powodu jego powodzenie na rynku rosnie. USB (Universal Serial Bus) czyli uniwersalny interfejs szeregowy laczacy w sobie funkcjie miedzy innymi portu uzadzen takich jak klawiatura i mysz oraz lacza szeregowego. Nie znam go za brdzo wiec nie bede opisywal ale powiem tylko, ze jest bardzo przyjazny dla uzytkownika i wystepuje w wiekszosci nowych plyt. Powoli koncze juz ta czesc, wiec teraz powiem kilka slow o pamieci RAM (Random Acces Memory). Po pierwsze jest to pamiec, o swobodnym odczycie, ale w przeciwienstie do HDD, po zrestartowaniu maszynki pamiec ta jest kasowana. Jest bardzo wiele odmian tego ukladu, wiec opisze go tylko ogolnie. A wiec w starszych kompach podstawowym modelem tej pamieci byly SIMM`y, FPM i EDO. Natomiast obecnie panuja DRAM`y i niedlugo moga powstac chipy nowej generacji: DDRAM, Synclinc i RAMbus.
Jesli chodzi o zlacza, w ktorych sa montowane kosci pamieci to mamy np. DIMM`y (Double Inline Memory Module) - wystepujace teraz w wiekszosci komputerow i SIMM`y (Single Inline Memory Module). Roznia sie miedzy soba tym, ze w DIMM`ach styki na obu stronach sluza do przesylania innych sygnalow, a w SIMM`ach te kontakty sa ze soba polaczone. Wiecej o pamieci RAM napisze w kolejnych artykulach...
|
|
| Co można znaleźć w pliku OBJ |
|
| Robert Kalinowski |
spis treści |
Pewnie niejednemu przytrafiło się zastanowić, co tak właściwie zawiera plik OBJ, niby kod, ale nie do końca i w dodatku można łączyć różne kawałki (np. C z Paskalem podkraszany Asemblerem) i jakoś to wszystko działa (choć nie zawsze). Mnie, w każdym razie, to zainteresowało. Moja ciekawość wzrosła jeszcze bardziej, gdy wpadłem na pomysł, by używać pod DOS'em własnych ładowalnych modułów (coś na kształt DLL'a). Potrzebny stał się własny linker, który by używał czystych funkcji, bez standardowych (w C) prologów i epilogów, które bardzo pięknie rozjeżdżały mi program główny. W końcu moduły miały działać w kontekście programu bazowego, a nie jako osobne programy (jak w przypadku plików OVL).
Temat modułów jest niezmiernie szeroki i nie będę go tutaj dalej rozwijał. Dość, że zacząłem poszukiwać opisu pliku OBJ. I co? I nic. Dokładnie. Nikt o czymś takim nie słyszał, nikogo to nie interesuje, bo i po co się grzebać w bebechach, gdy można odpalić jakiegoś builder'a, który wszystko zrobi. Jak widać jestem człowiekiem ciekawskim, więc, gdy zabrakło mi pomysłów gdzie szukać, postanowiłem sam poprzyglądać się temu standardowi.
Słowo standard jest chyba trochę przesadzone. Z tego co zobaczyłem, łączenie kodu różnych producentów jest chyba aktem dobrej woli. Każda firma wymyśla sobie co chce (przykład: niech ktoś spróbuje dołączyć OBJ'ty Microsoft'u 4 coś tam, do Borlanda 3.1). Nie mniej niektórzy zachowują zdrowy rozsądek (np. PharLab, BorlandC) i można dopatrzyć się jakiś prawidłowości.
Jeszcze raz przypominam, że wszystkie dane na temat OBJ'ta są wynikiem moich zgadywanek, więc na pewno kryją mnóstwo błędów i niedomówień. Wszystkich, którzy mają cokolwiek do dodania lub korekcji poniższych wydumań, proszę o kontakt (osobisty, lub na łamach PCkuriera). Może ktoś będzie potrzebował tego fragmentu wiedzy.
Po tym, nieco przydługim wstępie, czas rozpocząć omawianie nieszczęsnego OBJ'ta.
Generalnie, plik OBJ składa się z pól, identyfikowanych po jednobajtowym numerze (każdy >= 80h). Zaraz za numerem rodzaju (identyfikatorem) pola znajduje się dwubajtowa długość dalszej części pola. Później następują specyficzne dane, zależnie od rodzaju pola, a na końcu bajt kontrolny, czyli negacja wszystkich bajtów (wraz z nagłówkiem) modulo 100h (inaczej: suma wszystkich bajtów pola musi się równać 0).
Typową strukturą, występującą w wielu miejscach, jest pole tekstowe zapisane w stylu Pascal'a, czyli najpierw bajt określający długość (może być równy zero), a za nim znaki tekstu w ilości przed chwilą określonej (przypominam miłośnikom C: bez bajtu kończącego, czyli zera). Dalej będzie nazywane polem typu Text.
Rozpoznane przeze mnie pola to:
80h: nazwa modułu
88h: pole wykorzystywane przez kompilatory (np. PHAR386: procesor docelowy)
8Ah: adres startowy (dyrektywa END label)
8Ch: deklarowanie zmiennej zewnętrznej (dyrektywa EXTRN)
90h: upublicznienie zmiennej lokalnej (dyrektywa PUBLIC)
96h: nazwy segmentów, grup
98h: opis segmentu
9Ch: instrukcja segmentowa i/lub offsetowa (np. MOV AX,SEG Ala)
0A0h: dane w segmencie (kod)
0A2h: dane wielokrotne (dyrektywa DUP)
Nazwa modułu (pole 80h)
Pole składa się ze struktur typu Text. Jest to tekst z dyrektywy NAME, lub jak nie ma, to z dyrektywy TITLE, a gdy i tej brak, to jest to nazwa pliku.
Pole kompilatora (pole 88h)
To pole jest wykorzystane przez kompilator do czego ma ochotę. TASM posiada ich całą masę, niektóre po kilkaset bajtów. BC jeszcze bardziej się nie przejmuje. Phar-Lab tworzy tylko jedno i to pod warunkiem, że wybrano procesor 386 lub 486 (czyli nie w trybie rzeczywistym). Wtedy pole składa się z bajtów: 80h, 0AAh, '80386'. Wybranie procesora 386 lub 486 powoduje, że wszelkie offset'y są 32-bitowe (segmenty domyślnie są typu USE32).
Adres początkowy (pole 8Ah)
Pole to jeszcze nie jest mi znane. Gdy na końcu występuje sama dyrektywa END, to pole to zawiera 00h. Dla startu (adres po dyr. END) od początku segmentu jest to 0C1h, 54h, nr_seg (1 B). Dla startu w środku segmentu: 0C1h, 50h, nr_seg (1 B), offset (2/4 B).
Numer segmentu liczony jest w/g kolejności występowania pól 98h ().
Deklaracja symboli zewnętrznych (pole 8Ch)
Dla każdego symbolu (zmienna, procedura) istnieje osobne pole 8Ch. Składa się ono z pola typu Text i bajtu równego 00h (nie wiem co oznacza).
Upublicznianie symboli (pole 90h)
Dla każdego symbolu istnieje osobne pole 90h. Najpierw jest bajt 00h (i nie chce się zmieniać), potem numer segmentu, nazwa symbolu (Text), offset w segmencie (2 lub 4 bajty - zależnie od procesora) i na końcu zagadkowy bajt 00h.
Definicje nazw (pole 96h)
Występują tu zarówno nazwy segmentów, nazwy klas segmentów, jak i nazwy grup. Dane są typu kolejnych struktur Text. Pierwszy bajt to 00h, (może to być nazwa o długości 0, na co wskazują numery nazw rozpoczynające się od 1). Pierwsza nazwa użytkownika rozpoczyna się od bajtu +01h (względem wnętrza pola).
Opis segmentu (pole 98h)
Zawarte są tutaj podstawowe dane o segmencie:
+00: (1) - typ łączenia i sposób wyrównania
b7,b6,b5 - wyrównywanie
001 - byte
010 - word
011 - para (default)
100 - page (256B)
b4,b3,b2 - łączenie
000 - memory (default)
010 - public
101 - stack
110 - common
b1,b0 - ???
+01: (2/4) - rozmiar segmentu (USE16/USE32)
+03/05: (1) - nazwa segmentu (numer tekstu w polu 96h)
+04/06: (1) - nazwa klasy (numer tekstu w polu 96h)
+05/07: (1) - ??? (=01h)
+06/08: (1) - nieobecny dla segmentu zgodnego z procesorem,
=01h dla segmentu USE16 i procesora 386P, 486P
Uzupełnienie danych (np. segmentu lub offsetu) (pole 9Ch)
Wpisywanie danej odbywa się do segmentu, który był ostatnio definiowany za pomocą pola 0A0h. Pozycja (10 bitowy offset), pod którą trzeba wpisać odpowiednią wartość też jest liczony od początku
ostatniego pola 0A0h. Do wpisania może być segment i/lub offset.
+00: (1) - b7 - ??? =1
b6 - ??? =1 (=0 dla CALL NEAR)
b5 - ??? =0
b4 - wpisz offset32
b3 - wpisz segment
b2 - wpisz offset16 (czasami występuje z +00:b4)
b1,b0 - offset(b9,b8), od którego uzupełnić dane
+01: (1) - offset(b7..b0), od którego uzupełnić dane (starsze bity w +00:b1..b0)
+02: (1) - b7..b3 - ??? =01010 (50h)
b2 - występuje offset do wpisania (pozycja +04:)
b1 - rodzaj zmiennej: 0-wewnętrzna, 1-EXTRN
b0 - ??? =0
+03: (1) - numer segmentu w/g pól 98h
+04: (2) - offset w segmencie o numerze podanym w +03: (gdy +02:2 == 1)
Dane w segmencie (pole 0A0h)
Zawiera dane z segmentu. Jednemu zdefiniowanemu segmentowi może towarzyszyć wiele pól 0A0h, 0A2h.
+00: (1) - numer segmentu (w/g kolejności pól 98h)
+01: (2/4) - offset w segmencie, od którego mają mieścić się dane
+03/05: (...) - dane
Dane powtarzające się (pole 0A2h)
Za pomocą tego pola w OBJ'cie zapisane są do dane powtarzające się (dyrektywa DUP). Dane mogą być wielobajtowe.
+00: (1) - numer segmentu (w/g kolejności pól 98h)
+01: (2/4) - offset, od którego mają mieścić się dane
+03/05: (2) - ilość danych do powtórzenia (maksymalnie 7FFFh)
+05/07: (2) - ??? (=0)
+07/09: (1) - wielkość danej w bajtach (=nn)
+08/0A: (nn) - dana do powtórzenia
Pewnym ewenementem są funkcje typu inline w BorlandC 3.1 w czasie używania debuger'a. Tworzone są do nich odwołania (CALL) z segmentem =0C0h, co skutecznie ogłupia np. linker PharLab'a. Pewnym antidotum jest użycie opcji -vi, co zmusza Borland'a do użycia rzeczywistych inline'ów (nie można stosować break-point'ów w takich funkcjach)...
|
|
| Zieloni czyli bezpieczni dla środowiska |
|
| Leszek Chybowski - Pegazus |
spis treści |
Jak wyświetlić napis "Hello World", jest to jedna z elementarnych procedur, którą każdy powinien znać i wykorzystywać w swoich programach, nie jest to jednak tak proste jak w językach wysokiego poziomu (print, write, echo itp.), ponieważ należy napisać kilka linijek tekstu aby pojawiło się "Hello World". Zapewne to właśnie zniechęca do programowania w asemblerze, jednak warto się przełamać. Wyświetlenia tekstu dokonujemy tego poprzez wywołanie przerwania 21/09h. Poniżej przedstawiam przykład zaczerpnięty z listu Pawła Wendy - pHaTe.
assume cs:kod;
kod segment
org 100h
start:
mov dx,offset tekst
mov ah,09h
int 21h ;ta funkcji wypisuje tekst
koniec: mov ah,4ch ;konczy program
int 21h
tekst db 'Hello World!$',13,10
kod ends
end start
|
|
| Kody klawiatury podstawowej |
|
| Leszek Chybowski - Pegazus |
spis treści |
Poniżej przedstawiam w formie tabeli kody klawiatury podstawowej.
| Scan code |
Key Klawisz |
Base Case |
Upper Case |
+ Ctrl |
+ Alt |
| DEC | HEX |
| 1 | 01 | Esc | 27 | 27 | 27 | (0 - 1) |
| 2 | 02 | 1 ! | 49 | 33 | | 0 - 120 |
| 3 | 03 | 2 @ | 50 | 64 | 0 - 3 | 0 - 121 |
| 4 | 04 | 3 # | 51 | 35 | | 0 - 122 |
| 5 | 05 | 4 $ | 52 | 36 | | 0 - 123 |
| 6 | 06 | 5 % | 53 | 37 | | 0 - 124 |
| 7 | 07 | 6 ^ | 54 | 94 | 30 | 0 - 125 |
| 8 | 08 | 7 & | 55 | 38 | | 0 - 126 |
| 9 | 09 | 8 * | 56 | 42 | | 0 - 127 |
| 10 | 0A | 9 ( | 57 | 40 | | 0 - 128 |
| 11 | 0B | 0 ) | 48 | 41 | | 0 - 129 |
| 12 | 0C | - _ | 45 | 95 | 31 | 0 - 130 |
| 13 | 0D | = + | 61 | 43 | | 0 - 131 |
| 14 | 0E | Back Sp | 8 | 8 | 127 | (0 - 14) |
| 15 | 0F | Tab | 9 | 0 - 15 | (0, 148) | (0, 165) |
| 16 | 10 | Q | 113 | 81 | 17 | 0 - 16 |
| 17 | 11 | W | 119 | 87 | 23 | 0 - 17 |
| 18 | 12 | E | 101 | 69 | 5 | 0 - 18 |
| 19 | 13 | R | 114 | 82 | 18 | 0 - 19 |
| 20 | 14 | T | 116 | 84 | 20 | 0 - 20 |
| 21 | 15 | Y | 121 | 89 | 25 | 0 - 21 |
| 22 | 16 | U | 117 | 85 | 21 | 0 - 22 |
| 23 | 17 | I | 105 | 73 | 9 | 0 - 23 |
| 24 | 18 | O | 111 | 79 | 15 | 0 - 24 |
| 25 | 19 | P | 112 | 80 | 16 | 0 - 25 |
| 26 | 1A | [ { | 91 | 123 | 27 | (0, 26) |
| 27 | 1B | ] } | 93 | 125 | 29 | (0, 27) |
| 28 | 1C | Enter | 13 | 13 | 10 | (0, 28) |
| 29 | 1D | Control | | | | |
| 30 | 1E | A | 97 | 65 | 1 | 0 - 30 |
| 31 | 1F | S | 115 | 83 | 19 | 0 - 31 |
| 32 | 20 | D | 100 | 68 | 4 | 0 - 32 |
| 33 | 21 | F | 102 | 70 | 6 | 0 - 33 |
| 34 | 22 | G | 103 | 71 | 7 | 0 - 34 |
| 35 | 23 | H | 104 | 72 | 8 | 0 - 35 |
| 36 | 24 | J | 106 | 74 | 10 | 0 - 36 |
| 37 | 25 | K | 107 | 75 | 11 | 0 - 37 |
| 38 | 26 | L | 108 | 76 | 12 | 0 - 38 |
| 39 | 27 | ; : | 59 | 58 | | (0, 39) |
| 40 | 28 | ' " | 39 | 34 | | (0, 40) |
| 41 | 29 | ` ~ | 96 | 126 | | (0, 41) |
| 42 | 2A | Shift (left) | | | | |
| 43 | 2B | \ | | 92 | 124 | 28 | (0, 43) |
| 44 | 2C | Z | 122 | 90 | 26 | 0 - 44 |
| 45 | 2D | X | 120 | 88 | 24 | 0 - 45 |
| 46 | 2E | C | 99 | 67 | 3 | 0 - 46 |
| 47 | 2F | V | 118 | 86 | 22 | 0 - 47 |
| 48 | 30 | B | 98 | 66 | 2 | 0 - 48 |
| 49 | 31 | N | 110 | 78 | 14 | 0 - 49 |
| 50 | 32 | M. | 109 | 77 | 13 | 0 - 50 |
| 51 | 33 | , < | 44 | 60 | | (0 - 51) |
| 52 | 34 | . > | 46 | 62 | | (0 - 52) |
| 53 | 35 | / ? | 47 | 63 | | (0 - 53) |
| 54 | 36 | Shift (right) | | | | |
| 55 | 37 | * PrtSc | 42 | | 0 - 114 | |
| 56 | 38 | Alt | | | | |
| 57 | 39 | Space Bar | 32 | 32 | 32 | 32 |
| 58 | 3A | Caps Lock | | | | |
| 59 | 3B | F1 | 0 - 59 | 0 - 84 | 0 - 94 | 0 - 104 |
| 60 | 3C | F2 | 0 - 60 | 0 - 85 | 0 - 95 | 0 - 105 |
| 61 | 3D | F3 | 0 - 61 | 0 - 86 | 0 - 96 | 0 - 106 |
| 62 | 3E | F4 | 0 - 62 | 0 - 87 | 0 - 97 | 0 - 107 |
| 63 | 3F | F5 | 0 - 63 | 0 - 88 | 0 - 98 | 0 - 108 |
| 64 | 40 | F6 | 0 - 64 | 0 - 89 | 0 - 99 | 0 - 109 |
| 65 | 41 | F7 | 0 - 65 | 0 - 90 | 0 - 100 | 0 - 110 |
| 66 | 42 | F8 | 0 - 66 | 0 - 91 | 0 - 101 | 0 - 111 |
| 67 | 43 | F9 | 0 - 67 | 0 - 92 | 0 - 102 | 0 - 112 |
| 68 | 44 | F10 | 0 - 68 | 0 - 93 | 0 - 103 | 0 - 113 |
| | | F11 | (0 - 133) | (0 - 135) | (0 - 137) | (0 - 139) |
| | | F12 | (0 - 134) | (0 - 136) | (0 - 138) | (0 - 140) |
| 69 | 45 | NumLock | | | | |
| 70 | 46 | ScrollLock | | | | |
| 71 | 47 | Home 7 (grey) | 0 - 71 | 55 | 0 - 119 | |
| 72 | 48 | 8 (grey) | 0 - 72 | 56 | (0, 141) | |
| 73 | 49 | PgUp 9 (grey) | 0 - 73 | 57 | 0 - 132 | |
| 74 | 4A | - (grey) | 45 | 45 | (0 - 142) | (0 - 74) |
| 75 | 4B | 4 (grey) | 0 - 75 | 52 | 0 - 115 | |
| 76 | 4C | 5 (grey) | (0 - 76) | 53 | (0 - 143) | |
| 77 | 4D | 6 (grey) | 0 - 77 | 54 | 0 - 116 | |
| 78 | 4E | + (grey) | 43 | 43 | (0 - 144) | (0 - 78) |
| 79 | 4F | End 1 (grey) | 0 - 79 | 49 | 0 - 117 | |
| 80 | 50 | 2 (grey) | 0 - 80 | 50 | (0 - 145) | |
| 81 | 51 | PgDn 3 (grey) | 0 - 81 | 51 | 0 - 118 | |
| 82 | 52 | Ins 0 (grey) | 0 - 82 | 48 | (0 - 146) | |
| 83 | 53 | Del , (grey) | 0 - 83 | 46 | (0 - 147) | |
| 84 | 54 | SysReq | | | | |
0 - X, 244 - X = rozszerzone kody klawiszy,
() - kody nie występują na niektórych klawiaturach.
|
|
| Kody klawiatury rozszerzonej |
|
| Leszek Chybowski - Pegazus |
spis treści |
Poniżej przedstawiam w formie tabeli kody klawiatury rozszerzonej.
Key Klawisz |
Base Case |
Upper Case |
+ Ctrl |
+ Alt |
| PrintScreen SysRq | | 0 - 114 | | |
| Pause Break | | | 0 - 0 | |
| Enter (keypad) | 13 | 13 | 10 | (0 - 166) |
| / (keypad) | 47 | 47 | (0 - 149) | (0 - 164) |
| * (keypad) | 42 | 42 | (0 - 150) | (0 - 55) |
| Home | (224 - 71) | (224 - 71) | (224 - 119) | (0 - 151) |
| (UpArrow) | (224 - 72) | (224 - 72) | (224 - 141) | (0 - 152) |
| PageUp | (224 - 73) | (224 - 73) | (224 - 132) | (0 - 153) |
| (LeftArrow) | (224 - 75) | (224 - 75) | (224 - 115) | (0 - 155) |
| (RightArrow) | (224 - 77) | (224 - 77) | (224 - 116) | (0 - 157) |
| End | (224 - 79) | (224 - 79) | (224 - 117) | (0 - 159) |
| (DownArrow) | (224 - 80) | (224 - 80) | (224 - 145) | (0 - 160) |
| PageDown | (224 - 81) | (224 - 81) | (224 - 118) | (0 - 161) |
| Insert | (224 - 82) | (224 - 82) | (224 - 146) | (0 - 162) |
| Delete | (224 - 83) | (224 - 83) | (224 - 147) | (0 - 163) |
0 - X, 244 - X = rozszerzone kody klawiszy, () - kody nie występują na niektórych klawiaturach.
|
|
|
|
| Leszek Chybowski - Pegazus |
spis treści |
Witam w dziale Skróty.. Jest to część pisma która będzie poświecona różnym dziwnym skrótom (głównie pochodzenia anglojęzycznego) z zakresu szerokopojętej komputeryzacji. Będą tu skróty zarówno z zakresu programowania (oczywiście w asemblerze, ale nie tylko) oraz sprzętu komputerowego, sieci i zagadnień związanych z telekomunikacją. Postaram się przedstawić w dziale tym wiele skrótów (bardziej lub mniej znanych). Duża część z nich nie jest zbyt znana jako że brak na polskim rynku specjalistycznych słowników z tej dziedziny. Natomiast podręczniki w wersji angielskiej często są albo zbyt ogólnikowe (trudno znaleźć hasło o komputerach w gąszczu innych dotyczących rozwoju larwy Zwisaka Oleandrowca) albo zbyt szczegółowe (mało kto widział na oczy instrukcje techniczne dotyczące central telefonicznych). Postaram się korzystając z różnych źródeł sporządzić mały słowniczek skrótów z wymienionych powyżej dziedzin. Przepraszam za mieszanie tematów i brak alfabetyczności w przekroju wszystkich numerów, oczywistym jest że jest to praktycznie niemożliwe. Dlatego alfabetyczność będzie zachowana zawsze tylko w obrębie każdego numeru pisma (bez odniesienia do numerów poprzednich). Skróty w numerze 1 pisma dotyczą telekomunikacji, a dokładniej systemu 5ESS (sprzęt oraz oprogramowanie).
| Skrót |
Znaczenie angielskie |
Znaczenie polskie |
| ADTS |
Automatic Data Test System |
System automatycznej kontroli danych
|
| ATICS |
Automated Toll Integrity Checking System |
System automatycznej kontroli poprawności liczb
|
| BMD |
Batch Mode Display |
Wyświetlacz trybu wsadowego
|
| BMR |
Batch Mode Release |
Wyprowadzenie trybu wsadowego
|
| CIC |
Customer Information Center (AT&T) |
Centrum informacji klientów
|
| DAMT |
Direct Access Mechanize Testing |
Zmechanizowana kontrola bezpośredniego dostępu
|
| DMERT |
Duplex Multiple Environment Real Time |
Dwukierunkowe wielodostępne środowisko czasu rzecz.
|
| DSU |
Digital Service Unit |
Jednostka obsługi cyfrowej
|
| DTAC |
Digital Test Access Connector |
Łącznik dostępu kontroli cyfrowej
|
| IPS |
Integrated Provisioning System |
System zabezpieczenia scalenia
|
| IOP |
Input / Output Procesor |
Procesor wejścia wyjścia
|
| ITNO |
Item Number |
Numer punktu
|
| LU |
Line Unit |
Jednostka linii
|
| MML |
Man Machine Language |
Język człowiek maszyna
|
| MSGNO |
Message Number |
Numer komunikatu
|
| MSGS |
Message Switch |
Przełącznik komunikatu
|
| NCT |
Network Control and Timing |
Sterowanie sieciowe
|
| ODD |
Office Dependent Data |
Biurowe dane zależne
|
| OE |
Office Equipment |
Wyposażenie biurowe
|
| ORDNO |
Service Order Number |
Numer zamówienia, rozkazu
|
| OSS |
Operation Support System |
System wspomagania działania
|
| POVT |
Provisioning On-site Verification Testing |
Kontrola zabezpieczenia miejscowego
|
| RC |
Recent Change |
Ostatnia zmiana
|
| RC/V |
Recent Change and Verify |
Ostatnia zmiana i weryfikacja
|
| RDATE |
Release Date |
Data wznowienia (bazy danych)
|
| RTIME |
Release Time |
Czas wznowienia (bazy danych)
|
| SMPU |
Switch Module Procesor Unit |
Procesor modułu przełączającego
|
| SONET |
Synchronous Optical Network |
Synchroniczna sieć optyczna
|
| STLWS |
Supplementary Trunk and Line Work Station |
Dodatkowa stacja robocza
|
| TFTP |
Television Facility Test Position |
Pozycyjny test telewizyjny
|
| TIMEREL |
Time Release |
Czas wydania
|
| TMS |
Time Multiplexed Switch |
Czasowy przełącznik wielokierunkowy
|
| TRCO |
Trouble Reporting Control Office |
Biuro nadzoru nad niesprawnościami
|
| TSIU |
Time Slot Interchange Unit |
Jednostka wymiany
|
| TU |
Trunk Unit |
Jednostka połączenia dalekosiężnego
|
Wszelkie uwagi co do tego działu lub propozycje mało znanych skrótów proszę słać na adres pegazus@priv1.onet.pl lub proszę o kontakt przez ICQ, mój UIN: 33309999. Dziękuję z góry za wszelkie opinie na powyższy temat.
|
|
|
|
| Łukasz Biegaj |
spis treści |
Pomimo nastania ery wielkich systemów operacyjnych, nadal małe programiki w DOS-ie, są często używane. U większości zaletą jest mała ilość grafiki, i duża szybkość działania. Niektórzy zadają sobie trud wbudowania małych wodotrysków. Chcą zaprezentować tu małe tricki, które można użyć we własnych programach. Są to procedury assemblerowe i Pascalowe, lecz można je łatwo przenieść do języka C, jak i każdego innego pozwalającego na wstawki assemblerowe.
Wyobraźmy sobie taką sytuację: Na porcie LPT1 - modem, na porcie LPT2 - drukarka. Aby wydrukować coś należy przesłać dane na port LPT2. Ale jeżeli nie wbudujemy w nasz program możliwości wyboru portu, może pomóc ten programik:
xor ax,ax
mov ds,ax
mov ax,ds:[408h]
mov bx,ds:[40Ah]
mov ds:[408h],bx
mov ds:[40Ah],ax
mov ax,4C00h
int 21h
Zamienia on adresy portów LPT w pamięci. Oczywiście nic nie stoi na przeszkodzie, aby zamienić LPT1 z COM2. Ale uwaga! Po dwukrotnym uruchomieniu stan powraca do normalnego.
Innym problemem jest używanie kolorowych programów na monitorze mono, co jest dzisiaj już rzadkością. Jeżeli program nie zmienia trybu graficznego, to może pomóc ten program:
mov ax,101Bh
mov bx,0
mov cd,40h
int 10h
mov ah,4Ch
int 21h
UWAGA! ustawienia normalne przywracane są dopiero po zmianie trybu graficznego!
Kolejny problem jest gdy po napisaniu programu, nasz użytkownik uruchamia go na karcie graficznej innej od VGA, np. CGA. Na ekranie kaszka... Jak temu zapobiec? Oto pascalowa funkcja, która nam odpowie, czy posiadamy VGA:
Function IsVGA:boolean;assembler;
asm
xor bx,bx
mov ax,01A00h
int 010h
mov ax,1
cmp bl,7
jnc @@ok
cmp bl,8
jnc @@ok
xor ax,ax
@@ok:
end;
Na koniec dodajmy do naszego programu małą fontannę, miłą niespodziankę, która powinna być uruchamiana w trybie tekstowym:
procedure ClearFX;
var i,vel:word;
begin
i:=0;
vel:=0;
REPEAT
WHILE (Port[$3DA] AND 8) = 8 DO;
asm cli end;
Port[$3d4]:=$c; Port[$3d5]:=HI((i DIV 16)*80);
Port[$3d4]:=$d; Port[$3d5]:=LO((i DIV 16)*80);
WHILE (Port[$3DA] AND 8) <> 8 DO
Port[$3d4]:=8;Port[$3d5]:=(Port[$3d5] AND $E0) OR (i AND $0F);
asm
sti
add vel,10
end;
i := i + (vel shr 4); {ustawienie prędkości}
UNTIL i >= 25*16;
asm
mov ax,0100h {włączenie kursora}
mov cx,0506h
int 10h
end;
asm
mov ax,3h {ustawienie standardowego trybu graficznego}
int 10h
end;
ClrScr;
end;
Sądzę, że takie wodotryski, choć trochę pomóc usprawnić program w DOS-ie.... Wszystkim zainteresowanym podaję adres do korespondencji: biegajl@friko7.onet.pl.
|
|
|
|
| Leszek Chybowski - Pegazus |
spis treści |
Cóż mogę polecić wszystkim żądnym poszerzenia swojej wiedzy w asemblerze? Tym razem podam wszystkim kilka poniższych adresów witryn WWW pozwalających na poszerzenie własnych horyzontów myślowych dotyczących walki z asemblerem i bezpośrednim programowaniem sprzętu.
+ INTEL CORPORATION - http://www.intel.com/ - producent procesorów przedstawia wszelkie informacje na temat swoich produktów od A do Z.
+ Księgarnia internetowa - http://www.informat.com.pl/zbyszek/index.htm - duża ilość literatury, bardzo szybkie dostawy książek do domu (ok. 2 dni).
+ UNDERGROUND - http://www.underground.org.pl/ - programowanie, sprzęt, sieci, hacking, bezpieczeństwo internetu i inne ciekawostki.
+ HYPERREAL - http://hyperreal.art.pl/ - ciekawostki związane z hackingiem, crackingiem i bezpieczeństwem sieci.
+ Binboy home page - http://binboy.koti.com.pl/ - programy i opracowania dot. assemblera
+ Strona domowa Gutz'a - http://mops.uci.agh.edu.pl/~gutz/ - kilka programów w assemblerze oraz odnośników do stron z nim związanych. Dodatkowo, trochę informacji o JavaScript i kilka przykładów jego wykożystania.
+ Strona profesora Włodzisława Ducha - http://www.phys.uni.torun..pl/~duch/ - masa informacji i linków na tematy związane z językami programowania i komputerami i ich zastosowaniami.
+ Superowa Grupa Asmowa - http://sga.koti.com.pl/ - klub zrzeszający miłośników assemblera, zarówno początkujących jak i tych bardziej zaawansowanych.
|
|
|
|