Riistvarapõhine programmeerimine Loeng 4 Arvuti käsustik, aritmeetilised käsud Arvuti käsustik I Aritmeetilised käsud  Loogilised käsud  Andmelaadimise käsud  Sisend/väljund käsud  Siirdekäsud  Stringikäsud  Muud käsud  02/07/2004 ID218 Riistvaralähedane programmeerimine Arvuti käsustik II Kodeerimine.

Download Report

Transcript Riistvarapõhine programmeerimine Loeng 4 Arvuti käsustik, aritmeetilised käsud Arvuti käsustik I Aritmeetilised käsud  Loogilised käsud  Andmelaadimise käsud  Sisend/väljund käsud  Siirdekäsud  Stringikäsud  Muud käsud  02/07/2004 ID218 Riistvaralähedane programmeerimine Arvuti käsustik II Kodeerimine.

Riistvarapõhine
programmeerimine
Loeng 4
Arvuti käsustik,
aritmeetilised käsud
Arvuti käsustik I
Aritmeetilised käsud
 Loogilised käsud
 Andmelaadimise käsud
 Sisend/väljund käsud
 Siirdekäsud
 Stringikäsud
 Muud käsud

02/07/2004
ID218 Riistvaralähedane
programmeerimine
2
Arvuti käsustik II
Kodeerimine – Basic Instruction Encoding
02/07/2004
ID218 Riistvaralähedane
programmeerimine
3
Arvuti käsustik III
Mov
ax, bx
iii
=
rr
=
mmm
=
11000001
02/07/2004
110
mov
00
ax
001
bx
= 0C1h
ID218 Riistvaralähedane
programmeerimine
reg, reg
4
Arvuti käsustik IV
Mov
ax, [1000]
iii
= 110
rr
= 00
mmm
= 110
11000110 00000000
0C6h, 00h, 10h
02/07/2004
mov reg, mem
ax
[1000]
00010000
ID218 Riistvaralähedane
programmeerimine
5
Arvuti käsustik V
Kodeerimine – Single Operand Instruction Encoding
02/07/2004
ID218 Riistvaralähedane
programmeerimine
6
Arvuti käsustik VI
Kodeerimine – Zero Operand Instruction Encoding
02/07/2004
ID218 Riistvaralähedane
programmeerimine
7
Arvuti käsustik VII
Kodeerimine – JUMP Instruction Encoding
02/07/2004
ID218 Riistvaralähedane
programmeerimine
8
Signed / Unsigned I
J
K
byte
sbyte
?
?
Unsigned byte j
Signed byte k
I
db
?
Nosigned byte k
02/07/2004
ID218 Riistvaralähedane
programmeerimine
9
Signed / unsigned II
Mov
j, -5;
0xFB
Unsigned j (0 - 255), 251
Mov
k, 255;
0xFF
Signed k (-128 - 127), -128
02/07/2004
ID218 Riistvaralähedane
programmeerimine
10
Flag Register
02/07/2004
ID218 Riistvaralähedane
programmeerimine
11
Aritmeetilised käsud
Liitmise käsud
 Lahutamise käsud
 Korrutamise käsud
 Jagamise käsud

02/07/2004
ID218 Riistvaralähedane
programmeerimine
12
Liitmise käsud I
Add
 Adc
 Inc

02/07/2004
A, B
A, B
A
ID218 Riistvaralähedane
programmeerimine
13
Liitmise käsud II
Add A, B
Lipud:
Signed
Of
X
Cf
Sf
X
Zf
X
Af
X
Pf
X
02/07/2004
A=A+B
Unsigned
ID218 Riistvaralähedane
programmeerimine
X
X
X
X
X
14
Liitmise käsud III
Adc A, B
Lipud:
Signed
Of
X
Cf
Sf
X
Zf
X
Af
X
Pf
X
02/07/2004
A = A + B + Cf
Unsigned
ID218 Riistvaralähedane
programmeerimine
X
X
X
X
X
15
Liitmise käsud IV
J:= K + M
mov
add
mov
ax, K
ax, M
J, ax
Ainult üks mäluoperand
 Ühe pikkusega operandid

