Инкрементная переменная в сборке для 8080?
Я сейчас работаю над программой для Intel 8080 и не понимаю, как работает пространство, которое мы можем зарезервировать для переменных. А именно, скажем, мы делаем test DB 80
, Могу ли я позже как-нибудь уменьшить или увеличить переменную test
например или я должен объявить это заново?
2 ответа
INR M
инструкция увеличивает содержимое байта адреса памяти, указанного регистром HL. Таким образом, вы можете в основном:
LXI H, test
INR M
Предполагая, что "test" является байтом, вы можете сделать что-то вроде этого:
test: ds 1: это отводит один байт для хранения данных и называет его "test"
lda test ; move the value from the memory location called "test" into "a"
inr a ; increment A
sta test ; store the value from A into the memory location called "test"
; этот код использует регистр A и семь байтов кодового пространства. Увеличенное значение "test" остается в A в конце последовательности.
В качестве альтернативы, как упоминалось выше:
тест: ds 1 lxi H, тест; Загрузите HL с адресом ячейки памяти, называемой "test" inr m; увеличить ячейку памяти, адрес которой указан в HL.; этот код использует четыре байта кодового пространства и регистрирует H и L; если вы хотите загрузить A с содержимым "test", выполните: mov a,m; который добавляет еще один байт кода.