Wykład 1

Literatura:

  1. Abel P.: Programowanie Asembler IBM PC. RM, Warszawa 2004
  2. Kruk S.: Asembler wykłady i ćwiczenia, MIKOM Warszawa 2003
  3. Wróbel A. i inni: Asembler Ćwiczenia praktyczne, HELION Gliwice 2002

Generacje mikroprocesorów:

  • Intel 8008 — pierwsza generacja mikroprocesorów 1970
  • Intel 8080 — druga generacja mikroprocesorów 1974
  • Intel 8086 — 1978 | trzecia
  • Intel 8088 — 1981 | generacja
  • 80286
  • 80386
  • 80486
  • Pentium
  • Celeron

język maszynowy != język wewnętrzny (asemblerowy)

Poziomy programowania:

  • język maszynowy (zera i jedynki)
  • język niskiego poziomu (asemblerowy, wewnętrzny, mnemoniki)
  • języki wysokiego poziomu (C, C++, Visual Basic)

Zalety asemblera:

  • da sie przejżyście programować,
  • przejrzyst erelacje wejscia wyjscia,
  • powstaje szybki program zajmujący mało pamięci,
  • umożliwia wykonanie trudnych zadań technicznych,

bit — najmniejsza jednostka informacji (przyjmuje wartosci 0|1) ang. Binary Digit
bajt — 8 bitów
słowo dwóbajtowe — 16-bitowy (2-bajtowy) element danych
słowo podwójne — 4-bajtowy element danych
słowo poczwórne — 8-bajtowe

Bajt jest nieprzekłamany jeśli liczba jedynek jest nieparzysta (razem z bitem parzystości).
01001000 1 — nieprzekłamany bajt
00100101 1 — przekłamany bajt

Numeracja bitów:

litera A 0 1 0 0 0 0 0 1
numeracja bitów 7 6 5 4 3 2 1 0

Jednostki:

  • bit (b) 1 bit
  • bajt (B) 8 bitów
  • kilobajt (kB) 1024 bajtów
  • megabajt (MB)1024 kilobajtów

System dwujkowy (binarny):

  1. podstawa systemu (2)
  2. zbiór cyfr tego systemu (0,1)

System dziesiętny (decymalny):

  1. podstawa systemu (10)
  2. zbiór cyfr tego systemu (0..10)

Arytmetyka liczb dwójkowych

  • dodawanie
  • liczby ujemne (uzupełnienie dwójkowe patrz kod U2)

System szestnastkowy (heksadecymalny)

  1. podstawa systemu (16)
  2. zbiór cyfr tego systemu (0..9A..F)

010110010011010110101001110011102 = 5935A9CE16

0101 1001 0011 0101 1010 1001 1100 1110
5 9 3 5 A 9 C E

Arytmetyka szestnastkowa:
716 + 316 = A16
616 + 716 = D16
F16 + F16 = 1E16
FF16 + 116 = 10016

kod ASCII: ang. American Standard Code for Information Interchange kod dla danych liczbowych alfanumerycznych

Adresowanie danych w pamięci odbywa się po bajtach
np.: 052916 <— adres jakiegoś bajtu

FFAA - słowo dwujkowe

FF AA
bajt starszy bajt młodszy

Pamięć operacyjna

część górna część dolna
pamięć operacyjna FF AA
adres 4A2616 4A2716

Rodzaje adresów:

  • adres bezwzględny np. 4A2616
  • adres w postaci segment:przesunięcie(offset)

Segmenty dotyczą pamięci operacyjnej — w trybie podstawowy (rzeczywisty) są 3:

  • segment kodu — ang. Code Segment CS
  • segment danych — ang. Data Segment DS
  • segment stosu — ang. Stack Segment SS

granica akapitu: lokacja o adresie bez reszty podzielna przez 1610, (tj. 1016)
np. 4A27
16,, — 16-bit, ale szyna jest 20-bitowa (4 ostatnie bity to 00002)
FF016 / 1016 = FF16

Segmenty dodatkowe w bardziej zaawansowanych mikroprocesorach:

  • ES ang. Extra Segment
  • FS
  • GS

Przesunięcie w trybie rzeczywistym jest na dwóch bajtach. Minimalne przesunięcie 016 a maksymalne FFFF16 (6553510).

Jak obliczyć adres bezwzględny mając adres segmentu i offsetu.
np. DS 038E016 a ofset 03216
038E016 + 03216 = 0391216 (adres bezwzględny)

Rejestry:

  • uniwersalne,
  • wskaźnikowe,
  • segmentowe — tu są adresy segmentów (czyli ich początek) rejestr 16-bitowy (CS DS SS — to nie to samo co segmenty).
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License