Цитата(ValeraK @ Dec 12 2006, 08:07)

Цитата(Ich @ Dec 12 2006, 03:05)

Подскажите пожалуйста как правильно на асемблере умножить регистровую пару на константу
При умножении 16 на 16 результат 32, делаю так:
clr Temp1000
clr Temp0100
ldi Cnt,16 ;bit counter
M16x16: lsr MnozhimoeH
ror MnozhimoeL
brcc NoAdd
add Temp0100,MnozhitelL
adc Temp1000,MnozhitelH
NoAdd: ror Temp1000 ;Result >>
ror Temp0100
ror Temp0010
ror Temp0001
dec Cnt
brne M16x16
Результат будет в четырёх регистрах Temp*
Будет чуток побыстрее (на 32 такта), если совместить регистры MnozhimoeH и MnozhimoeH с регистрами Temp0010 и Temp0001. К тому же нужно будет не 8 регистров, а 6. Ну и lsr сменить на ror.