Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*разность двухбайтных чисел в двоично-десятичном коде 8-4-2-1. Программу можно расширить для чисел любой разрядности.
- Алгоритм нахождения разности в двоично-десятичном коде такой:
- 1. Вычесть байт
- 2. Если произошел заем для младшей тетрады
- тогда вычесть 0x06 для коррекции
- 3. Если произошел заем для старшей тетрады
- тогда вычесть 0x60 для коррекции
- */
- org 0
- OP1 equ 0x9568
- OP2 equ 0x4653
- A1 equ 0x50
- A2 equ 0x60
- A3 equ 0x70
- SIZE equ 0x2
- mov A1, #LOW(OP1)
- mov A1+1, #HIGH(OP1)
- mov A2, #LOW(OP2)
- mov A2+1, #HIGH(OP2)
- mov r0, #A1
- mov r1, #A2
- mov r2, #SIZE
- mov dptr, #A3
- clr c
- acall SUBST
- jmp endmark
- SUBST:
- BEGIN:
- mov a, @r0
- subb a, @r1
- mov f0, c //сохранение заема
- jnb ac, low_done //заема в младшей тетраде нет
- //иначе вычесть 0х6
- clr c
- subb a, #0x06
- orl c, f0 //восстановить основной заем
- mov f0, c
- low_done:
- jnc high_done //основного заема нет
- //иначе корректировать старшую тетраду, вычесть 0x60
- clr c
- subb a, #0x60
- setb c //восстановить заем
- high_done:
- //запись в память
- movx @dptr, a
- inc r0
- inc r1
- inc dptr
- djnz r2, BEGIN
- jnc OUT
- mov a, #0xFF
- movx @dptr, a
- OUT:
- clr c
- RET
- endmark:
- end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement