Преобраз. 2 – х – разряд. десятичн. число в эквивалентное двоичное
; Вх. пар – р : рег. А – двоич. – десят. число
; Вых. пар – р : рег. А – эквивал. двоичн. число
PR 102 : ; распаковка дв. – дес. число
MOV B, A ; копия дв. – дес. число
ANI OFH ; выделить Мл. ц.
MOV C, A ;
MOV A, B ;
ANI OFOH ; выделить Ст. ц.
RRC ; Ст. ц. * 10
MOV B, A ; в рег. в – Ст. ц. * 8
RRC
RRC ; Ст. ц. * 2
ADD B ; Ст. ц. * 10
ADD C ; в рег. А – двоичн. число
RET

Преобразование 1 – байтного двоичного числа в эквивалент. десятичном
; Вх. пар – р : рег. С – двоичное число
; Вых. пар – р : рег. HL – 3 – разр. десятичн. число
PR810 : LXI H, O
MVI B, 8 ; счётчик циклов
; сдвиг влево
CYCLE: MOV A, C
RLC
MOV C, A
; дв. – дес. удвоение суммы
MOV A, L
ADC L
DAA
MOV L, A
MOV A, H
ADC H
DAA
MOV H, A
; проверка конца цикла
DCR CYCLE
RET
Операции с целыми двоичными числами со знаком !

S = 0 – положит. число
S = 1 – отриц. число
1) прямой код – ст. разряд – знаковый, остальные разряды – этомодули числа.
0 1 1 1 1 1 1 1 = + 127
1 1 1 1 1 1 1 1 = - 127
возможно появление 2 – х видов нуля: положит. и отриц.
2) обратный код
если S = 0 обр. код совпадает с прям.
S = 1 обр. код = инверсии
0 1 0 1 0 1 0 1 – прямой код
0 1 0 1 0 1 0 1 – обр. код
1 0 1 0 1 0 1 0 – прямой код
1 1 0 1 0 1 0 1 – обр. код
возможность появления 2 – х видов нулей.
3) дополнительный код
S = 0 – доп. код совпад. с прям. код
S = 1 – [ AДОП ] = [ AОБР.] + 1 = [
]ПР + 1
Достоинство – слож. и вычит. выполняется одинаково ; имеется только один нуль.
Недостаток – громоздкость получения доп. кода ( особенно для многобайтных чисел )
[ A ]ДОП = [ A ]ОБР + 1 = [
]ПР + 1
[ A ]ПР = [
] = [ AДОП ] + 1
- 1 = 1 0 0 0 0 0 0 1 – пр. код
инверсия
0 1 1 1 1 1 1 0
+ 1
0 1 1 1 1 1 1 1 = ошибка
1 1 1 1 1 1 1 1 = FFH
П / п преобраз. однобайтных чисел из прям. кода в дополнит. и наоборот
; Вх. рар – р : рег. А – исх. число
; Вых. пар – р : рег. А – вых. число
DOP : MOV C, A
RLC
JC PREOBR ; если S = 1
MOV A, C
RET
PREOBR : MOV A, C
CMA ; инверсия числа
INR A ; ( A ) ( A ) + 1
RET
; П / п преобраз. из прям. кода в допол.
; Вх. пар – ры : IPORT 1 – ввод Мл. б., IPORT 2 – ввод Ст. б.
; Рег. HL – адрес Мл. б. доп. кода в ОЗУ
DOP 2 : IN IPORT 2: Ввод Ст. б.
RLC
JC PREOBR ; если S = 1
IN IPORT 1 ; ввод Мл. б.
MOV M, A
INX H
IN IPORT 2 ; ввод Ст. б.
MOV M, A
RET
PREOBR: IN IPORT 1 : ввод Мл. б.
CMA
ADI 1
MOV M, A ; запомнить в ОЗУ
IN IPORT 2 ; ввод Ст. б.
CMA
ACI O
ORI 80 ; установить S = 1
MOV M, A
RET
1) С использованием специального порта состояний – кода ВУ выставляет данные, оно записывает в определённые ячейки порта “ 1 ”

Если D7 = 1 – данные имеются
D7 = 0 – данных нет

MAIN : LXI H, BASE
MVI C, 100 ; загрузить счётчик
WAIT : IN PORTSTAS ; ввод состояния
ANI 1000 0000 B ; выделить D7
JZ WAIT ; цикл ожидания
CALL DOP 2 ; ввод данных и преобразование
DCR C ;
JNZ WAIT ; цикл, если ( С ) ¹ 0
HLT ; остановить МП
2) Использование запросов прерывания.
RST 7 – команда прерыв. вектор прерывания : 0038 H
ORG 0000H
JMP MAIN ; переход к главн. программе
ORG 0038H ; вектор прерывания
CALL DOP 2
DCR E
JNZ NEXT ; если ( С ) ¹ 0
JMP EXIT
NEXT : EI
RET
ORG 0100H
MAIN : LXI H, BASE
MVI E, 100
EI ; разрешить прерывание
WAIT : JMP WAIT ; зацикливание
EXIT : HLT