"Опять! Ну, теперь стало быть, пошло, пропал калабуховский дом." (с) Собачье сердце
Блог проекта "The Goonies для БК11М"
БК-0011М, БК-0011М-01, SMK-512, AZ
Это да, но после простых и понятных записей асма Z80 команды вида MOV 2000(Rx),@#ADR заставляют поднапрячь мозги =)
Особенно если до этого никогда таких адресаций не видел. Тут минимум неделю лазишь в справочник, чтоб не запутаться.
При переходе с высокоуровневого языка оно, конечно, лучше: не нужно расписывать кучу команд для нужного действия.
Уже упомянутый спорный момент о том, какой код в итоге будет быстрее, для начального освоения асма считаю второстепенным.
Но именно на ретрокомпьютерах стоит все же учитывать все нюансы, вплоть до объема программы в (кило)байтах и времени исполнения кода.
Это так, для "широких масс", возможно, читающих данный топик в будущем. Не ленитесь сравнивать и проверять разные варианты кода.
Мне уже достаточно давно интересно - с каких времен необходимость - поднапрячь мозги - у программистов стала вызывать такое неприятие?
И что, на этапе освоения
это прям такой неподъёмный срок?
И я просто молчу, сколько по времени надо лазить в справочник при освоение x86 даже в варианте 8086/8088.
А так же вспоминаю, что в своё время пришлось выписать ВСЕ варианты допустимого использования в командах регистров на 8080
Ну и для разминки мозгов - кусок кода, написанный на языке MACRO-11
Честно говоря - надо бы его переписать - ибо жутко медленный, но пока не паритКод:; ; R2 R3 ; PROCEDURE CNV BEGIN LET R0 := #BUF THRU R4 := #EBUF-BUF LET (R0)+ :B= #SPACE END LET -(SP) := #4 LOOP LET R4 := #0 LET R5 := #0 LOOP IF R2 EQ #0 AND R3 LO R1 LEAVE LOOP ADD #1, R5 ADC R4 SUB R1, R3 SBC R2 END LET (SP) := (SP) - #1 IF RESULT IS EQ THEN LET -(R0) :B= #SPACE LET (SP) := #3 END LET -(R0) :B= R3 LET (R0) :B= (R0) SET.BY #'0 LET R2 := R4 LET R3 := R5 IF R2 EQ #0 AND R3 EQ #0 LEAVE LOOP END POP RETURN END CNV
Последний раз редактировалось Hunta; 16.03.2022 в 16:33.
Ну не знаю. По мне всё просто и понятно, запутываться просто негде. Особенно, если знаешь, как эти команды кодируются. Это на Z80 надо запоминать, почему нельзя сделать LD IX, HL, и надо перепихивать через стек.
А вообще, если кто хочет действительно крышесносящего ассемблера, то вот вам PIC:
Что делает эта программа?Код:MOVLW 2H MOVWF 3H MOVLW 4H ADDWF 3H, 0
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
В регистр W заносится число 6. В регистре STATUS устанавливаются флаги Z и DC.
Но, наверное, что-то еще происходит, да ?
Последний раз редактировалось ALS; 16.03.2022 в 18:36.
Ну МАКРО это не аргумент! Понятно, что на МАКРО любой начинающий без напряга напишет, особенно имея под рукой примеры.
А вообще любой язык, язык программирования в том числе, для освоения требует практики. Аргумент против восьмеричной системы это не аргумент! Это ж не 32-ричная и не двоичная системы. И не китайский язык!
По поводу желания запускать программы на реальном железе это конечно похвально, только требует немалых финансовых затрат.
Воспроизводить то же PDP-8 на транзисторах с ферритовой памятью в единичном экземпляре тут даже миллиона долларов не хватит. Да и смысл? Разве что в музее где-то сидеть за пишущей машинкой Консул, привлекая внимание публики, любящей острые ощущения. Набивать перфокарты и вводить код с них есть желающие?
Также можно писать для радио-86рк совместимых компьютеров. Они достаточно просто устроены, и ассемблер простой. А потом перейти уже на z80, потому что z80 это расширенная версия 8080.
Denn (18.03.2022)
Даже независимо от юзаемой ретро-платформы я рекомендую использовать именно кросс-компиляторы и писать на Си со встроенным асмом. Какие-то зачатки асма всё равно понадобятся, это будет неплохой старт в асм, а уверенно писать на асме целиком Вы сможете не раньше, чем через год или несколько. И то в случае почти ежедневной практики. Я знаю 8080 и Z80 довольно хорошо, но на PDP-11 до сих пор пишу очень неуверенно.
Итак. Для PDP-11 есть порт GCC (MINGW). Там, правда, есть некоторые трудности, но уж что поделать, привыкайте, это ретро.
https://www.1801bm1.com/files/pdp11/cross-compilers/
Для Z80 лучше всего взять SDCC: http://sdcc.sourceforge.net
Для 8080 берём z88dk: https://z88dk.org
По тонкостям всех этих компиляторов есть гуры. Лучше всего иметь такого гуру под боком, чтобы задавать ему тонну глупых вопросов.
Да, кстати, я освоил все эти компили и использую их в качестве бэк-эндов при написании программ для ретро-платформ на Обероне (через трансляцию в Си).
Почему я сразу говорю про гур. Потому что кроме компиляторов понадобятся утилиты, библиотеки, подпрограммы на ассемблере, приёмы их стыковки к Си-коду. И да, не слушайте "ассемблерщиков". Это профи, они хотят выжимать из ретро-машинок их максимум. Ваша же задача другая - вообще понять что к чему и сделать хоть что-то. А там дальше талант-упорство-мотивация покажут. Может вообще не понравится, слишком заморочливо.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)