2015-03-06 3 views
0

У меня есть эта программа, но я ее не понял. Почему стоит использовать ral и dad?8085 умножение. Как это работает?

1. lxi h, 4050h 
2. mov e,m 
3. mvi d,00h 
4. inx h 
5. mov a,m 
6. mvi b,08h 
7. lxi h,0000h 
8. mvlt: ral ; this line 
9. jnc add1 
10. dad d 
11. add1: dcr b ; this line 
12. jz store 
13. dad h 
14. jmp mvlt 
15. store: shld 4052h ; this line 
16. rst 1 

ответ

0

Код умножает байт на [4050h] и [4051h], и сохраняет 16-битовый результат в [4052h]. de = byte в [4050h] (d = 0, e = байт), a = байт в [4051h]. ral shifts a левый 1 бит, сдвигая самый старший бит a в перенос. папа d добавляет de к hl. dad h shifts hl осталось 1 бит. shld хранит 16-битный продукт в [4052h].

+0

Как можно сместить множитель левой помощи при умножении? Я не получил основную информацию о переносе и умножении. – Kirsche

+0

@ Kirsche - сдвиг множителя слева в бит переноса выполняется для проверки бит умножителя от наиболее значимого бита до младшего значащего бита по одному за раз. Если бит установлен, мультипликация добавляется к продукту. После каждого шага продукт сдвигается влево на один бит. – rcgldr

Смежные вопросы