Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika...
-
Upload
gabriella-hardy -
Category
Documents
-
view
226 -
download
1
Transcript of Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika...
![Page 1: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/1.jpg)
Riistvarapõhine programmeerimine
Loeng 8KümnendaritmeetikaMitmekordse täpsusega aritmeetikaMakrodTingimuslik assembleerimine
![Page 2: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/2.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
2
Kümnendaritmeetika
Kümnend-andmete formaadid
Liitmine, lahutamine, korrutamine
Jagamine
![Page 3: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/3.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
3
Kümnend-andmete formaadid I
Unpacked BCD (Binary coded decimal)1 - 0000 00012 - 0000 0010..............................9 - 0000 100110 - 0000 0001 0000 000025 - 0000 0010 0000 0101
![Page 4: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/4.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
4
Kümnend-andmete formaadid II
Packed BCD (Binary coded decimal)1 - 0000 00012 - 0000 0010..............................9 - 0000 100110 - 0001 000125 - 0010 0101
![Page 5: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/5.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
5
Kümnend-andmete liitmine I
AAA - Unpacked BCD
if ( (al and 0Fh) > 9 or (AuxC =1) ) thenal := al + 6ah := ah + 1AuxC := 1 ;Set auxiliary carryCarry := 1 ; and carry flags.
elseAuxC := 0 ;Clear auxiliary carryCarry := 0 ; and carry flags.
endifal := al and 0Fh
![Page 6: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/6.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
6
Kümnend-andmete liitmine II
To add 9 and 3 as BCDs:
mov ax, 9 ;Load 9 as unpacked BCD
mov bx, 3 ;Load 3 as unpacked BCD
add al, bl ;Add 09h and 03h to get 0Ch
aaa ;Adjust 0Ch in AL to 02h,
;increment AH to 01h,
;set carry.
Result 12 (unpacked BCD in AX)
![Page 7: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/7.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
7
Kümnend-andmete liitmine III
DAA - Packed BCD
if ( (al and 0Fh) > 9 or (AuxC = 1)) then
al := al + 6
AuxC := 1 ;Set Auxiliary carry.
endif
if ( (al > 9Fh) or (Carry = 1)) then
al := al + 60h
Carry := 1 ;Set carry flag.
endif
![Page 8: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/8.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
8
Kümnend-andmete liitmine IV
To add 88 and 33:
Mov ax, 8833h ;Load 88 and 33 as packed BCDs
Add al, ah ;Add 88 and 33 to get 0BBh
Daa ;Adjust 0BBh to 121 (packed BCD:)
Result Cf=1, 21 in AL
![Page 9: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/9.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
9
Kümnend-andmete lahutamine I
AAS - Unpacked BCD
if ( (al and 0Fh) > 9 or (AuxC =1) ) thenal := al - 6ah := ah - 1AuxC := 1 ;Set auxilliary carryCarry := 1 ; and carry flags.
elseAuxC := 0 ;Clear auxilliary carryCarry := 0 ; and carry flags.
endifal := al and 0Fh
![Page 10: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/10.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
10
Kümnend-andmete lahutamine II
To subtract 4 from 13:
Mov ax, 103h ;Load 13 as unpacked BCDMov bx, 4 ;Load 4 as unpacked BCDSub al, bl ;Subtract 4 from 3
;to get FFh (-1)Aas ; Adjust 0FFh in AL to 9,
; decrement AH to 0,;set carry
Result 9 (unpacked BCD in AX)
![Page 11: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/11.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
11
Kümnend-andmete lahutamine III
DAS - Packed BCD
if ( (al and 0Fh) > 9 or (AuxC = 1)) then
al := al - 6
AuxC := 1 ;Set Auxiliary carry.
endif
if ( (al > 9Fh) or (Carry = 1)) then
al := al - 60h
Carry := 1 ;Set carry flag.
endif
![Page 12: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/12.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
12
Kümnend-andmete lahutamine IV
;To subtract 38 from 83:
Mov al, 83h ;Load 83 as packed BCD
Mov ah, 38h ;Load 38 as packed BCDSub al, ah ;Subtract 38 from 83 to get
04Bh
Das ;Adjust 04Bh to 45 (packed BCD:)
Cf=0, 45 in AL
![Page 13: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/13.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
13
Kümnend-andmete korrutamine I
AAM - Unpacked BCD
Assume ax = al * operand8
ah := ax div 10
al := ax mod 10
![Page 14: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/14.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
14
Kümnend-andmete korrutamine II
To multiply 9 times 3:
Mov al, 03h ;Load 3 as unpacked BCDs
Mov ah, 09h ;Load 9 as unpacked BCD
Mul ah ;Multiply 9 and 3 to get 1Bh
Aam ;Adjust 1Bh in AL
Result 27 (unpacked BCD in AX)
![Page 15: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/15.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
15
Kümnend-andmete jagamine I
AAD - Unpacked BCD
Eeldame:
Ax - Jagatav
al := ah*10 + al
ah := 0
![Page 16: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/16.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
16
Kümnend-andmete jagamine II
To divide 25 by 2:
Mov ax, 205h ;Load 25 as unpacked BCD
Mov bl, 2 ;Load as unpacked BCD
Aad ;Adjust 0205h in AX
;to get 19h in AX
Div bl ;Divide by 2 to get quotient
;0Ch in AL remainder 1 in AH
Aam ; Adjust 0Ch in Ax;
Result 12 (unpacked BCD in AX), remainder destroyed
![Page 17: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/17.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
17
Mitmekordse täpsusega aritmeetika
Aritmeetilised käsud Liitmine Lahutamine Võrdlemine Korrutamine
Loogilised käsud Nihkekäsud
![Page 18: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/18.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
18
Aritmeetilised käsud, liitmine I
![Page 19: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/19.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
19
Aritmeetilised käsud, liitmine II
X word ?Y word ?Z word ?
mov ax, Xadd ax, Ymov Z, axmov ax, X+2adc ax, Y+2mov Z+2, ax
![Page 20: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/20.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
20
Aritmeetilised käsud, lahutamine I
var1 word ?
var2 word ?
diff word ?
mov ax, var1
sub ax, var2
mov diff, ax
mov ax, var1+2
sbb ax, var2+2
mov diff+2, ax
![Page 21: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/21.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
21
Aritmeetilised käsud, võrdlemine I
1. Võrdleme vanem bait,
2. Võrdleme ....
3. Võrdleme noorem bait
![Page 22: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/22.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
22
Aritmeetilised käsud, võrdlemine II
Qw1 < Qw2
Mov ax, QW1+4 ;Get H.O. wordcmp ax, QW2+4jg NotLessjl IsLessmov ax, dp QW1+2 ;Fall through to here if H.O.cmp ax, dp QW2 +2 ; words are equal.jl IsLess
NotLess:
.
![Page 23: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/23.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
23
Aritmeetilised käsud, korrutamine I
![Page 24: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/24.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
24
Aritmeetilised käsud, korrutamine II
![Page 25: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/25.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
25
Loogilised käsud, AND
Dest = Source1 AND Source2
mov ax, source1and ax, source2mov dest, axmov ax, source1+2and ax, source2+2mov dest+2, ax
![Page 26: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/26.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
26
Loogilised käsud, OR
Dest = Source1 OR Source2
mov ax, source1or ax, source2mov dest, axmov ax, source1+2or ax, source2+2mov dest+2, ax
![Page 27: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/27.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
27
Nihkekäsud I
1. 0 -> bit 02. Bit 0 kuni 14 -> shift 13. Bit 15 -> Bit 164. Bit 16 kuni 30 -> shift 15. Bit 31 -> Cf
![Page 28: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/28.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
28
Nihkekäsud II
![Page 29: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/29.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
29
Nihkekäsud III
48 bit shift left
shl Operand, 1rcl Operand+2, 1rcl Operand+4, 1
![Page 30: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/30.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
30
Makrod I
Procedural macrosFunctional macrosLooping macros.
![Page 31: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/31.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
31
Makrod II
Makro
. . . .
Kood
. . . .
Makro
. . . .
. . . .
Makro
. . . .
. . . .
Kood
. . . .
. . . .
. . . .
Makro
. . . .
Makro
. . . .
Assembler
![Page 32: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/32.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
32
Makrod III
Procedural macros
name macro {parameter1 {parameter2 {,...}}}
<statements>
endm
![Page 33: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/33.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
33
Makrod IV
COPY macro Dest, Source
mov ax, Source
mov Dest, ax
endm
![Page 34: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/34.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
34
Makrod V
copy Y, X
add Y, 5
mov ax, X
mov Y, ax
add Y, 5
![Page 35: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/35.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
35
Makrod VI
Macro Protseduur
Kordub Ei kordu
Kiir Aeglane
![Page 36: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/36.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
36
Makrod VII
Long jump if equal vale!!!
LJE macro Dest
jne SkipIt
jmp Dest
SkipIt:
endm
![Page 37: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/37.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
37
Makrod VIII
Long jump if equal õige!!!
LJE macro Dest
local SkipIt
jne SkipIt
jmp Dest
SkipIt:
endm
![Page 38: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/38.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
38
Makrod IX
Functional macros
Date macro month, day, yearlocal ValueValue = (month shl 12) or (day shl 7) or yearexitm %Valueendm
DateValue word Date(2, 4, 84)
![Page 39: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/39.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
39
Tingimuslik assembleerimine I
If / Ife Ifdef / Ifndef Ifb / Ifnb
![Page 40: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/40.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
40
Tingimuslik assembleerimine II
if expression
if expression ;!= 0<sequence of statements>
else ;=0, optional<sequence of statements>
endif
![Page 41: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/41.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
41
Tingimuslik assembleerimine III
ife expression
if expression ;= 0<sequence of statements>
else ;!=0, optional<sequence of statements>
endif
![Page 42: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/42.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
42
Tingimuslik assembleerimine IV
Ifdef / Ifndef expression
DEBUG = 0
ifdef DEBUG ;Debug defined
<place debugging statements here>
endif
![Page 43: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/43.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
43
Tingimuslik assembleerimine V
Ifb / Ifnb expression
Blank equ <>
NotBlankequ <not blank>
ifb Blank
<this code will assemble>
endif
ifb NotBlank
<this code will not>
endif
![Page 44: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/44.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
44
Tingimuslik assembleerimine VI
/* comment this out to use the slower C version */
#define LCD_USE_FAST_ASM
. . . .
. . . .
Lcd_demo.h
#ifndef LCD_USE_FAST_ASM
C versioon
. . . .
#else
Assembleri versioon
. . . .
Lcd_driver.c
![Page 45: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/45.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
45
Side kõrgkeeltega I
C -> Assembler Assembler -> C
Erinevad moodulid “Inline assembler”
![Page 46: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/46.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
46
Side kõrgkeeltega II
main()
. . . .
Ass (a, b);
. . . .
C moodul
ass PROC
mov bx, ax
mov cx, dx
. . . .
. . . .
retass ENDP
Assembleri moodul
![Page 47: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/47.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
47
Side kõrgkeeltega III
Power2 PROC mov ax, factor ; Load Arg1 into AX mov cx, 1 ; “1” into CX shl ax, cl ; AX=AX *2 ; Leave return value in AX retPower2 ENDP END
![Page 48: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/48.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
48
Side kõrgkeeltega IV
3*2
#include <stdio.h>
extern int Power2( int factor );void main(){ printf( "3 korda 2 on %d\n", Power2( 3 ) );}
![Page 49: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/49.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
49
Side kõrgkeeltega V
Inline assembler
foo() { /* some c code */
_asm ; some assembler code _endasm;
/* some more c code */ _asm
; some assembler code _endasm ;
/* some more c code */ }
![Page 50: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/50.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
50
Side kõrgkeeltega VIvoid lcd_init(void){ _asm mov b, #LCD_CONFIG_CMD lcall _lcd_command mov b, #LCD_ON_CMD lcall _lcd_command mov b, #LCD_SHIFT_CMD lcall _lcd_command _endasm;}
![Page 51: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/51.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
51
Kokkuvõte I
Pakimata andmete korrektsioonid: AAA liitmine AAS lahutamine AAM korrutamine AAD, AAM jagamine
Pakitud andmete korrektsioonid: DAA liitmine DAS lahutamine
![Page 52: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/52.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
52
Kokkuvõte IIMitmekordse täpsusega aritmeetikaLihtne: Liitmine, lahutamine Võrdlemine
Keeruline: Korrutamine Jagamine
Muud: Loogilised käsud
![Page 53: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/53.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
53
Kokkuvõte III
MacrodProcedural macrosFunctional macrosLooping macros
![Page 54: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/54.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
54
Kokkuvõte IV
Tingimuslik assembleerimine
If / Ife
Ifdef / Ifndef
Ifb / Ifnb
![Page 55: Riistvarapõhine programmeerimine Loeng 8 Kümnendaritmeetika Mitmekordse täpsusega aritmeetika Makrod Tingimuslik assembleerimine.](https://reader030.fdocuments.net/reader030/viewer/2022020106/56649cff5503460f949d1494/html5/thumbnails/55.jpg)
02/07/2004 ID218 Riistvaralähedane programmeerimine
55
Kokkuvõte V
Side kõrgkeelega (C) C
Extern ... Assembler
.Model small, C Proto C ................. Proc C ..................