ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
25 ноября
234828 Топик полностью
maik-vs (21.01.2011 17:52, просмотров: 163) ответил mazur на В каждом проекте приходится ручками прописывать имя_регистра/номер регистра, флаги/номера, переменные в памяти/адреса. При переносимости кусков все приходится переписывать. И не факт, что всегда без ошибок. Сколько раз попадался на том, что
Как всегда: километр кода, а ответа нет. Всё равно руками писать "def flags=r21". Ну и напиши по-людски ".equ SYSTEM_TICK_FLG=0", зачем макрос? А если 9 раз напишешь свой Set_Flags, в каком бите будет 9-й флаг? И - я спрашивал - при отладке, в каком бите искать KBD_MSG_FLG? Считать строчки или, как сделано, в комментарии всё повторить? "ручками прописывать имя_регистра/номер регистра, флаги/номера, переменные в памяти/адреса." А как же? Это ассемблер; правильно люди пишут: напрягает - уходи на Си. Ещё порты надо прописать, таймеры... Я слабо себе представляю программу на ассемблере, в которой востребовано #define HOUR MINUTE*60. Я не понял про "ручками прописывать ... переменные в памяти/адреса". Вот у меня строчка "cmdrow: .BYTE 16 ; command buffer" и где "задавать ручками адрес"? cmdrow это адрес 16-байтового буфера. cmdrow+4 это, по-сишному, cmdrow[4] адрес 5-го байта. Где проблема? Макросы, конечно, нужны. У меня есть макросы in2 и out2 чтобы не думать, в какой из регистров таймера сначала, а в какой потом. Ещё пишу "ldaddr Y,cmdrow" для загрузки адреса в Y. Для настройки порта (мне нравится :): "initport PORTD,OUTH,OUTH,OUTL,OUTL,PULL,PULL,OUTL,INP" чтобы не помнить про ddr & port где там для чего ноль или единица. Если настроить редактор студии, то имена макросов, портов, дефайны и т.д. подсвечиваются разным цветом, здорово помогает от ошибок.