Инкрементная переменная в сборке для 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; который добавляет еще один байт кода.

Другие вопросы по тегам