Page 55 - 6733
P. 55

Команда може не мати операндів або мати один чи два операнди, над якими
            виконується  задана  мнемонікою  операція.  Якщо  команда  має  два  операнди,  то
            результат виконання записується у перший операнд.
                  По  замовчуванню  всі  константи  в  тексті  програми  є  десятковими.  Для
            шістнадцяткових констант слід вказувати суфікс h, для двійкових – суфікс b.
                  Якщо  в  деякій  команді  використовується  безпосередньо  вказана  константа
            (число),  перед  нею  обов’язково  повинен  бути  символ  #.  Якщо  не  вказати  цей
            символ,  компілятор  інтерпретує  число  як  адресу  комірки  пам’яті.  Наприклад,
            команда
                  MOV A, #10
                  означає "занести в регістр А число 10 ", а команда
                  MOV A, 10
                  означає "занести в регістр А вміст комірки пам’яті з адресою 10".

                  Директива  CSEG  AT  0  означає,  що  наступна  за  нею  команда  буде
            розміщуватись за адресою 0.
                  Архітектура  мікроконтролера  8051  передбачає,  що  перша  команда,  яка
            починає виконуватись після включення живлення, розміщується за адресою 0, а
            підпрограми обробки переривань повинні розміщуватись за адресами 0003, 000В,
            0010,  001В,  0023,  тому  за  адресою  0,  як  правило,  розміщують  команду
            безумовного переходу на першу команду основної програми, яка розташовується
            в будь-якій вільній області пам’яті програм. Команда безумовного переходу має
            формат

                  JMP <мітка>

                  Мітка  може  являти  собою  довільну  послідовність  символів  букв,  цифр  та
            знаків _, що починається з букви. Мітка може розміщуватись в довільному місці
            програмного  коду,  після  мітки  стаивться  двокрапка  (в  командах  переходів
            вказується лише ім’я мітки, без двокрапки).

                  Щоб  не  задумуватись  над  тим,  за  якими  адресами  розміщувати  команди  і
            дані, використовують сегменти – області пам’яті різних типів, в яких розміщують
            програмний код або змінні.
                  Синтаксис  асемблера  А51  передбачає, що  спочатку  слід  оголосити  сегмент
            директивою
                          <імя сегменту> SEGMENT <тип сегменту>
                  Тип  сегменту  може  бути  CODE  (код),  DATA  (внутрішній  ОЗП),  XDATA
            (зовнішній ОЗП), BIT (бітовий сегмент). Ім’я сегменту може бути довільним.
                  Після цього сегмент можна відкрити директивою
                          RSEG <імя сегменту>
                  що  вказує  початок  сегменту,  тобто  після  цієї  директиви  можна  писати
            директиви  резервування  памяті  (якщо  це  сегмент  даних  чи  стеку)  або  код
            програми (якщо це кодовий сегмент).


                                                               55
   50   51   52   53   54   55   56   57   58   59   60