.,2.2015 Katedra Informatyki - Mariusz Wiśniewski
Obecnie jądro mikroprocesora 8086 stanowi niewielką część nowoczesnych mikroprocesorów. Jednakże lista instrukcji oraz sposoby ich działania nie zostały znacząco zmienione. W nowszych typach mikroprocesorów zostało wprowadzone 32-bitowe słowo maszynowe, a co za tym idzie zostały wprowadzone rejestry o takim rozmiarze, oraz odpowiednie tryby adresowania i zarządzania pamięcią.
2. Program uruchomieniowy - obsługa
Celem laboratorium Architektury Systemów Komputerowych jest pokazanie funkcjonalności architektury systemu komputerowego poprzez sprawdzanie sposobu działania instrukcji oraz testowanie szybkości działania programów ilustrujących sposób działania mikroprocesora. Do tego celu zostanie wykorzystany OllyDbg 1.05, który umożliwia pracę krokową programów oraz pozwala na wprowadzanie instrukcji procesora. Debbuger należy uruchomić przez wykonanie polecenia C:\ASK\OLLYDBG.EXE. Następnie należy wybrać opcję menu File\Open i wskazać plik ASK.EXE. Następnie należy kliknąć myszą na przycisk Open. Na ekranie pojawi się następujące okno:
OllyDbg - ask.exe
File View Debug Options Window Help
CPU - main thread, module ask
1 | |||
00401000 |
$ B8 08304000 |
nou EHX,ask.00403000 | |
03401085 |
. 0008 |
HDD BYTE RTF: DS: CEHK1, AL | |
08481807 |
. 0080 |
HDD BYTE PTR DS:CERX],HL | |
0.0481083] |
. 0000 |
HDD BYTE PTR OS:CERKI,HL | |
/ |
004010001 |
. 0080 |
HDD BYTE PTR DS:CERKI,HL |
/ |
8840 i080] |
. 0000 |
HDD BYTE PTR DS:CERKI,HL |
0840180Fj |
. 0800 |
HDD BYTE PTR DS:CERKI,RL | |
80481811 |
. 8000 |
HDD BYTE PTR DS:CERKI,RL | |
8048l013j |
. 0000 |
RDD BYTE PTR DS:CERKI,RL | |
08481015 |
. 0008 |
ROD BYTE PTR DS:CERKI,RL | |
00401017 |
• 0000 |
HDD BYTE PTR DS:CERKI,RL | |
8048 iu19 |
. 0000 |
RDD BYTE PTR DS:CERKI,RL | |
0048181B |
. 0000 |
HDD BYTE PTR DS:CERKI,RL | |
0040i0io |
. 8000 |
HDD BYTE PTR DS:CERKI,RL | |
0848181F |
, 0000 |
HDD BYTE PTR DS:CERKI,HL | |
/ |
08401821 |
. 0000 |
HDD BYTE PTR DS:CERKI,HL |
90401823! |
. 0800 |
RDD BYTE PTR DS:CERKI,RL | |
88401025 |
. 0000 |
HDD BYTE PTR DS:CEfiX],RL | |
00481027 |
. 0000 |
HDD BYTE PTR DS:CERKI,RL | |
V |
0048102'? |
. 0800 |
HDD BYTE PTR DS:CERKI,HL |
um ptc? no rFQvi qi_ |
Reglsters (FPU)
00403000— ElSk . 00403000 EflX—00000000
00 00 00 00 00 00 00 00 00 00 00 00> 00 00 00 00 00 00 00 00 00 00 00 00 00 00 06 00 00 00 00 00 00 00 00 00 00 00 00 00 00 O0 00 00 00 00 00 00 00 00 08 80 08 80 88 00 80 80 80 06 80 80 00 00 00 08 88 08 80 88
Analysirig ask: 0 heuristical procedures, 1 calis
-La |
E5JRaaK3 0812FFCS 0812FFCC |
77ES141R] 44440000 00000003 |
8012FFO0 |
7FFDF080! | |
0012FFD4 |
EFC19CF8 | |
8012FFD8 |
0012FFC8] | |
0812FFDC |
38540505 i | |
0812FFE9 |
FFFFFFFF | |
0812FFE4 |
77E9B2E5 | |
0812FFES |
77E97CE0 | |
0812FFEC |
80080000! | |
8012FFF8 |
000800881 | |
8012FFF4 |
00000008 | |
0812FFF8 |
88481080 | |
00 i 2FFFC |
00000008 |
i sk . <Modu l eEn t i-y Po i rt t
o known funefions
ERK 00000000 EC:: 0012FFB0 EDO 7FFE8304
EBK 7FFDF000 łSF 0012FFC4 EBP 0812FFF0
ESI 00088803 EDI 44440088
EIP 00401008 ask. <Modu leEntr-yPo int->
C 8 ES 8023 32bit 01FFFFFFFF)
F 1 CS 081B 32b it 0(FFFFFFFF)
R 8 SS 0823 32bit 0(FFFFFFFF)
Z 8 OS 0823 32b it 8<FFFFFFFF)
S i FS 0838 32bit 7FFDE880CFFF)
T 8 GS 0006 HULL D S u 8
EFL 00800286 (NO,NB,NE,fl,S,PE,L,LE)
ST0 SPipty -UMORN 31-138 77FS7078 77F34408 ST 1 eripty -??? FFFF 00088000 00143333 3T3 t-Prpty +UNGRM 4854 77FS8R3R 77F57D78
fi fo kerne 132.77E3141R
■ 132'! 77E97CE8
3
co
Paused
Okno Debbugera składa się z czterech podokien. Pierwsze podokno (licząc od strony lewej) zawiera istrukcje programu. Następne podokno zawiera zawartości rejestrów mikroprocesora. Podokna znajdujące się w drugim wierszu zawierają odpowiednio zawartość segmentu pamięci (identyfikowane przez rejestry: CS, DS, ES, FS, GS, SS) oraz zawartość segmentu stosu (identyfikowany przez tylko rejestr SS). Pomiędzy poszczególnymi podoknami można poruszać się przy pomocy klawisza TAB. Zaraz po uruchomieniu w podoknie programu znajdzie się następująca linia: mov eax> liczba, gdzie liczba jest adresem danych programu.
Wprowadzanie instrukcji oraz innych danych
Debbuger umożliwa wprowadzanie kodów programu oraz modyfikację danych, w segmentach pamięci, modyfikację rejestrów oraz stosu. W celu wprowadzania instrukcji lub modyfikacji zawartości innych elementów należy umieścić kursor we właściwym oknie i rozpocząć wprowadzanie danych:
W powyższym przykładzie jest wprowadzana instrukcja mov eax, 100. Naciśnięcie klawisza enter spowoduje wprowadzenie instrukcji do pamięci. Podobnie można wprowadzać dane, wartości rejestrów i znaczników oraz zmieniać zawartość stosu. Należy tu zaznaczyć, że wprowadzane liczby domyślnie są traktowane jako liczby szesnastkowe.
Wykonywanie instrukcji i testowanie szybkości działania poszczególnych instrukcji
Po wprowadzeniu instrukcji możliwe jest wykonanie poszczególnych instrukcji. W tym celu należy naciskać klawisz F8. Wykonana zostanie instrukcja wskazana przez kursor Debbugera. Możliwe jest także wykonanie