2014-02-03 2 views
1

Мне нужно было добавить два 16-битных целых числа для получения 16-битного ответа с использованием адресации абсолютного режима. Я, однако, испортил адреса памяти и не могу понять, почему. Пожалуйста, сообщите мне об исправлении кода:Добавление двух 16-разрядных целых чисел для получения 16-битного ответа в 6502?

x1 = $0410 
y2 = $0411 
s1 = $0412 

Start at $0500 

CLC    18 
LDA  x1  AD 10 04 
ADC  y1  6D 11 04 
STA  s1  8D 12 04 
LDA  x1+1 AD 11 04 
ADC  y2+1 6D 12 04 
STA  s1+1 8D 13 04 
BRK    00 

ответ

3

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

x1 = $0410 
y2 = $0412 
s1 = $0414 
+0

Итак, мне нужно было бы изменить высокие байты x1 + 1, y2 + 1 и s1 + 1 до 12, 13 и 14? – Surz

+0

Высокие байты? Они всего лишь один байт, так что это не имеет никакого смысла. Отредактированный ответ, чтобы сделать его более ясным. –

+0

О, я вижу ... что бы это выглядело как отредактированная версия, правильно? – Surz

 Смежные вопросы

  • Нет связанных вопросов^_^