Составители:
14
; SOURCE LINE # 5
; SOURCE LINE # 6
0000 E590 MOV A,P1
0002 C4 SWAP A
0003 540F ANL A,#0FH
0005 75F00A MOV B,#0AH
0008 A4 MUL AB
0009 FF MOV R7,A
000a E590 MOV A,P1
000c 540F ANL A,#0FH
000d 2F ADD A,R7
000e F5A0 MOV P2,A
; FUNCTION main (END)
Программа, подготовленная в Ассемблере a51
cseg at 0 ; абсолютный сегмент кода размещается с адреса 0
; в программной памяти
mov a,P1 ; ввод байта данных с порта Р1 в аккумулятор
anl a,#0f0h ; выделение старшей тетрады А1
swap a ; тетрада перемещается в младшие разряды
mov b,#10 ; 10 в
регистре множителя
mul ab ; a=A1*10, b=0
mov b,a ; сохранить младшие разряды произведения
mov a,P1 ; ввод байта данных с порта Р1 в аккумулятор
anl a,#0fh ; выделение младшей тетрады А0
add a,b ; a=(A1*(10)
2
+ A0)
2
mov P2,a ; вывод результата в порт Р2
end ; псевдокоманда ассемблера- завершение текста
Сравниваем листинг С51-программы с программой, разработанной в
Ассемблере: количество байтов после компиляции С-программы - 17, в
ассемблере программа занимает 18 байтов.
Компилятор оптимально выбирает для временного хранения
произведения регистр R7. Если использовать эту подсказку, то программа в
ассемблере сократится до 16 байт.
2) Вывод чисел в порт (Перевод 210)
Вычисления выполняются в
двоичной системе делением на основание
P3=((P2/10)<<4) + P2%10; где A1=B/10; A0=B%10
Страницы
- « первая
- ‹ предыдущая
- …
- 12
- 13
- 14
- 15
- 16
- …
- следующая ›
- последняя »