ECE 376: Embedded Systems
Homework 2
-
Command | W | A | B |
---|---|---|---|
; Start | 11 | 12 | 13 |
incf B,W | 14 | 12 | 13 |
decf A,F | 14 | 11 | 13 |
iorwf A,W | 15 | 11 | 13 |
andwf B,F | 15 | 11 | 13 |
movlw 15 | 15 | 11 | 13 |
subwf A,W | -4 | 11 | 13 |
-
; 8-bit ; unsigned char A, B, C; ; A = B + 2*C + 3;
rlncf C, W ; C 2 addwf B, W ; B + 2C addlw 3 ; B + 2C + 3 movwf A ; A = B + 2C + 3
3.
```asm
; 16-bit
; unsigned int A, B, C;
; A = B + 2*C + 3;
movf C, W
addwf C, W
movwf A
movf C+1, W
addwfc C+1, W
movwf A+1 ; A = 2*C
movf A, W
addwf B, W
movwf A
movf A+1, W
addwfc B+1, W
movwf A+1 ; A = B + 2*C
movf A, W
addlw 3
movwf A
movlw 0
addwfc A+1, F ; A = B + 2*C + 3
-
; unsigned char A, B, C; ; if(A > B) C += 1 ; if(A < B) C -= 1 movf B, W cpfsgt A goto IF2 incf C, F IF2: cpfslt A goto END_ decf C, F END_: end
-
; Start
include <p18f4620.inc>
org 0x800
movlw 0xFF
movwf TRISB
clrf TRISC
clrf PORTC
movlw 0x0F
movwf ADCON1
Loop1: btfss PORTB,0 goto Loop1 btfss PORTB, 1 goto K btfss PORTB, 2 goto J Loop2: btfsc PORTB,0 goto Loop2 goto Loop1 K: btfss PORTB, 2 goto JK clrf PORTC goto Loop2 J: movlw 0xFF movwf PORTC goto Loop2 JK: movlw 0 cpfseq PORTC goto JK_ZERO movlw 0xFF movwf PORTC goto Loop2 JK_ZERO: clrf PORTC goto Loop2
end
6.
```asm
#include <p18f4620.inc>
org 0x800
movlw 0xFF
movwf TRISB
clrf TRISC
clrf PORTC
movlw 0x0F
movwf ADCON1
Loop1:
movlw 0
cpfseq PORTB
goto Loop1
Loop2:
btfsc PORTB, 0
goto Six
btfsc PORTB, 1
goto Eight
Sixteen:
incf PORTC, F ; Increment
movlw 16
cpfslt PORTC
goto Loop1 ; Less than 16
subwf PORTC, F ; More than 16
goto Loop1
Six:
incf PORTC, F ; Increment
movlw 6
cpfslt PORTC
goto Loop1 ; Less than 6
subwf PORTC, F ; More than 6
goto Loop1
Eight:
incf PORTC, F ; Increment
movlw 8
cpfslt PORTC
goto Loop1 ; Less than 8
subwf PORTC, F ; More than 8
goto Loop1
end