02/07/2004
ID218 Riistvaralähedane
programmeerimine
16
Liitmise käsud V
J := K + M + N + P
mov
ax, K
add
ax, M
add
ax, N
add
ax, P
mov
J, ax
02/07/2004
ID218 Riistvaralähedane
programmeerimine
17
Liitmise käsud VI
J := K + J
mov
ax, J
mov
bx, K
add
ax, bx
mov
J, ax
02/07/2004
ID218 Riistvaralähedane
programmeerimine
18
Liitmise käsud VI
J := K + J
mov
ax, J
add
ax, K
mov
J, ax
02/07/2004
ID218 Riistvaralähedane
programmeerimine
19
Liitmise käsud VII
J := K + J
mov
ax, K
add
J, ax
02/07/2004
ID218 Riistvaralähedane
programmeerimine
20
Liitumise käsud VIII
add
add
al, 2
bl, 2
;Two bytes long
;Three bytes long
add
add
ax, 2
bx, 2
;Three bytes long
;Four bytes long
02/07/2004
ID218 Riistvaralähedane
programmeerimine
21
Liitmise käsud IX
Inc A
Lipud:
Of
Cf
Sf
Zf
Af
Pf
02/07/2004
Signed
X
X
X
X
X
A=A+1
Unsigned
ID218 Riistvaralähedane
programmeerimine
X
X
X
X
22
Lahutamise käsud I
Sub
 Sbb
 Dec
 Cmp
 Neg

02/07/2004
A, B
A, B
A
A, B
A
ID218 Riistvaralähedane
programmeerimine
23
Lahutamise käsud II
Sub
Lipud:
Of
Cf
Sf
Zf
Af
Pf
02/07/2004
A, B
Signed
X
A=A-B
Unsigned
X
X
X
X
X
X
X
X
X
ID218 Riistvaralähedane
programmeerimine
24
Lahutamise käsud III
Sbb
Lipud:
Of
Cf
Sf
Zf
Af
Pf
02/07/2004
A, B
Signed
X
A = A – B - Cf
Unsigned
X
X
X
X
X
X
X
X
X
ID218 Riistvaralähedane
programmeerimine
25
Lahutamise käsud IV
Dec
Lipud:
Of
Cf
Sf
Zf
Af
Pf
02/07/2004
A
Signed
X
X
X
X
X
A=A-1
Unsigned
ID218 Riistvaralähedane
programmeerimine
X
X
X
X
26
Lahutamise käsud V
J := K – J
mov
ax, K
sub
J, ax
J = J – K ???
02/07/2004
ID218 Riistvaralähedane
programmeerimine
27
Lahutamise käsud VI
J := K – J
mov
ax, K
sub
ax, J
mov
J, ax
J = K – J !!!
02/07/2004
ID218 Riistvaralähedane
programmeerimine
28
Lahutamise käsud VII
J := J - (K + M)
J:=J – K – M
mov
sub
sub
mov
02/07/2004
ax, J
ax, K
ax, M
J, ax
; J:=J - K
; J:=J - M
ID218 Riistvaralähedane
programmeerimine
29
Lahutamise käsud VIII
J := J - (K + M)
mov
add
sub
02/07/2004
ax, K
ax, M
J, ax
; K + M
; J:= J – (K + M)
ID218 Riistvaralähedane
programmeerimine
30
Lahutamise käsud IX
Cmp
A, B
A – B => FR
If ((Sf=0)&(Of=1)) or ((Sf=1)&(Of=0)) then A < B
If ((Sf=0)&(Of=0)) or ((Sf=1)&(Of=1)) then A > B
02/07/2004
ID218 Riistvaralähedane
programmeerimine
31
Lahutamise käsud X
A
------ ------ - FFFF (-1)
8000 (-32768) FFFE (-2)
7FFF (32767)
-
02/07/2004
B
FFFE
0001
FFFF
FFFF
(-2)
(1)
(-1)
(-1)
ID218 Riistvaralähedane
programmeerimine
S
O
0
0
1
1
0
1
0
1
32
Lahutamise käsud XI
Neg
Lipud:
Of
Cf
Sf
Zf
Af
Pf
02/07/2004
A
A=0-A
X
X
X
X
X
X
ID218 Riistvaralähedane
programmeerimine
33
Lahutamise käsud XII
J := -K
mov
ax, K
neg
ax
mov
J, ax
J := - J
neg
J
02/07/2004
ID218 Riistvaralähedane
programmeerimine
34
Korrutamise käsud I
Unsigned
 Mul
