User Tag List

Показано с 1 по 10 из 222

Тема: Атари ассемблер

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #36

    Регистрация
    26.02.2011
    Адрес
    Москва
    Сообщений
    258
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    25
    Поблагодарили
    18 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию Как иденцифицировать числа? Давайте, пронумеруем их!

    Здравствуйте, дорогие Форумчане.

    Мы знаем, что байтом можно адресовать 256 значений. А кто собственно, задумывался в чём эти значения?
    Какова их сущность?!! Identity?!!

    Я уже сотню лет не писал ничего об ассемблере (был занят Паскалем и совершенно не разочарован), но кажется есть ещё темка, которая Вам может пригодится...
    Это - использование identity table (IDT) на русский сложно перевести, но смысл прост, - Из неё мы получаем байт, определяемый собственным индексом, то есть сущность этого байта. (Подумайте над этим, это занятно!)

    Итак, создаём таблицу, длиной в страницу и выровненную по странице (то есть адрес: $xx00).

    Код:
    IDT
            .by $00,$01,$02,$03, ... $0f
    ...
            .by $f0,$f1,$f2,$f3, ... $ff; Identity Table
    Так вот, дело в том, что такая таблица может помочь нам с созданием новых несуществующих опкодов ассемблера для 6502.
    (Например тех, которые изначально запрограммированы для 65816.)
    Но не только...

    На её основе можно создавать макросы для повторяющихся действий или другие, необычные вещи... Создав её один раз можно ей пользоваться для ЛЮБЫХ целей!

    Просто сама таблица является отображением ПОНЯТИЯ <байт> в понятие <число>;
    По русски: сущность БАЙТА - ЭТО ЧИСЛО! (То есть мы ПРОНУМЕРОВАЛИ числа БАЙТА!)

    Теперь - фантастика!

    Вы знакомы с TAX,TXA,TAY,TYA...

    А где же здесь TXY или TYX?! А, НЕТУ!

    Я всегда говорил, что процессор не умеет считать, зато байты двигать умеет!!!

    Короче, ВОТ недостающие опкоды ассемблера:
    (Их можно сделать как макросы ...)
    Код:
             Calling    OPCODE
            ldx IDT,y -> TYX
            ldy IDT,x -> TXY
            and IDT,x -> ANX
            and IDT,y -> ANY
            ora IDT,x -> ORX
            ora IDT,y -> ORY
            eor IDT,x -> EOX
            eor IDT,y -> EOY
            adc IDT,x -> ACX
            adc IDT,y -> ACY
            sbc IDT,x -> SCX
            sbc IDT,y -> SCY
    Однако, это - не всё...
    Вот пример кода:
    Код:
            ldx val
            lda num
            stx tmp
            clc
            adc tmp   ; A=val+num
    А у меня уже стотыщь переменных!..
    Ассемблер не отрабатывает!!!

    Тогда, делаем так:
    Код:
            ldx val
            lda num
            clc
            adc IDT,X ; A=val+num
    Во-о-от. Так-то, Друзья, В этом-то всё и дело!
    zen
    Последний раз редактировалось ezswift; 17.05.2019 в 17:12.
    MAC и PC - это всего лишь периферия для Атари...
    130XE|XC12|CA2001|XF551|IDEPlus2.0|SIO2SD|SIO2IDE| RAM576XE+Covoх|SIO2PC|MAXFLASH8|MAXFLASH1|The Ultimate Cartridge|

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ПК8000 - Ассемблер
    от scaraby в разделе ПК8000
    Ответов: 9
    Последнее: 16.12.2018, 11:00
  2. Ассемблер для 48к на ленте
    от newart в разделе Программирование
    Ответов: 37
    Последнее: 20.09.2015, 22:48
  3. Переведите на ассемблер
    от Руслан в разделе Программирование
    Ответов: 2
    Последнее: 06.08.2012, 23:41
  4. Ассемблер Z-80
    от sergey2b в разделе Пресса
    Ответов: 12
    Последнее: 11.07.2011, 23:41

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •