lign="justify"> subwf N0, F; віднімання дільника із залишку
btfsc STATUS, C; якщо C = 0 відновлюємо залишок
goto ekv1
addwf N0, F; відновлення залишку
bcf STATUS, C; C = 0
ekv1 rlf N, F; зсув приватного вліво
decfsz count, f; продовжувати поділ, поки не обнулений лічильник
goto ekv2; N0, w; N, F; додаток залишку до приватного
return
; **********************************
; Переклад в 2-10 код
; **********************************
bcd
clrf Nsot; очищення регістрів результату
clrf Ndes;
clrf Ned;
bcd1 movlw 0x64; віднімаємо 100 з двійкового числа
subwf N, w; STATUS, C;
goto bcd2Nsot, F; збільшуємо кількість сотень на едініцуN; зберігаємо результат вичітаніяbcd1;
bcd2 movlw 0x0A; віднімаємо 10 з двійкового числа
subwf N, w; STATUS, C; bcd3
incf Ndes, F; збільшуємо кількість десяток одиницю
movwf N; зберігаємо результат віднімання
goto bcd2;
bcd3 movf N, w; Ned; після вирахувань заносимо залишок у одиниці
return
; ****************************************
; Видача результатів вимірювання на індикацію
; **************************************** PORTA , 2; RW = 0PORTA, 1; A0 = 1 Nsot, w; кол-во сотень в w
call symbol; визначення коду символу
movwf PORTB; w в PORTB
call byte_to_lcd; передача в РКІ Ndes, w; кол-во десятків в w
call symbol; визначення коду символу
movwf PORTB; w в PORTB
call byte_to_lcd; передача в ЖКІ0x2E; код точкіPORTB; w в PORTBbyte_to_lcd; передача в РКІ Ned, w; кол-во одиниць в w
call symbol; визначення коду символу
movwf PORTB; w в PORTB
call byte_to_lcd; передача в РКІ
; ****************************************
; Визначення коду символу
; **************************************** PCL , F; PCL = PCL + w 0x30; символ 0
retlw 0x31; символ 1
retlw 0x32; символ 2
retlw 0x33; символ 3
retlw 0x34; символ 4
retlw 0x35; символ 5
retlw 0x36; символ 6
retlw 0x37; символ 7