M
mypooka
Guest
<img src="http://www.edaboard.com/images/smiles/icon_lol.gif" alt="Райски" border="0" />Може би те са полезни за някои по-нови хора
аз поставям тези практики математика за 16F84
16BIT математика разделяне, изваждане, умножение!
Надявам се тези помогне на някой!списък P = 16F84
включва "p16F84.inc"
;
;
CBLOCK 0x0C
ACCaLO
ACCaHI
ACCbLO
ACCbHI
ACCcLO
ACCcHI
ACCdLO
ACCdHI
Temp
Регистрация
ENDC
;
;
;************************************************* ******************
; Двоен Точност дивизия
;************************************************* ******************
; Заредете постоянни стойности на ACCA & ACCb за изпитване
;-------------------
Org 0h
movlw 0h
movwf ACCaHI; разделителната номер!
movlw d'10 ', след бягай!товари ACCA = FF = D15
movwf ACCaLO
;
movlw 015
movwf ACCbHI; броят да се разделят!
movlw 07C; също е резултат от разделянето
movwf ACCbLO; натоварване например: 157C = d5500
;---------------
повикване D_divS; остатъка в ККРБК
; Remander = 63
спрете спре Гото
;
;-------------
D_divS
покана за настройка
clrf ACCcHI
clrf ACCcLO
dloop ФБК СТАТУТ, С
rlf ACCdLO, F
rlf ACCdHI, F
rlf ACCcLO, F
rlf ACCcHI, F
movf ACCaHI, W
subwf ACCcHI, W; проверете дали> C
btfss СТАТУС, Z
Отидох в nochk
movf ACCaLO, W
subwf ACCcLO, W; ако MSB равен след проверка LSB
nochk btfss СТАТУС, C; да определя, ако в> един
Отидох в nogo
movf ACCaLO, W; ва в C
subwf ACCcLO, F
btfss СТАТУТ, С
ДЕГФ ACCcHI, F
movf ACCaHI, W
subwf ACCcHI, F
BSF STATUS, C; преминаване от 1 в б (резултат)
nogo rlf ACCbLO, F
rlf ACCbHI, F
decfsz Temp, F; линия, докато всички битове проверени
Отидох в dloop
;
retlw 0
;************************************************* ******************
;
настройка movlw 0x10; в продължение на 16 смени
movwf Temp
movf ACCbHI, W; ход ACCb да ACCd
movwf ACCdHI
movf ACCbLO, W
movwf ACCdLO
clrf ACCbHI
clrf ACCbLO
retlw 0
КРАЙ
;************************************************* ***************списък P = 16F84
включва "p16F84.inc"
CBLOCK 0x0C
Temp
ACCaLO; се нарича продукт!
ACCaHI
ACCbLO
ACCbHI; първо х броя
ACCcLO; втори номер!
ACCcHI
ENDC
Org 0h
;*************************************************
; Размножават rutine под!
;*************************************************
Отидох в 4 $
clrf ACCaLO
clrf ACCaHI
ноември
ноември
clrf ACCaLO
clrf ACCaHI
movlw 0x0A
movwf ACCbLO; 8bits по-ниска от първия брой
movlw 0x00
movwf ACCbHI; горната 8bits на първия брой
movlw 0x6F
movwf ACCcLO; по-ниски 8bits на втория брой
movlw 0x19
movwf ACCcHI; горната 8bits на втория брой
movlw .16;, работещи на 16 бита
movwf Temp
Loop; Loop Тук за всяка Bit
rrf ACCbHI, F; Shift определяне на коефициента
rrf ACCbLO, F; от една
btfss СТАТУС, C; Ако малко се определя, добавете
Отидох в Skip; на множимо на
; "Продукт"
movf ACCcHI, W
addwf ACCaHI, е
movf ACCcLO, W
addwf ACCaLO, е
btfsc СТАТУТ, С
incf ACCaHI, е
Skip; превключи на множимо и
ФБК СТАТУС, C; Loop Около
rlf ACCcLO, е
rlf ACCcHI, е
decfsz Temp, F
Отидох в Loop
;
; Резултатът е в ACCaHI, ACCaLO
спрете спре Гото
приключвамсписък P = 16F84
включва "p16F84.inc"
CBLOCK 0x0C
Temp
ACCaLO;
ACCaHI
ACCbLO
ACCbHI; първия брой
ACCcLO; втори номер!
ACCcHI
ACCdLO
ACCdHI
ENDC
;************************************************* *
; Изважда rutine под!
;************************************************* *
Org 0h
;--------------------------
; Тест код за изваждане
;--------------------------
;--------------------
movlw 0x8A
movwf ACCaHI; например номера
movlw 0x06
movwf ACCaLO
movlw 0x8A
movwf ACCbHI
movlw 0x0A
movwf ACCbLO
;-------------------
;----------
movf ACCaHI, W; Изваждане на високо Байт Първа
subwf ACCbHI, W; ба = C
movwf ACCcHI; магазин на високите резултати
;----------
movf ACCaLO, W; изважда Ниските Байт Следваща
subwf ACCbLO, W; съхранява в резултат ACCbLO
movwf ACCcLO; съхранява LO резултати
btfss СТАТУС, C; Не декември високо байт, ако изпълнява Комплект
ДЕГФ ACCcHI, F
iorwf ACCcHI, W; Проверка за равна на нула
btfsc СТАТУС, Z: Ако не нула, прескача
Отидох в EqualLess; равен с равен, Направо към Кодекса
btfsc ACCcHI, 7h; Ако брой е отрицателен, изпълнява
Отидох в EqualLess; ако A> B отидете тук!Иначе, прескача
Отидох в много големи, ако A <Б отидете тук!
;
; Резултати са в ACCcHI и ACCcLO
EqualLess
Отидох в спрете спиране;
приключвам
;
;
аз поставям тези практики математика за 16F84
16BIT математика разделяне, изваждане, умножение!
Надявам се тези помогне на някой!списък P = 16F84
включва "p16F84.inc"
;
;
CBLOCK 0x0C
ACCaLO
ACCaHI
ACCbLO
ACCbHI
ACCcLO
ACCcHI
ACCdLO
ACCdHI
Temp
Регистрация
ENDC
;
;
;************************************************* ******************
; Двоен Точност дивизия
;************************************************* ******************
; Заредете постоянни стойности на ACCA & ACCb за изпитване
;-------------------
Org 0h
movlw 0h
movwf ACCaHI; разделителната номер!
movlw d'10 ', след бягай!товари ACCA = FF = D15
movwf ACCaLO
;
movlw 015
movwf ACCbHI; броят да се разделят!
movlw 07C; също е резултат от разделянето
movwf ACCbLO; натоварване например: 157C = d5500
;---------------
повикване D_divS; остатъка в ККРБК
; Remander = 63
спрете спре Гото
;
;-------------
D_divS
покана за настройка
clrf ACCcHI
clrf ACCcLO
dloop ФБК СТАТУТ, С
rlf ACCdLO, F
rlf ACCdHI, F
rlf ACCcLO, F
rlf ACCcHI, F
movf ACCaHI, W
subwf ACCcHI, W; проверете дали> C
btfss СТАТУС, Z
Отидох в nochk
movf ACCaLO, W
subwf ACCcLO, W; ако MSB равен след проверка LSB
nochk btfss СТАТУС, C; да определя, ако в> един
Отидох в nogo
movf ACCaLO, W; ва в C
subwf ACCcLO, F
btfss СТАТУТ, С
ДЕГФ ACCcHI, F
movf ACCaHI, W
subwf ACCcHI, F
BSF STATUS, C; преминаване от 1 в б (резултат)
nogo rlf ACCbLO, F
rlf ACCbHI, F
decfsz Temp, F; линия, докато всички битове проверени
Отидох в dloop
;
retlw 0
;************************************************* ******************
;
настройка movlw 0x10; в продължение на 16 смени
movwf Temp
movf ACCbHI, W; ход ACCb да ACCd
movwf ACCdHI
movf ACCbLO, W
movwf ACCdLO
clrf ACCbHI
clrf ACCbLO
retlw 0
КРАЙ
;************************************************* ***************списък P = 16F84
включва "p16F84.inc"
CBLOCK 0x0C
Temp
ACCaLO; се нарича продукт!
ACCaHI
ACCbLO
ACCbHI; първо х броя
ACCcLO; втори номер!
ACCcHI
ENDC
Org 0h
;*************************************************
; Размножават rutine под!
;*************************************************
Отидох в 4 $
clrf ACCaLO
clrf ACCaHI
ноември
ноември
clrf ACCaLO
clrf ACCaHI
movlw 0x0A
movwf ACCbLO; 8bits по-ниска от първия брой
movlw 0x00
movwf ACCbHI; горната 8bits на първия брой
movlw 0x6F
movwf ACCcLO; по-ниски 8bits на втория брой
movlw 0x19
movwf ACCcHI; горната 8bits на втория брой
movlw .16;, работещи на 16 бита
movwf Temp
Loop; Loop Тук за всяка Bit
rrf ACCbHI, F; Shift определяне на коефициента
rrf ACCbLO, F; от една
btfss СТАТУС, C; Ако малко се определя, добавете
Отидох в Skip; на множимо на
; "Продукт"
movf ACCcHI, W
addwf ACCaHI, е
movf ACCcLO, W
addwf ACCaLO, е
btfsc СТАТУТ, С
incf ACCaHI, е
Skip; превключи на множимо и
ФБК СТАТУС, C; Loop Около
rlf ACCcLO, е
rlf ACCcHI, е
decfsz Temp, F
Отидох в Loop
;
; Резултатът е в ACCaHI, ACCaLO
спрете спре Гото
приключвамсписък P = 16F84
включва "p16F84.inc"
CBLOCK 0x0C
Temp
ACCaLO;
ACCaHI
ACCbLO
ACCbHI; първия брой
ACCcLO; втори номер!
ACCcHI
ACCdLO
ACCdHI
ENDC
;************************************************* *
; Изважда rutine под!
;************************************************* *
Org 0h
;--------------------------
; Тест код за изваждане
;--------------------------
;--------------------
movlw 0x8A
movwf ACCaHI; например номера
movlw 0x06
movwf ACCaLO
movlw 0x8A
movwf ACCbHI
movlw 0x0A
movwf ACCbLO
;-------------------
;----------
movf ACCaHI, W; Изваждане на високо Байт Първа
subwf ACCbHI, W; ба = C
movwf ACCcHI; магазин на високите резултати
;----------
movf ACCaLO, W; изважда Ниските Байт Следваща
subwf ACCbLO, W; съхранява в резултат ACCbLO
movwf ACCcLO; съхранява LO резултати
btfss СТАТУС, C; Не декември високо байт, ако изпълнява Комплект
ДЕГФ ACCcHI, F
iorwf ACCcHI, W; Проверка за равна на нула
btfsc СТАТУС, Z: Ако не нула, прескача
Отидох в EqualLess; равен с равен, Направо към Кодекса
btfsc ACCcHI, 7h; Ако брой е отрицателен, изпълнява
Отидох в EqualLess; ако A> B отидете тук!Иначе, прескача
Отидох в много големи, ако A <Б отидете тук!
;
; Резултати са в ACCcHI и ACCcLO
EqualLess
Отидох в спрете спиране;
приключвам
;
;