Re: Multiplikation med en decimalkonstant i 8bit-assembler
Postat: 28 februari 2011, 08:28:04
Du glömde divravictor_passe skrev:Nej, att multiplicera heter gångra och dra roten ur heter rotera...

Svenskt forum för elektroniksnack.
https://elektronikforumet.com/forum/
Du glömde divravictor_passe skrev:Nej, att multiplicera heter gångra och dra roten ur heter rotera...
Kod: Markera allt
; Load the test case
movlw .111
movwf ADC_VALUE
; Integer part
;
; Mul 12
;First mul 3
movwf BYTE_L
clrf BYTE_H
addwf BYTE_L
btfsc STATUS, C
incf BYTE_H
addwf BYTE_L
btfsc STATUS, C
incf BYTE_H
;Then mul 4
bcf STATUS, C
rlf BYTE_L
rlf BYTE_H
rlf BYTE_L
rlf BYTE_H, W
;Save
movwf TENS
; Decimal part
;
; Mul 10
;First mul 5
movfw BYTE_L
clrf BYTE_H
;bcf STATUS, C ;not needed here
rlf BYTE_L
rlf BYTE_H
rlf BYTE_L
rlf BYTE_H
addwf BYTE_L
btfsc STATUS, C
incf BYTE_H
;Then mul 2
bcf STATUS, C
rlf BYTE_L
rlf BYTE_H, W
;Save
movwf ONES
Kod: Markera allt
; Load the test case
movlw .111
movwf ADC_VALUE
movwf VOLTAGE10
bcf STATUS, C
rrf VOLTAGE10
swapf VOLTAGE10, W
andlw 0x0F
subwf VOLTAGE10
Kod: Markera allt
movlw .16 ;in
movwf resultat
btfss STATUS, Z
decf resultat,W
movwf temp
swapf temp, W
andlw 0x0F
subwf resultat,f
bcf STATUS, C
RRF resultat,f
Kod: Markera allt
movlw .16 ;in
movwf resultat
btfss STATUS, Z
swapf resultat, W
andlw 0x0F
subwf resultat,f
bcf STATUS, C
RRF resultat,f