Форум программистов, компьютерный форум, киберфорум
Микропроцессоры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
4 / 4 / 3
Регистрация: 13.07.2014
Сообщений: 129
1

6502 ассемблер, директива .org

29.03.2020, 14:11. Просмотров 946. Ответов 2
Метки нет (Все метки)

Всех приветствую. Не уверен, что пишу в нужную ветку, но всё же.
Возникла идея написания собственного транслятора ассемблера для NES для ines формата. В процессе написания осознал, что не совсем понимаю, как действует директива .org
В документации к компилятору NESASM сказано:
.org
Set the location of the program counter.
В таком случае, после .org транслятор должен начинать писать инструкции с заданного адреса. Рассмотрим такой код:
Assembler
1
2
3
4
5
6
7
  .bank 0
  .org $0010
 
LABEL:
    LDA #$FF
    STA $CC
    JMP LABEL
Результат в hex-редакторе:
00000000 4E 45 53 1A 01 01 01 00 00 00 00 00 00 00 00 00
00000010 FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF
00000020 A9 FF 8D CC 00 4C 10 00 FF FF FF FF FF FF FF FF
Меняем .org $0010 на .org $C000:
00000000 4E 45 53 1A 01 01 01 00 00 00 00 00 00 00 00 00
00000010 A9 FF 8D CC 00 4C 00 C0 FF FF FF FF FF FF FF FF
Т.е в первом случае, транслятор начал запись с $0010, а во втором с $0000 вместо $C000, но при этом адрес метки поменялся на $C000.
Разъясните, пожалуйста, что происходит и как это работает
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
29.03.2020, 14:11
Ответы с готовыми решениями:

Директива org
Объясните что значит org 1000h (FASM) если программа будет загружена по адресу 2000h:0000h 1)...

Директива ORG в FASM
Попробовал этот замечательный ассемблер и сразу напоролся на непонятное. Директива ORG работает...

Директива SET (ассемблер)
Помогите пожалуйста разобраться! Читаю по мануалам, вроде как можно переназначать значения...

IP4600 ошибка 6502 Ink tank position sensor error
Всем привет! Вот такая проблема принесли в ремонт Canon IP4600 сказали ошибка 6а80 при включении...

2
2402 / 1721 / 356
Регистрация: 11.09.2009
Сообщений: 6,321
29.03.2020, 23:57 2
Цитата Сообщение от Andrey040601 Посмотреть сообщение
что происходит
Спросите у себя и своего транслятора.

Цитата Сообщение от Andrey040601 Посмотреть сообщение
как это работает
После оператора ORG, дальнейший код программы располагается с заданного адреса. Причём совершенно не факт, попадёт ли туда Program Counter во время исполнения программы. Например, начиная с фиксированного адреса, заданного оператором ORG, могут быть расположены табличные данные, да и вообще все, что угодно.
0
5751 / 2600 / 350
Регистрация: 17.02.2013
Сообщений: 3,782
05.04.2020, 02:20 3
Лучший ответ Сообщение было отмечено ValeryS как решение

Решение

Добавлено через 8 минут
Цитата Сообщение от Andrey040601 Посмотреть сообщение
В документации к компилятору NESASM сказано:
.org
Set the location of the program counter.
Так то что сказано надо читать полностью, а не выборочно. Сказано :

ORG - Set the location of the program counter. The thirteen lower bits of the address inform the assembler about the offset in the ROM bank and the third upper bits represent the page index.

13 бит у адреса в банке ROM и еще 14-й бит означает какую-то хрень. Итого 14 бит. Значит все, что указано аргументом у ORG как минимум and-ится с 3FFF (маска для 14-и значащих бит) , а
C000 and 3FFF = 0
Вот ассемблер с нуля и ассемблирует.

Добавлено через 4 минуты
Или ... как-то не по аглицки написано. "third upper bits" - "третий верхние биты". Третий верхний бит или три верхних бита ?
Если адрес в банке 13 бит, а три старших бита непонятно куда, тогда аргумент ORG должен and-иться с 1FFF. Но все равно
С000 and 1FFF = 0
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
05.04.2020, 02:20

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

При запуске компьютера открывается сайт zilvingamer.org ~ gameplayinfo.org
При каждом запуске компьютера открывается командная строка и в течении 1.5 секунды закрывается,...

При запуске системы выскакивают в chrome сайты dinoklafbzor.org и http://stabgames.org
Помогите решить проблему.

microformats.org VS schema.org
Микроформаты от microformats.org и микроразметка от schema.org . Кто что использует, есть ли...

Ассемблер в паскале: как загрузить массив во встроенный ассемблер и произвести над любым из его чисел сложение(вычитание).
хочу написать программу в паскале с использованием встроенного ассемблера, но прежде чем начать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.