Вт окт 22, 2019 14:39:44
Чт фев 27, 2020 19:41:04
интрига! любопытство накалено до пределаAQ29 писал(а):С которым я сейчас разбираюсь - его нет в общем доступе. Пока нет.
Чт фев 27, 2020 19:52:12
Чт фев 27, 2020 19:55:39
Чт фев 27, 2020 19:57:27
так это, вроде бы, никакого отношения к ассемблеру не имеет - это имеет отношение к IDE или редактору кода.AQ29 писал(а):Современный сервис: свертки подпрограмм и условий, раскраска команд и переменных, подсказки и т.д.
согласно ваших критериев, хороший, просто отличный "ассемблер" называется... Си он даже лучше всего того, что вы написали!AQ29 писал(а):На мой взгляд, у хорошего ассемблера должно быть следующее.
это правильно: любой дурак сможет сначала узнать многое, а потом сделать лучше всего этого. настоящий гений сразу делает лучше всех, изначально не зная ничегоAQ29 писал(а):Разных ассемблеров не знаю, но
Чт фев 27, 2020 20:05:09
Чт фев 27, 2020 20:17:55
Чт мар 05, 2020 02:08:21
1 Глобальные и локальные переменные (RON, SRAM, EEPROM, RVV, константы, биты). Локальные переменные видимостью модуля, процедуры или макроса. Размерность переменных – 8 байт.
2 Команды условий: If, While, Until.
Чт мар 05, 2020 08:02:44
попробуйте gnu-as, точнее avr-as - макросы практически те же, что и в masm или tasmAlexeyslav писал(а):чего не хватает в нынешнем ассемблере - так это более мощной и менее ограниченной системы макроподстановок.
Чт мар 05, 2020 18:42:23
Вс мар 08, 2020 11:38:39
Вс мар 08, 2020 11:44:54
Вс мар 08, 2020 11:46:36
Вс мар 08, 2020 19:53:04
Это, так сказать, "гвоздь не от той стенки". Ассемблер - это представление машинных команд конкретного процессора в символическом виде. В частности, для AVR ассемблер позволяет, например, вместо кода 0xE41A написать команду LDI R17,0x4A, что означает "загрузить в регистр R17 шестнадцатеричную константу 4A". И, соответственно, объекты, которыми может манипулировать программа не ассемблере - только те, которыми может манипулировать процессор. То есть, 32 условно-общих регистра, какое-то количество регистров-портов ввода-вывода, какое-то количество ячеек памяти (отдельно флеш-памяти, отдельно оперативки, отдельно NVRAM), и (почти) все. Переменные в этот список, увы, не входят. И вообще, переменная - это более высокий уровень абстракции, чем ассемблер.AQ29 писал(а):А что, существует какой-то запрет на применение переменных в ассемблере? Про такой запрет я, действительно, ничего не слышал.
Вс мар 08, 2020 20:32:09
Вс мар 08, 2020 22:46:34
Нет. Разговор следует вести на одном языке. Соответственно и слова надо употреблять правильно.Starichok51 писал(а):от названия суть не меняется.
нравится ему называть один бит переменной или весь регистр называть переменной - пусть называет ...
Ну, в общем-то, нормальные макроассемблеры во многом облегчают жизнь. Но не это АВР-овское убожество. Такое впечатление, что его авторы ни разу не видели нормального ассемблера. И вообще ничего не видели, кроме Паскаля на писюке. Один их набор символических наименований для битов в регистрах периферии чего стоит? Это какую такую траву надо курить, чтобы придумать метод набора двоичного числа в группу смежных бит одного регистра путем сдвигов нулей или единиц на обозначенное символически число бит? Я имею в виду конструкцию, вроде 0<<CS02 | 1<<CS01 | 1<<CS00 для прескалера таймера 0 вместо простого и понятного (допустим) T0prs64, которое в подключаемом по .Include файле было бы определено, как 0x03. Да даже для одиночных битов оно малополезно - команды SBI/CBI - единственные, для которых такие наименования имеют смысл, работают только с первыми тридцатью двумя портами I/O (00-1F), даже у самого первого AT90S1200 почти половина регистров I/O для этих команд недоступна.Starichok51 писал(а):я, вот, никогда не пользуюсь ни макросами, на какими-то подстановками (то есть, всякими костылями) - просто пишу на ассемблере, и горя не знаю.
Пн мар 09, 2020 07:02:44
LCD_FIELD 5,310,0,47
; Макрос для установки поля вывода изображения на дисплей.
.MACRO LCD_FIELD
ldi R16 , 0x2b ; Column Address Set Координата X
rcall dspl_SEND_COM
ldi R16, high(@0) ; XS
ldi R17, low(@0)
ldi R18, high(@1) ; XE
ldi R19, low(@1)
rcall dspl_SEND_DATA_32
ldi R16 , 0x2a ; Row Address Set Координата Y
rcall dspl_SEND_COM ;
ldi R16, high(@2) ; YS
ldi R17, low(@2)
ldi R18, high(@3) ; YE
ldi R19, low(@3)
rcall dspl_SEND_DATA_32
ldi R16 , 0x2C ; RAMWR (2Ch): Memory Write
call dspl_SEND_COM
.ENDMACRO
Пн мар 09, 2020 07:24:26
Пн мар 09, 2020 07:40:04
shonty писал(а):Посему в Вашем, shonty, случае лучше таки подпрограмма с передачей параметров через стек или блок регистров (массив в ОЗУ).
SPI_WAIT
Пн мар 09, 2020 08:02:51