reg
 Mul
mem
Signed
 Imul
 Imul
02/07/2004
reg
mem
ID218 Riistvaralähedane
programmeerimine
35
Korrutamise käsud II
mul
imul
operand8
operand8
ax := al * operand8
02/07/2004
ID218 Riistvaralähedane
programmeerimine
36
Korrutamise käsud III
mul
imul
operand16
operand16
dx:ax := ax * operand16
02/07/2004
ID218 Riistvaralähedane
programmeerimine
37
Korrutamise käsud IV
Lipud:
Of
Cf
Af
Pf
Sf
Zf
02/07/2004
X
X
X
X
X
X
;
;
;
;
ei
ei
ei
ei
ole
ole
ole
ole
ID218 Riistvaralähedane
programmeerimine
tähtis
tähtis
tähtis
tähtis
38
Jagamise käsud I
Unsigned
 Div
reg
 Div
mem
Signed
 Idiv
 Idiv
02/07/2004
reg
mem
ID218 Riistvaralähedane
programmeerimine
39
Jagamise käsud II
div
idiv
operand8
operand8
al := ax /
ah := jääk
02/07/2004
operand8
ID218 Riistvaralähedane
programmeerimine
40
Jagamise käsud III
div
idiv
operand16
operand16
ax := dx:ax
dx := jääk
02/07/2004
/
operand16
ID218 Riistvaralähedane
programmeerimine
41
Jagamise käsud IV
Lipud:
Af, Cf, Of, Pf, Sf, Zf
tähtsust
-
ei oma
Hoiatus:
Jagatav => 2 * (Jagaja)
Jagaja
!= 0
(Arvuti mõistes)
Jagatis => (Jagatav) / 2
0800h : 2 = 0400h ???
02/07/2004
ID218 Riistvaralähedane
programmeerimine
42
Jagamise käsud V
J := K / M
(unsigned)
mov
ax, K
;Lugeja
mov
dx, 0
;Pikk lugeja
; < Jagaja != 0 >
div
M
;Jagamine
mov
J, ax
02/07/2004
ID218 Riistvaralähedane
programmeerimine
43
Jagamise käsud VI
J := K / M
(signed)
mov
ax, K
;Lugeja
cwd
;Pikk lugeja
; < Jagaja != 0 >
idiv M
;Jagamine
mov
J, ax
02/07/2004
ID218 Riistvaralähedane
programmeerimine
44
Jagamise käsud VII
J := (K*M)/P
mov
ax, K
imul
M
; 32-bit korrutis
idiv
P
; 32-bit jagatav
mov
J, ax
02/07/2004
ID218 Riistvaralähedane
programmeerimine
45
Kokkuvõte I
Aritmeetilised käsud:
 Liitmine
 Lahutamine
 Korrutamine
 Jagamine
02/07/2004
ID218 Riistvaralähedane
programmeerimine
46
Kokkuvõte II
Aritmeetilised käsud:
 Signed operand
 Unsigned operand
8-bit operand
 16-bit operand

02/07/2004
ID218 Riistvaralähedane
programmeerimine
47