1. Форумный чат переехал в Telegram.
  2. В сообществе нашего форума Вконтакте создан раздел по продаже электронных компонентов.
    Каждый может продать в нем свои залежавшиеся детали. Подробности здесь.

Туториал Ассемблер с самого нуля.

Тема в разделе "Программирование", создана пользователем UL7AAjr, 18 фев 2015.

  1. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.910
    Симпатии:
    315
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Сам пока не знаю.... Подождем - увидим:)
  2. Buba_Chkhadze

    Buba_Chkhadze Модератор Команда форума

    Сообщения:
    4.391
    Симпатии:
    331
    Адрес:
    Талгар
    подождем :)
  3. _VN_

    _VN_ В доску свой

    Сообщения:
    482
    Симпатии:
    64
    Род занятий:
    Инженер
    Адрес:
    Алматы
    Пример разработки на ассемблере
    Добавлен просто интересный компонент VICOR. Согласен, что не по теме, но...

    Вложения:

    Последнее редактирование: 15 сен 2015
  4. FreshMan

    FreshMan Частый гость

    Сообщения:
    1
    Симпатии:
    0
    Последнее редактирование модератором: 4 фев 2017
  5. _VN_

    _VN_ В доску свой

    Сообщения:
    482
    Симпатии:
    64
    Род занятий:
    Инженер
    Адрес:
    Алматы
    Мы уже в 2017 году живём, а Вы спрашиваете про продолжение. Хоть как-то поддерживайте изложение темы UL7AAjr.
    Последнее редактирование модератором: 4 фев 2017
  6. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.910
    Симпатии:
    315
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    Некогда пока, еще один интересный ассемблер изучаю)
  7. Lavad

    Lavad Гость

    Сообщения:
    2
    Симпатии:
    0
    Доброго времени суток!
    Прекрасная инициатива от UL7AAjr! Продолжения бы... (невзирая на столетие на дворе)
    В Ассемблере еще только-только начинаю, есть успехи. Переписываю одну из своих программ (Bascom, под Atmega8) на ассемблер, и застопорился на команде:
    Pulseout PortD , 3 , 5000 ' мигнем св/диодом -> около 20мс​
    Второй день ищу хоть какую-то аналогию на ASM-е... ни в какую :-(
    Попал сюда, увидел пример моргания светодиодом, обрадовался! Мне лишь нужно мигнуть диодом. Используя Ваш пример, попробовал так:
    $asm
    SBI DDRD, 3
    IN R0 , PORTD
    LDI R16 , $8
    EOR R0 , R16
    OUT PORTD , R0
    LDI R17, $FF​
    one_more:
    DEC R17
    BRNE one_more
    IN R0 , PORTD
    EOR R0 , R16
    OUT PORTD , R0​
    $end asm
    В симуляторе работает. Теперь 1-ый вопросик... Показанный пример создаст вспышку около 770 мкс (на частоте МК 1МГц). Даже в полной темноте ни черта не увидишь :). Следовательно, увеличить "делимое" ($FF) и использовать, как минимум, пару регистров (под число $FFFF)? Это может дать вспышку до 200мс длительности.
    2-ой вопросик: это самый короткий вариант для замены "Pulseout"? Или можно еще короче?
    3-ий вопросик... Симулятор симулятором... В конструкции, программу которой переписываю, заняты ВСЕ выводы МК. Подобное вмешательство через маску не нарушит работу остальных выводов, скажем, порта D?
    Последнее редактирование: 29 июн 2017
  8. UL7AAjr

    UL7AAjr В доску свой

    Сообщения:
    1.910
    Симпатии:
    315
    Род занятий:
    инженер-программист
    Адрес:
    Алма-Ата
    1-й вопрос. Да, можно сделать вложенный цикл еще по одному регистру, получится до FFFF
    2-й вопрос. Достаточно короткий, можно извернуться и сделать короче, но нет смысла экономить на командах если приходится наоборот замедлять процесс выполнения.
  9. Lavad

    Lavad Гость

    Сообщения:
    2
    Симпатии:
    0
    Может, это будет как потенциальная тема для продолжения курса "Ассемблер с самого нуля"...
    Проблемка такая: мне нужно контролировать состояние одной ножки (PC5, Atmega8) и выполнять соответствующие действия при 0 или 1 на ней.
    Написал так:
    sbic pinc , pc5 ; если на PC5 -> 0, пропустим следующую команду (rjmp)
    rjmp _step05 ; если на PC5 -> 1, идем на _step05
    <действия при PC5=0>​
    _step05:
    <действия при PC5=1>​
    Компилятор Баскома молча проглотил писанину - значит, все правильно. Но в железе... не работает :-(
    Что здесь не так? Есть ли другой способ/код достоверного контроля состояния ножки?
    SBIS (пропустить, если бит в регистре I/O установлен) тоже проверял. Что-то не то...

    P.S. В симуляторе все прекрасно отрабатывает.
    Последнее редактирование: 1 июл 2017

Поделиться этой страницей