NFLic

STM8 с нуля.

Принятые сокращения (Статья 4)

. - точка - перед меткой означает, что метка может быть использована во внешнем файле.

|; fail_1.asm                  |;file_2.asm                   |
|;                             |     EXTERN    label          |
|.label:                       |                              |
|     decw    X                |     ldw      X, #35000       |
|     jrne    label            |     call     label           |
|     ret                      |                              |

 

. - точка - разделитель между меткой и суффиксом, уточняющим размерность метки.

 
lab.b:
lab.w
lab.e

 

* - звездочка - текущее значение счетчика команд в формате MOTOROLA.

 
     jra    *   ; переход "на себя" (бесконечный цикл)

     segment 'rom'
start:
     ; some code
offset_to_start   EQU {*-start} 

     jp    {*+200}

 

* - звездочка - оператор времени сборки 3-го уровня - умножение (для формата MOTOROLA необходимо использовать mult).

 
; в индексный регистр копируется число $05AC
    ldw   X, #{33*44}      ; INTEL, TEXAS, ZILOG
    ldw   X, #{33 mult 44} ; MOTOROLA, INTEL, TEXAS, ZILOG

 

# - решетка - префикс числового значения, а не адреса.

 
; в индексный регистр загружается содержимое ячейки с адресом $5000
     ldw    X, $5000 
; в индексный регистр загружается число $5000
     ldw    X, #$5000

 

$ - доллар - префикс шестнадцатиричного предсавления в формате MOTOROLA.

% - процент - префикс двочного предсавления в формате MOTOROLA.

 
; в аккумулятор загружается число $A5 в шестнадцатиричном представлении
     ld    A, #$A5 
; в аккумулятор загружается то же число в десятичном представлении
     ld    A, #165
; в аккумулятор загружается то же число в двоичном представлении
     ld    A, #%10100101

 

A - accumulator - 8-разрядный регистр аккумулятор из состава ядра STM8.

CC - code condition - 8-разрядный регистр состояния из состава ядра STM8.

CC.C - флаг(признак) переноса/заема (беззнакового переполнения) регистра состояния CC.

CC.H - флаг(признак) полупереноса/полузаема (беззнакового переполнения) регистра состояния CC.

CC.N - флаг(признак) отрицательного результата регистра состояния CC.

CC.V - флаг(признак) знакового переполнения регистра состояния CC.

CC.Z - флаг(признак) нулевого результата регистра состояния CC.

high - оператор времени сборки 1-го уровня - возвращает старший байт выражения.

label equ $112233

    ld    A, #{low{seg label}} ; load A with $11
    ld    A, #{high label}     ; load A with $22
    ld    A, #{low lab1el}     ; load A with $33

 

low - оператор времени сборки 1-го уровня - возвращает младший байт выражения.

label equ $112233

    ld    A, #{low{seg label}} ; load A with $11
    ld    A, #{high label}     ; load A with $22
    ld    A, #{low lab1el}     ; load A with $33

 

mult - оператор времени сборки 3-го уровня - умножение .

 
; в индексный регистр копируется число $05AC
    ldw   X, #{33*44}      ; INTEL, TEXAS, ZILOG
    ldw   X, #{33 mult 44} ; MOTOROLA, INTEL, TEXAS, ZILOG

 

PC - PROGRAM COUNTER - 24-разрядный счетчик команд - содержит адрес следующей к выполнению команды.

PCE = {low{seg PC} - расширенный байт счетчика команд.

PCH = {high PC} - старший байт счетчика команд.

PCL = {low PC} - младший байт счетчика команд.

SP - STACK POINTER - 16-разрядный регистр указатель вершины/дна стека.

SPH = {high SP} - старший байт указатель вершины/дна стека.

SPL = {low SP} - младший байт указатель вершины/дна стека.

 

Машинные коды STM8 и команды ассемблера здесь. Адресное пространство STM8S103F3 тут.

 

[UART (Статья 3)][Оглавление.] [Стек в STM8 (Статья 5)]