Сначала я попросил о помощи и написал программу BASIC в эмуляторе 6502 для домашних животных, в котором добавлено два n-байтовых целых числа. Однако моя обратная связь заключалась в том, что он просто добавлял два 16-битных целых числа (не добавляя n-байтовые целые числа).Повторное попыток BASIC 6502 N-байтовое целое дополнение?
Может ли кто-нибудь помочь мне понять эту обратную связь, посмотрев мой код и назовите меня в правильном направлении, чтобы создать программу, которая добавит два n-байтовых целых числа?
Благодарим за сотрудничество!
Документация: Добавляет два n-байтовых целых числа, используя абсолютную индексированную адресацию. Счета начинаются в ячейках памяти $ 0600, $ 0700, а ответ составляет $ 0800. Длина Byte из целых чисел в $ 0600 (¢ -> 256)
Machine Code:
18 a2 00 ac 00 06 bd 00
07 7d 00 08 9d 00 09 e8
00 88 00 d0
Op коды, документация, переменные:
A1 = $0600
B1 = $0700
B2 = $0800
Z1 = $0900
[START] = $0500
CLC 18 // loads x with 0
LDX A2 00 // loads length on Y
LDY A1 AC 00 06 // load first operand
loop: LDA B1, x BD 00 07 // adds second operand
ADC B2, x 7D 00 08 // store result
STA Z1, x 9D 00 09 // go to next byte
INX E8 00 // count how many are left
DEY 88 00 // do more if needed
BNE loop D0
Комментарии играют важную роль в ассемблере. Каковы аргументы этого кода - какие данные предоставляются в том, какие регистры/местоположения и где возвращается результат? Guessing: Кажется, что A должно быть числом байтов (причем оба значения имеют одинаковую длину); B1 и B2 являются начальными адресами двух значений (сначала обозначается LSB), а z - выходной блок с одинаковой длиной. Правда? Если да, я не уверен, что понимаю жалобу. – keshlam
Я не включил всю мою документацию; тупой ошибка. Ред. Пожалуйста, проверьте еще раз. – Surz
По-прежнему пытаюсь понять жалобу - это было слишком долго, так как мой C64. Вы убедились, что бит переноса правильно передается из add to add? (И это ясно, прежде чем вы начнете процесс?) – keshlam