Biuletyn Assembler News
Nr 10/99 Magazyn dla wszystkich znających i chcących poznać assembler
[puste miejsce]
LINKI
+ Superowa Grupa Asmowa
+ Strona domowa Gutz'a
+ Binboy home page
+ Inter Corp.
+ HyperReal
+ Underground
+ Księgarnia internetowa
+ Strona profesora Ducha
Spis treści

Wstepniak

    Witamy wszystkich w pierwszym numerze

Redakcja

Temat miesiąca

    Co można znaleźć w pliku OBJ

Robert Kalinowski

Assembler dla wszystkich

    Zieloni czyli bezpieczni dla środowiska

Leszek Chybowski - Pegazus

    DOS żyje

Łukasz Biegaj

Tabele pomocne porgramistom

    Kody klawiatury podstawowej

Leszek Chybowski - Pegazus

    Kody klawiatury rozszerzonej

Leszek Chybowski - Pegazus

    Skróty nie tylko asmowe

Leszek Chybowski - Pegazus

Komputer od środka

    Co siedzi w kompie cz.I

Rafał Wedlarski - oropHacx

Co nowego w sieci

    Ciekawe miejsca w sieci

Leszek Chybowski - Pegazus





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...





Co siedzi w kompie cz.I
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
DECHEX
101Esc272727(0 - 1)
2021 !4933 0 - 120
3032 @50640 - 30 - 121
4043 #5135 0 - 122
5054 $5236 0 - 123
6065 %5337 0 - 124
7076 ^5494300 - 125
8087 &5538 0 - 126
9098 *5642 0 - 127
100A9 (5740 0 - 128
110B0 )4841 0 - 129
120C- _4595310 - 130
130D= +6143 0 - 131
140EBack Sp88127(0 - 14)
150FTab90 - 15(0, 148)(0, 165)
1610Q11381170 - 16
1711W11987230 - 17
1812E1016950 - 18
1913R11482180 - 19
2014T11684200 - 20
2115Y12189250 - 21
2216U11785210 - 22
2317I1057390 - 23
2418O11179150 - 24
2519P11280160 - 25
261A[ {9112327(0, 26)
271B] }9312529(0, 27)
281CEnter131310(0, 28)
291DControl    
301EA976510 - 30
311FS11583190 - 31
3220D1006840 - 32
3321F1027060 - 33
3422G1037170 - 34
3523H1047280 - 35
3624J10674100 - 36
3725K10775110 - 37
3826L10876120 - 38
3927; :5958 (0, 39)
4028' "3934 (0, 40)
4129` ~96126 (0, 41)
422AShift (left)    
432B\ |9212428(0, 43)
442CZ12290260 - 44
452DX12088240 - 45
462EC996730 - 46
472FV11886220 - 47
4830B986620 - 48
4931N11078140 - 49
5032M.10977130 - 50
5133, <4460 (0 - 51)
5234. >4662 (0 - 52)
5335/ ?4763 (0 - 53)
5436Shift (right)    
5537* PrtSc42 0 - 114 
5638Alt    
5739Space Bar32323232
583ACaps Lock    
593BF10 - 590 - 840 - 940 - 104
603CF20 - 600 - 850 - 950 - 105
613DF30 - 610 - 860 - 960 - 106
623EF40 - 620 - 870 - 970 - 107
633FF50 - 630 - 880 - 980 - 108
6440F60 - 640 - 890 - 990 - 109
6541F70 - 650 - 900 - 1000 - 110
6642F80 - 660 - 910 - 1010 - 111
6743F90 - 670 - 920 - 1020 - 112
6844F100 - 680 - 930 - 1030 - 113
  F11(0 - 133)(0 - 135)(0 - 137)(0 - 139)
  F12(0 - 134)(0 - 136)(0 - 138)(0 - 140)
6945NumLock    
7046ScrollLock    
7147Home 7 (grey)0 - 71550 - 119 
72488 (grey)0 - 7256(0, 141) 
7349PgUp 9 (grey)0 - 73570 - 132 
744A- (grey)4545(0 - 142)(0 - 74)
754B4 (grey)0 - 75520 - 115 
764C5 (grey)(0 - 76)53(0 - 143) 
774D6 (grey)0 - 77540 - 116 
784E+ (grey)4343(0 - 144)(0 - 78)
794FEnd 1 (grey)0 - 79490 - 117 
80502 (grey)0 - 8050(0 - 145) 
8151PgDn 3 (grey)0 - 81510 - 118 
8252Ins 0 (grey)0 - 8248(0 - 146) 
8353Del , (grey)0 - 8346(0 - 147) 
8454SysReq    

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)131310(0 - 166)
/ (keypad)4747(0 - 149)(0 - 164)
* (keypad)4242(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.





Skróty nie tylko asmowe
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.





DOS żyje
Ł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.




Ciekawe miejsca w sieci
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.





Assembler News

Numer 10/99 (00); 16 październik 1999


Redakcja:
Leszek Chybowski - red. naczelny, wydawca
Bartosz Oler - zast. red. naczelnego
Rafał Wedlarski - oropHacx - red. Komputer od środka

Artykuły napisali również:
Lukasz Biegaj
Robert Kalinowski

Wykonanie wersji:
HTML - Bartosz Oler
PDF - Leszek Chybowski

Adres redakcji:
http://sga.koti.com.pl/an/
e-mail: liar@box43.gnet.pl


Aby zamówić bezpłatną prenumeratę biuletynu Assembler News, wystarczy wysłać e-mail na adres: liar@box43.gnet.pl z tematem "an+", w treści listu należy podać imię i nazwisko oraz adres e-mail na jaki ma przychodzić magazyn. Można również wypełnić odpowiedni formularz na stronie WWW Assembler News (http://sga.koti.com.pl/an/).
W przypadku rezygnacji z prenumeraty należy postąpić analogicznie z tym wyjątkiem, że jako temat należy podać "na-".

Redakcja zastrzega sobie prawo do adjustacji nadesłanych materiałów.


Wszystkie wymienione nazwy firm i produktów użyte zostały wyłącznie w celach informacyjnych i mogą być znakami zastrzeżonymi firm lub instytucji.