Microcontroller Fundamentals & Programming Arithmetic Instructions.
-
Upload
joseph-bates -
Category
Documents
-
view
227 -
download
1
Transcript of Microcontroller Fundamentals & Programming Arithmetic Instructions.
![Page 1: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/1.jpg)
Microcontroller Fundamentals &
Programming
Arithmetic Instructions
![Page 2: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/2.jpg)
2
Arithmetic InstructionsThe 68HC11 Arithmetic Instructions are :
ADD, ADD with Carry ,
SUBTRACT, SUBTRACT with Carry,
DECIMAL ADJUST Instruction,
INCREMENT, DECREMENT,
COMPARE,
MULTIPLICATION, and
DIVISION
![Page 3: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/3.jpg)
3
Example:
ADDA , ADDB , ADDD
Add contents in accumulator with contents in memory.
The result after addition will be placed in accumulator.
The flag bits in CCR will change according to the result of the addition.
112335
Memory
ACC
+
Result
Goes Back
ADD Instructions
xx
![Page 4: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/4.jpg)
4
LDAA #$29 ACCA = 0 0 1 0 1 0 0 1
ADDA #$3A 3A = 0 0 1 1 1 0 1 0 +
Result: ACCA = $63 Binary= 0 1 1 0 0 0 1 1
Hex = 6 3The flag bits in the CCR change as follow:
H = 1 A “1” is carried over from bit-3 to bit-4
N = 0 Answer or result is positive
Z = 0 The result is not zero
V = 0 No overflow. Answer is correct.
C = 0 No carry.
Example: ADD Instruction
![Page 5: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/5.jpg)
5
Example:
ADCA , ADCB
Add the contents in accumulator with contents in memory and with the C-bit in the CCR.
ACC
Result
Memory
112335
+
C-bit
ADD with Carry Instructions
CCR
xx
![Page 6: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/6.jpg)
6
The flag bits in the CCR change as follow: H = 1 A “1” is carried over from bit-3 to bit-4 N = 0 Answer or result is positive Z = 0 The result is not zero V = 0 No overflow. Answer is correct. C = 0 No carry.
SEC ; Set Carry to “1”
LDAA #$29 ; ACCA = 0 0 1 0 1 0 0 1
ADCA #$3A ; $3A = 0 0 1 1 1 0 1 0 +
C-bit = 0 0 0 0 0 0 0 1 +
Result: ACCA = $64 Binary = 0 1 1 0 0 1 0 0
Hex. = 6 4
Example: ADD with CARRY instruction
![Page 7: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/7.jpg)
7
The flag bits in the CCR change as follow:
H = X Not use.
N = 0 Answer or result is positive.
Z = 0 The result is not zero
V = 0 Answer is correct.
C = 0 No carry.
LDD #$2299 ACCD = 0010 0010 1001 1001
ADDD #$0800 ;$0800 = 0000 1000 0000 0000 +
Result: ACCD = $2A99 ;Binary = 0010 1010 1001 1001
Hex. = 2 A 9 9
Example: ADDD (Add 16-bit values)
![Page 8: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/8.jpg)
8
Example:
SUBA , SUBB , SUBD
Subtract memory contents from the accumulator.
The result after subtraction placed in accumulator.
Flag bits in CCR will change according to the result of subtraction.
112335
Memory
ACC
Result
_
SUBTRACT Instructions
xx
![Page 9: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/9.jpg)
9
The flag bits in the CCR change as follow: H = X Not use. N = 1 Answer or result is negative Z = 0 The result is not zero V = 0 Answer is correct. C = 1 $3A larger than $29, so a borrow is required.
C = 1LDAA #$29 ; ACCA = 0 0 1 0 1 0 0
1 SUBA #$3A ; $3A = 0 0 1 1 1 0 1 0 - Result: ACCA = $EF Binary = 1 1 1 0 1 1 1 1
Hex. = E F
Example: SUBTRACT instruction
![Page 10: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/10.jpg)
10
Example:
SBCA , SBCB
Subtract memory contents and the C-bit from accumulator.
The result after the subtraction will be placed in accumulator.
The flag bits in CCR will change according to the result of subtraction.
112335
MemoryACC
_
C-bit
Result
Subtract with Carry Instructions
xx
CCR
![Page 11: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/11.jpg)
11
The flag bits in the CCR change as follow:
H = X Not use N = 0 Answer or result is positive Z = 0 The result is not zero V = 0 No overflow. Answer is correct. C = 0 No borrow..
SEC ; Set Carry to “1” LDAA #$3A ; ACCA = 0 0 1 1 1 0 1 0 SBCA #$23 ;$23 = 0 0 1 0 0 0 1 1 -
C-bit = 0 0 0 0 0 0 0 1 -Result:ACCA = $16 Binary = 0 0 0 1 0 1 1 0
Hex. = 1 6
Example: Subtract with Carry Instruction
![Page 12: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/12.jpg)
12
Example: DAA
DAA instruction adjusts accumulator A contents immediately following an ADDA or ADCA only.
DAA will adjust the result to BCD format.
LDAA #$29 ; ACCA = $2 9
ADDA #$3A ; $3A = $3 A +
DAA ; before DAA = $6 3
(6) +
Result: ACCA = $69 ; after DAA = $6 9
Decimal Adjusted Instruction
![Page 13: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/13.jpg)
13
Example: DAA
Rule for BCD addition
If result is equal or less than 9 and a carry is not produced, then answer is correct. (No adjustment needed)
If result is greater than 9 or a carry is produced, a correction of +6 must be added to the sum.
Decimal Adjusted Instruction (Rule)
![Page 14: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/14.jpg)
14
Examples of DAA (1)Example 1: Equal or less than 9 and NO carry
LDAA #$25 ; ACCA = $2 5 ADDA#$33 ; $33 = $3 3 +
DAA ; before DAA = $5 8 Result: ACCA = $58 ; after DAA = $5 8
![Page 15: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/15.jpg)
15
Examples of DAA (2)Example 2: Greater than 9 and NO carry
LDAA #$25 ; ACCA = $2 5 ADDA#$36 ; $36 = $3 6 +
DAA ; before DAA = $5 B 6 +Result: ACCA = $61 ; after DAA = $6 1
![Page 16: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/16.jpg)
16
Examples of DAA (3)Example 3: Greater than 9 and a carry
LDAA #$66 ; ACCA = $6 6 ADDA#$3A ; $3A = $3 A +
DAA ; before DAA = $A 0 6 6 +Result: ACCA = $06 ; after DAA = $10 6
C-bit =1
![Page 17: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/17.jpg)
17
Example:
INC , INCA , INCB , INX , INY
• After executing the increment instruction a value of one is added to the memory or registers.
• Flag bits N, Z, V will be affected.
Increment Instructions
![Page 18: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/18.jpg)
18
LDX #$2000 ; IX = $2000
LDAA #$20 ; ACCA = $20
LDAB #$35 ; ACCB = $35
STAA $1200 ; Memory ($1200) = $20
INCA ; ACCA = $20 + $01 = $21
INCB ; ACCB = $35 + $01 = $36
INC $1200 ; Memory ($1200) = $20+$01=$21
INX ; IX = $2000+$01 = $2001
WAI
Examples: INCREMENT instructions
![Page 19: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/19.jpg)
19
Example:
DEC , DECA , DECB , DEX , DEY
• After executing the decrement instruction a value of one is subtracted from the memory or registers.
• Flag bits N, Z, V will be affected.
Decrement Instructions
![Page 20: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/20.jpg)
20
LDX #$205A ; IX = $205A
LDAA #$2E ; ACCA = $2E
LDAB #$89 ; ACCB = $89
STAB $1500 ; Memory ($1500) = $89
DECA ; ACCA = $2E - $01 = $2D
DECB ; ACCB = $89 - $01 = $88
DEC $1500 ; Memory ($1500)= $89 - $01= $88
DEX ; IX = $205A - $01 = $2059
WAI
Examples: DECREMENT instructions
![Page 21: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/21.jpg)
21
Example:
CMPA , CMPB, CMPD , CPX , CPY
are used to compare the contents of registers and memory data.
after instruction has been executed:
− the flag bits are updated according to the result.
− contents of register and memory data will not change.
Compare and conditional branch instructions are usually use together.
Compare Instructions
![Page 22: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/22.jpg)
22
LDAA #$09 ; ACCA = $09
CMPA #$09 ; ACCA subtract $09
BEQ DISP ; if result equal = zero
- - - ; branch to DISPLAY
- - - - ; content of ACCA = $09
- - -
DISP LDX $1000
Example: Compare
![Page 23: Microcontroller Fundamentals & Programming Arithmetic Instructions.](https://reader036.fdocuments.in/reader036/viewer/2022062322/5697c02b1a28abf838cd8bbb/html5/thumbnails/23.jpg)
23
Thank You