Регистры и флаги

Вернуться на главную страницу

Содержание


Регистры и флаги

Значения регистров и состояния флагов хранятся в файлах сохранений эмулятора.

Подробнее про регистры и флаги читай в разделах с инструкциями процессора.

Регистры A, X и Y

Здесь отображены байты, которые в данный момент находятся в каждом из трех регистров.

Регистр A - аккумулятор. X и Y - индексные регистры.

Во время паузы эмулятора можно вручную перезаписывать байты в этих регистрах, что повлияет на результат работы инструкций, которым необходим байт в одном из этих регистров.

В адреса записываются байты, которые были вписаны вручную, а не те, которые изначально были загружены в регистры сответствующими инструкциями.

Status

Регистр статуса процессора (P) - регистр флагов. Здесь отображены состояния 8-ми различных флагов.

Если галочка не стоит, это означает что состояние флага = 0. Если галочка стоит - состояние флага = 1.

Все 8 флагов технически являются одним 8-битным регистром. Каждый бит этого регистра отвечает за определенный флаг.

Кликая по галочкам, можно вручную менять состояние флагов на 0 или 1 во время паузы эмулятора, что повлияет на работу инструкций, результат которых зависит от состояния определенных флагов.

После выполнения инструкции BEQ должен быть переход на адрес $8110 при условии Z = 1, однако подменив вручную состояние флага Z на 0, условие инструкции не выполнится и перехода не будет.

Program Counter

Регистр PC, который содержит в себе адрес выполняемой инструкции из NES Memory. Адрес указан рядом с кнопкой Seek PC.

Во время паузы эмулятора можно вручную менять адрес, по которому будет выполняться следующая инструкция.

Подробнее читай в статье с кнопками для отладки кода.

Stack Pointer

Регистр указателя стека (SP). Стек располагается в NES Memory $0100-$01FF. Информация по стеку видна здесь.

Справа от слова Stack показан адрес (указатель), в который будет помещен байт при следующем использовании стека. Под этим адресом отображен список байтов, которые находятся в диапазоне $0100-$01FF справа от этого указателя стека.

Байт из текущего адреса $0176 не отображается в списке. Байт #$7D находится по соседнему адресу $0177.

Если указатель стека = $01FF, то байты в списке не отображаются, поскольку адреса выше $01FF не относятся к стеку.

Адрес SP нельзя изменить вручную. Он изменяется только при выполнении некоторых инструкций.