Ср янв 19, 2011 18:24:27
Ср янв 19, 2011 18:53:57
Ср янв 19, 2011 23:03:10
Ср янв 19, 2011 23:19:18
Барсик писал(а):Программирования на ассемблере для чайников не бывает.
Чт янв 20, 2011 10:17:34
zhu4er писал(а):Как то в университете изучал АСМ для 580 проца(кто не знает что это за проц - Гугл рулит) - это был КОШМАР на весь семестр!!! А изучить надо было очень много команд, сейчас уже не помню, но кажется более 200 команд... В итоге я зарёкся никогда не писать на АСМе. Пишу только на С.
Чт янв 20, 2011 12:13:41
... хуже другое - многие, из тех кто начал изучать и не разобрался ставят крест на ассемблере. А вообще профи не рождаются ... и в том или ином вопросе - все "чайники"Барсик писал(а):Программирования на ассемблере для чайников не бывает.
чем больше инструкций - тем гибче язык, потому и не нравятся ПИКи, хотя опять же на любителя.Из них только 30 инструкций Вам хватит на всю жизнь
Чт янв 20, 2011 17:39:47
Чт янв 20, 2011 19:42:03
таблица команд c примерами и описаниями встроена в пакет AVR Studio. Если просто потренироваться, то ставьте версию 3.56 - не замет много места и at90s2313, atmega16, atmega32 поддерживаютcя средой.xkp писал(а):всего лиш спросил нет ли у кого таблицы команд
Чт янв 20, 2011 19:56:31
Чт янв 20, 2011 21:21:46
Пт янв 21, 2011 15:45:59
Пт янв 21, 2011 18:34:01
Сб янв 22, 2011 00:31:59
Сб янв 22, 2011 18:33:02
Сб янв 22, 2011 18:48:48
Сб янв 22, 2011 18:53:23
BOB51 писал(а):я так понимаю, хотелось человеку видеть нечто подобное:
xkp писал(а):... например:
SBI PORTd,0 ; перевод вывода микропроцессора d0 в логическую 1 ## d,0 d,1 ... d7 b,0 ... b,7 a,0 ... a,7 d,0 ... d,7 ##
CBI PORTd,0 ; перевод вывода микропроцессора d0 в логический 0 ## d,0 d,1 ... d7 b,0 ... b,7 a,0 ... a,7 d,0 ... d,7 ##
MOV m1,m2 ; перенос значения m2 в m1
JMP m1 ; переход к строке m1
где, например, верхним регистром (либо другим цветом, шрифтом и тд) написано неизменные команды, символы, слова и тд. а нижним регистром - меняемые. ну или как то так..
Сб янв 22, 2011 19:46:44
YS писал(а):Что до команд - совершенно необязательно учить их, а, тем более, учить все. Это просто не нужно - некоторые из них вообще преимущественно используются только компиляторами. Я например, когда пишу на асме, не стесняюсь использовать встроенный в AVR Studio справочник по ассемблеру. Тем более, что все команды ассемблера довольно прозрачно названы. Например, sbrs. Казалось бы, непонятно? На самом деле все очевидно и ясно - Skip [next instruction if] Bit [in] Register [is] Set. И, кстати, опять помогает английский... Т.о., вместо тупого заучивания имеем стройную систему интуитивно понятных команд. Ну и, естесственно, по названию вышеприведенной инструкции можно догадаться, что первый аргумент должен быть интересующим регистром, а второй - порядковым номером проверяемого бита. Также представляются и все остальные команды, что делает заучивание ненужным.
Сб янв 22, 2011 20:06:51
Сб янв 22, 2011 20:24:55
xkp писал(а):BOB51 писал(а):я так понимаю, хотелось человеку видеть нечто подобное:
несовсем то... писал в самом начале что мне надоxkp писал(а):... например:
SBI PORTd,0 ; перевод вывода микропроцессора d0 в логическую 1 ## d,0 d,1 ... d7 b,0 ... b,7 a,0 ... a,7 d,0 ... d,7 ##
CBI PORTd,0 ; перевод вывода микропроцессора d0 в логический 0 ## d,0 d,1 ... d7 b,0 ... b,7 a,0 ... a,7 d,0 ... d,7 ##
MOV m1,m2 ; перенос значения m2 в m1
JMP m1 ; переход к строке m1
где, например, верхним регистром (либо другим цветом, шрифтом и тд) написано неизменные команды, символы, слова и тд. а нижним регистром - меняемые. ну или как то так..
Сб янв 22, 2011 21:46:20
.device ATmega8515
.nolist
.include "C:\Program Files\Atmel\AVR Tools\AvrAssembler2\Appnotes\m8515def.inc"
.list
;=================
;Объявления:
.def temp=r16
.def Delay1=r17
.def Delay2=r18
.def Delay3=r19
.def temp2=r20
;=================
;Начало программы
rjmp Init
;=================
Init:
ldi temp,high(RAMEND)
out SPH,temp
ldi temp,low(RAMEND)
out SPL, temp
ldi temp, 0b1111111 ;Определяем входы и выходы порта В
out DDRA, temp ;
;=================
;Основное тело программы
Start:
ldi temp2, 5
Wait_main_1:
rcall Run2
dec temp2
brne Wait_main_1
ldi temp2, 5
Wait_main_2:
rcall Run1
dec temp2
brne Wait_main_2
rjmp Start
Run1:
ldi temp, 0b00000010
out PortA, temp
ldi temp2, 10
Wait1_1:
rcall Wait
dec temp2
brne Wait1_1
ldi temp, 0b00000100
out PortA, temp
ldi temp2, 10
Wait1_2:
rcall Wait
dec temp2
brne Wait1_2
ret
Run2:
sbi PortA,1
sbi PortA,2
ldi temp2,10
Wait2_1:
rcall Wait
dec temp2
brne Wait2_1
cbi porta,1
cbi porta,2
ldi temp2,10
Wait2_2:
rcall Wait
dec temp2
brne Wait2_2
ret
;задержка на доли секунды
Wait:
clr Delay1
ldi Delay2,0x30
ldi Delay3,0x00
Loop:
subi Delay1,1
sbci Delay2,0
sbci Delay3,0
brcc Loop
ret