Architektury Komputerów

Transkrypt

Architektury Komputerów
Architektury Komputerów - Laboratorium
Informatyka III rok
!
!
"
#
"$
• Logiczna budowa i organizacja procesora 8086.
• #
%
&
• Wiedza zdobyta na przedmiotach z Podstaw Informatyki.
' $
(
&
+
+ ,+
"!
+
+&
+ &
+ ,+
+
"!
./0
) *
&-
)
"!
)
)
!
)*
$
#
Komputer PC z systemem DOS oraz kompilatorem Asemblera.
Literatura
[1] Piotr Metzger - Anatomia PC.
[2] http://www.emu8086.com/assembly_language_tutorial_assembler_reference/asm_tutorial_01.html
[3] http://www.programmingtutorials.com/assembly.aspx
[4] http://www.emu8086.com/assembly_language_tutorial_assembler_reference/8086_instruction_set.html
[5] http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vcmasm/html/vclrf_masm_topicalcrossreferencefordirectives.asp
1
+
$
Wprowadzenie
(-%
&
% ) %
instrukcji maszynowych konkretnego procesora, dla którego tworzony program jest
*
, %
%
)
+
) (&
)
. (
"
rozkazów danego procesora [4]. Oprócz rozkazów maszynowych, do dyspozycji mamy
&
123
!
! )
którego owe programy piszemy. W naszym przypadku dotyczy to procesora zgodnego ze
%
$
4
-
$
rejestry segmentowe: CS, DS, ES i SS
rejestry robocze: AX, BX, CX, DX, BP
rejestry indeksowe: SI i DI
rejestry specjalne: IP, SP oraz Rejestr Znaczników
i jednostka arytmetyczno-logiczna
2
Do generowania kodu wynikowego na podstawie programu zapisanego w pliku tekstowym o
nazwie z rozszerzeniem ".
5 (*
6
link.exe).
#
-$
•
0
!
nazwie np. program1.asm
!
• .
ml
•
.
7& (
5
6 5$
plik
!
link
5
6 5$
plik
- )
)
-%
plik z programem wynikowym o nazwie "plik.exe".
#
(
"
link.exe, linker jest uruchamiany automatycznie.
8-
(
•
z segmentu kodu -
&
•
z segmentu danych -
&
•
z segmentu stosu &
!
)
&
)
)
%
"$
)
(
9
(
&
-$
DATA1
DATA1
segment
ends
CODE1
CODE1
segment
ends
STOS1
STOS1
segment STACK
ends
6
END START
3
(
(
%
- %
$
DATA1 segment
txt1 db
DATA1 ends
CODE1
segment
ASSUME cs:CODE1, ds:DATA1, ss:STOS1
START:
;inicjalizacja stosu
mov
ax, seg STOS1
mov
ss,ax
mov
sp,offset top
;wypisane komunikatu na ekranie komunikatu
mov
ax,seg txt1
mov
ds,ax
mov
dx,offset txt1
mov
ah,9
int
21h
;przerwanie DOS - wypisanie komunikatu
mov
int
CODE1
; Przerwanie DOS - koniec programu
ends
STOS1
top
STOS1
ax,4c00h
21h
dw
dw
segment STACK
256 dup(?)
?
ends
!
END START
#
). : +
.;
(
(
tekstowa przeznaczona do wydruku na ekranie. W segmencie stosu STOS1 zadeklarowano
)(
$5 5 #
/.<
00=' <
%-% %
4
0: >:
?
%
+
&
%
$5To jest napis! :)5 4
./0
@)
A &
B ) 9
./0 #
)
- )
)+
&
"
' /C
Np. Instrukcja:
mov
"!
ax,4c00h
% B
)
*
4
, A
8-
9
%+
!
% <4.
&
!
;
%
)
)
(
DATA1
txt1
DATA1
&(
+
&-
)
DD
)
-
?
#
!
&
segment
db
ends
CODE1
segment
ASSUME cs:CODE1, ds:DATA1, ss:STOS1
START:
;inicjalizacja stosu
mov
ax,seg STOS1
mov
ss,ax
mov
sp,offset top
call
call
napis
napis
mov
int
ax,4c00h
21h
"
#!
"
# "
"
#!
; Przerwanie DOS - koniec programu
;podprogram napis
napis: mov
ax,seg txt1
mov
ds,ax
mov
dx,offset txt1
mov
ah,9
int
21h
ret
CODE1
ends
STOS1
segment STACK
dw
256 dup(?)
dw
?
ends
top
STOS1
!
END START
E
)
"!
!
D//
takiej instrukcji w programie:
)
/
%
5
)
"+
(
-
DATA1
txt1
DATA1
segment
db
ends
CODE1
segment
ASSUME cs:CODE1, ds:DATA1, ss:STOS1
START:
;inicjalizacja stosu
mov
ax,seg STOS1
mov
ss,ax
mov
sp,offset top
mov
cx,10
$
petla:
call
pop
loop
push cx
napis
cx
petla
mov
int
ax,4c00h
21h
"
#
%&
'
#!
petla"
%& ()
; Przerwanie DOS - koniec programu
;podprogram napis
napis: mov
ax,seg txt1
mov
ds,ax
mov
dx,offset txt1
mov
ah,9
int
21h
ret
CODE1
ends
STOS1
segment STACK
dw
256 dup(?)
dw
?
ends
top
STOS1
!
END START
-
"
A
4
)
"
% /
6
!
$5:
=0G
(
F$,5 >
%
" H %
1.
"
2.
!+
!
!
)
!
?
(
"
*
&-
,
3. ' %
)
tekst1
tekst2
db
db
)
& +
$
"
0000", 10, 13, '$'
"1111", 10, 13, '$'
!
+ &
- % "!$
%
--
D// +
0000
0000
0000
1111
0000
0000
0000
1111
0000
0000
0000
1111
4.
!
# I J0KL IM><+
D+
-!
!
(
%
*
,
mov
call
-
%
?
(&
% $
&
al,3
wypisz_cyfre
(
!
$
Cyfra 3.
.
0 JJ
"
5.
-
!
.
"
- !?
.D
"!
+ &
"
- !?
0 JJ
@
@G
(
@G M
"
7
D

Podobne dokumenty