Где результат сложения? Intel 8080
Я не могу понять поведение обработки кода для Intel 8080. Например, я хочу добавить два шестнадцатеричных числа: 3H и 4H, поэтому я написал:
MVI A, 3H
MVI B, 4H
ADD B
HLT
Но где я могу найти результат после обработки? Должен ли я скопировать результат из A в какой-нибудь адрес памяти или как? Извините, но я впервые с такими вещами, и я не могу понять, как это работает.
И, например, картинка, показывающая мой пример в симуляторе 8085.
Другой вопрос, почему некоторые флаги изменились, но регистры остались нетронутыми? не должны MVI B, 4H
изменить значение B-регистра? Если нет, пожалуйста, объясните, как это работает.
После предоставления 2 байтов для каждой инструкции аккумулятор также остался без результата.
И кажется, что единственная инструкция, которая может повлиять на аккумулятор или любой другой реестр - это INR. Возможно ли, что "мой" симулятор имеет дефект и не работает должным образом?
2 ответа
Как видно из скриншотов, вы неправильно вводите код. Ваш окончательный код должен быть таким:
MVI A, 3H -> 3E 03
MVI B, 4H -> 06 04
ADD B -> 80
HLT -> 76
Я не использовал этот симулятор, но я полагаю, что вы вводите неправильную мнемонику. Я думаю, что это должно быть как:
Address Mnemonics M Code
Address1: MVI A 3E
Address2: 3 03
Address3: MVI B 06
Address4: 4 04
Address5: ADD B 80
Address6: HLT 76
И не как
Address1: MVI A, 3
Address2: MVI B, 4
Address3: ADD B
Address4: HLT
(это ясно, если мы видим столбец М. Код, где MVI A, 3
а также MVI B, 4
не имеет никаких кодов операций) Тогда только вы получите код, предназначенный для:
3E 03 06 04 80 76
То, что вы на самом деле бежали до сих пор NOP
операции (значение кода операции 00
) а также HLT
,:-)
Результат
MVI A, 3H
MVI B, 4H
ADD B
Будет иметь результат в регистре А.
Результат MVI B, 4H будет 4H в регистре B.