У меня проблема, когда я вычитаю два 16-битных числа в ассемблере для процессора i8080.Ассемблер вычитает 16-разрядные номера
Пример: 0f70 - 00f0 и первый номер будет находиться в регистрах В и С, второй в D и E.
Двоичный:
В = 0000 1111 C = 0111 0000
D = 0000 0000 E = 1111 0000
Поэтому, когда я вычитаю CE, ему нужно «заимствовать». Хорошо, поэтому я уменьшу B, но как насчет C? Я знаю, что в этом случае C будет 1000 0000, но в других случаях?
Код:
ORG 800H
RST 5
MOV B,D
MOV C,E //after this in B and C I have 16bit minuend
RST 5 //after this in D and E I have 16bit subtrahend
MOV A,C //Move C to Accumulator
SUB E //subtract E
JC SUBTRACTINGB //if it don't need borrow jump
DCR B //else decrement B
MVI C,? // and what should be in C???
насчет 'C'? Вам не нужно это исправлять или что-то в этом роде, заимствовать только по более высоким разрядам – harold
Ваш вопрос «а как же C?» только имеет смысл для себя. Как насчет c? Как насчет погоды? 1. Покажите свой код. 2. Покажите вход и выход. 3. Покажите ожидаемый результат. –
Хорошо, у вас есть часть моего кода с комментариями. Вопрос «как насчет C» означает, что мне делать с номером из регистра C. Должен ли я вычитать sth, следует ли добавить sth? Я знаю, как вычитать двоичные числа, но здесь это немного отличается. –