Предыдущая Следующая

* HexBCD - 32-разрядное двоичное число (целое) делить на

* 16-разрядное.

delit: пор

;Пересылка данных з рабочие регистры

;сброс ненужных разрядов ;сброс ненужных разрядов ;сброс ненужных разрядов ;делитель

,-делитель 16 разрядов

;подпрограмма со старшим полубайтом ;сохранение регистра состояния ;прозерка младшего полубайта

/•переход, если не было переноса

;восстановление старшего полубайта

г вычисление разницы старшего полубайта

sr3 :

clr

r7

clr

r6

clr

r3

mov

r2, tmp2

ldi

tmpl, $10

mov

rO, tmpl

nop

 

rcall

HL2

in

rl7, SREG

rcall

DE2

nop

 

brcc

PERI

nop

 

rcall

INXH

nop

 

rcall

HLMNBC

nop

 

brcs

PER2

out

SREG, rl7

rcall

INXD

nop

 

rjmp

PER4

;переход, если перенос .-восстановление регистра состояния ;зосстановление младшего полубайта

130

Глава 6

Листинг 6.1. Продолжение

PER2 :

out

SREG, rl7

;восстанозление регистра состояния

 

brcs

PER3

;переход, если перенос

 
 

nop

     
 

rcall

DADB

;восстановление старшего полубайта

PER4 :

clz mov

tmp3, rO

   
 

dec

tmp3

;уменьшение 16 разрядов

 
 

mov

rO, tmp3

   
 

brbc

1, DCLK

/переход, если Z=0

 
 

nop

     
 

ret

     

;подпрограмма

со старшим

полубайтом

 

HLMNBC

 

clc

;сброс флага переноса

 
 

mov

tmpl, гб

;переслать г6 во временный

регистр

 

sbc

tmpl, r2

;вычитание с заемом

 
 

mov

r6, tmpl

;сохранение в гб

 
 

mov

tmp2, r7

;переслать г7 во временный

регистр

 

sbc

tmp2, r3

;вычитание с заемом

 
 

mov

r7, tmp2

;сохранение з г7

 
 

ret

     

.■восстановление старшего

полубайта

 

DADB:

mov

tmpl, гб

;переслать гб зо временный

регистр

 

add

tmpl, r2

;сложение

 
 

mov

r 6, tmp1

;сохранение в гб

 
 

mov

tmp2, r7

;переслать г7 во временный

регистр

 

adc

tmp2, r3

;сложение с переносом

 
 

mov

r7, tmp2

;сохранение в г7

 
 

ret

     

;подпрограмма

с младшим полубайтом

 

DE2:

clc

 

.•сброс флага переноса

 
 

mov

tmpl, r4

;переслать г4 во временный

регистр

 

rol

tmpl

;сдвиг злево через перенос

 
 

mov

r4, tmpl

.•сохранение в г4

 
 

mov

tmp2, r5

;переслать г5 во зременный

регистр

 

rol

tmp2

;сдвиг злезо через перенос

 
 

mov

r5, tmp2

;сохранение в г5

 
 

ret

     

;сдвиг

старшего полубайта

   

HL2 :

clc

 

.•сброс флага переноса

 
 

mov

tmpl, r6

.•переслать г4 во временный

регистр

 

rol

tmpl

;сдвиг влезо через перенос

 
 

mov

гб, tmpl

;сохранение в гб

 
 

mov

tmp2, r7

;переслать г7 во зременный

регистр

 

rol

tmp2

;сдвиг влево через перенос

 
 

mov

r7, tmp2

;сохранение з г7

 
 

ret

     

Простой термометр 131


Предыдущая Следующая






Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_52.html on line 1210

Warning: include(./news.php) [function.include]: failed to open stream: No such file or directory in /var/www/picprof/data/www/picprof.com/book/book8_52.html on line 1210

Warning: include() [function.include]: Failed opening './news.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php') in /var/www/picprof/data/www/picprof.com/book/book8_52.html on line 1210