Upload
keaton-morin
View
54
Download
3
Embed Size (px)
DESCRIPTION
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. Arvuti käsustik II. Kodeerimine – Basic Instruction Encoding. - PowerPoint PPT Presentation
Citation preview
Riistvarapõhine programmeerimine
Loeng 4Arvuti käsustik, aritmeetilised käsud
02/07/2004 ID218 Riistvaralähedane programmeerimine
2
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
3
Arvuti käsustik II
Kodeerimine – Basic Instruction Encoding
02/07/2004 ID218 Riistvaralähedane programmeerimine
4
Arvuti käsustik III
Mov ax, bx
iii = 110 mov reg, regrr = 00 axmmm = 001 bx11000001 = 0C1h
02/07/2004 ID218 Riistvaralähedane programmeerimine
5
Arvuti käsustik IV
Mov ax, [1000]
iii = 110 mov reg, memrr = 00 axmmm = 110 [1000]11000110 00000000 000100000C6h, 00h, 10h
02/07/2004 ID218 Riistvaralähedane programmeerimine
6
Arvuti käsustik V
Kodeerimine – Single Operand Instruction Encoding
02/07/2004 ID218 Riistvaralähedane programmeerimine
7
Arvuti käsustik VI
Kodeerimine – Zero Operand Instruction Encoding
02/07/2004 ID218 Riistvaralähedane programmeerimine
8
Arvuti käsustik VII
Kodeerimine – JUMP Instruction Encoding
02/07/2004 ID218 Riistvaralähedane programmeerimine
9
Signed / Unsigned I
J byte ? Unsigned byte j
K sbyte ? Signed byte k
I db ? Nosigned byte k
02/07/2004 ID218 Riistvaralähedane programmeerimine
10
Signed / unsigned II
Mov j, -5; 0xFBUnsigned j (0 - 255), 251
Mov k, 255; 0xFFSigned k (-128 - 127), -128
02/07/2004 ID218 Riistvaralähedane programmeerimine
11
Flag Register
02/07/2004 ID218 Riistvaralähedane programmeerimine
12
Aritmeetilised käsud Liitmise käsud Lahutamise käsud Korrutamise käsud Jagamise käsud
02/07/2004 ID218 Riistvaralähedane programmeerimine
13
Liitmise käsud I Add A, B Adc A, B Inc A
02/07/2004 ID218 Riistvaralähedane programmeerimine
14
Liitmise käsud II
Add A, B A = A + BLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X
02/07/2004 ID218 Riistvaralähedane programmeerimine
15
Liitmise käsud III
Adc A, B A = A + B + CfLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X
02/07/2004 ID218 Riistvaralähedane programmeerimine
16
Liitmise käsud IV
J:= K + Mmov ax, Kadd ax, Mmov J, ax
Ainult üks mäluoperand Ühe pikkusega operandid
02/07/2004 ID218 Riistvaralähedane programmeerimine
17
Liitmise käsud V
J := K + M + N + Pmov ax, Kadd ax, Madd ax, Nadd ax, Pmov J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
18
Liitmise käsud VI
J := K + Jmov ax, J mov bx, Kadd ax, bxmov J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
19
Liitmise käsud VI
J := K + Jmov ax, J add ax, K mov J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
20
Liitmise käsud VII
J := K + Jmov ax, K add J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
21
Liitumise käsud VIII
add al, 2 ;Two bytes longadd bl, 2 ;Three bytes long add ax, 2 ;Three bytes longadd bx, 2 ;Four bytes long
02/07/2004 ID218 Riistvaralähedane programmeerimine
22
Liitmise käsud IX
Inc A A = A + 1Lipud: Signed UnsignedOf XCf - -Sf X XZf X XAf X XPf X X
02/07/2004 ID218 Riistvaralähedane programmeerimine
23
Lahutamise käsud I Sub A, B Sbb A, B Dec A Cmp A, B Neg A
02/07/2004 ID218 Riistvaralähedane programmeerimine
24
Lahutamise käsud II
Sub A, B A = A - BLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X
02/07/2004 ID218 Riistvaralähedane programmeerimine
25
Lahutamise käsud III
Sbb A, B A = A – B - CfLipud: Signed UnsignedOf XCf XSf X XZf X XAf X XPf X X
02/07/2004 ID218 Riistvaralähedane programmeerimine
26
Lahutamise käsud IV
Dec A A = A - 1Lipud: Signed UnsignedOf XCf - -Sf X XZf X XAf X XPf X X
02/07/2004 ID218 Riistvaralähedane programmeerimine
27
Lahutamise käsud V
J := K – Jmov ax, Ksub J, ax
J = J – K ???
02/07/2004 ID218 Riistvaralähedane programmeerimine
28
Lahutamise käsud VI
J := K – Jmov ax, Ksub ax, Jmov J, ax
J = K – J !!!
02/07/2004 ID218 Riistvaralähedane programmeerimine
29
Lahutamise käsud VII
J := J - (K + M) J:=J – K – M
mov ax, Jsub ax, K ; J:=J - Ksub ax, M ; J:=J - Mmov J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
30
Lahutamise käsud VIII
J := J - (K + M)
mov ax, Kadd ax, M ; K + Msub J, ax ; J:= J – (K + M)
02/07/2004 ID218 Riistvaralähedane programmeerimine
31
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
32
Lahutamise käsud XA B S O------ ------ - -FFFF (-1) - FFFE (-2) 0
08000 (-32768) - 0001 (1) 0 1FFFE (-2) - FFFF (-1) 1
07FFF (32767) - FFFF (-1) 1
1
02/07/2004 ID218 Riistvaralähedane programmeerimine
33
Lahutamise käsud XI
Neg A A = 0 - ALipud:Of XCf XSf XZf XAf XPf X
02/07/2004 ID218 Riistvaralähedane programmeerimine
34
Lahutamise käsud XII
J := -Kmov ax, Kneg axmov J, ax
J := - Jneg J
02/07/2004 ID218 Riistvaralähedane programmeerimine
35
Korrutamise käsud I
Unsigned Mul reg Mul mem
Signed Imulreg Imulmem
02/07/2004 ID218 Riistvaralähedane programmeerimine
36
Korrutamise käsud II
mul operand8imul operand8
ax := al * operand8
02/07/2004 ID218 Riistvaralähedane programmeerimine
37
Korrutamise käsud III
mul operand16imul operand16
dx:ax := ax * operand16
02/07/2004 ID218 Riistvaralähedane programmeerimine
38
Korrutamise käsud IV
Lipud:Of XCf XAf X ; ei ole tähtisPf X ; ei ole tähtisSf X ; ei ole tähtisZf X ; ei ole tähtis
02/07/2004 ID218 Riistvaralähedane programmeerimine
39
Jagamise käsud I
Unsigned Div reg Div mem
Signed Idiv reg Idiv mem
02/07/2004 ID218 Riistvaralähedane programmeerimine
40
Jagamise käsud II
div operand8idiv operand8
al := ax / operand8ah := jääk
02/07/2004 ID218 Riistvaralähedane programmeerimine
41
Jagamise käsud III
div operand16idiv operand16
ax := dx:ax / operand16dx := jääk
02/07/2004 ID218 Riistvaralähedane programmeerimine
42
Jagamise käsud IVLipud:Af, Cf, Of, Pf, Sf, Zf - ei oma tähtsust
Hoiatus:Jagatav => 2 * (Jagaja)Jagaja != 0 (Arvuti mõistes)Jagatis => (Jagatav) / 20800h : 2 = 0400h ???
02/07/2004 ID218 Riistvaralähedane programmeerimine
43
Jagamise käsud V
J := K / M (unsigned)mov ax, K ;Lugejamov dx, 0 ;Pikk lugeja
; < Jagaja != 0 >div M ;Jagaminemov J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
44
Jagamise käsud VI
J := K / M (signed)mov ax, K ;Lugejacwd ;Pikk lugeja
; < Jagaja != 0 >idiv M ;Jagaminemov J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
45
Jagamise käsud VII
J := (K*M)/Pmov ax, K imul M ; 32-bit korrutisidiv P ; 32-bit jagatavmov J, ax
02/07/2004 ID218 Riistvaralähedane programmeerimine
46
Kokkuvõte I
Aritmeetilised käsud: Liitmine Lahutamine Korrutamine Jagamine
02/07/2004 ID218 Riistvaralähedane programmeerimine
47
Kokkuvõte II
Aritmeetilised käsud: Signed operand Unsigned operand
8-bit operand 16-bit operand