среда, 17 декабря 2014 г.

Модель МК с точки зрения программиста

С точки зрения программиста МК - это автомат для работы с информацией (числами, данными). Сам этот автомат состоит из типовых узлов, которые работают по определенным (типовым) принципам. Эти принципы в целом одинаковы для всех МК. Отличия бывают в названиях и обозначениях, суть остаётся неизменной.

Основными узлами МК являются память (memory, mem, M) и вычислительное ядро (core), которое включает в себя арифметико-логическое устройство (АЛУ, англ. ALU, может выполнять логические операции, сложение, умножение и др.)


Любая память состоит из ячеек. В каждой ячейке записано число (данные, data). Каждая ячейка имеет номер, который называется адресом (address, addr). Доступ к данным ячейки осуществляется по её адресу. Доступ может быть на чтение (read, R) из памяти или на запись (write, W) в память. В простых дешевых МК в одной ячейке памяти обычно хранится один байт информации.

В ядре МК есть несколько особых ячеек памяти, которые имеют имя (и иногда адрес, но используется обычно имя). Эти особые ячейки называются регистрами МК. В STM8S есть регистры A (8 бит), X (16 бит), Y (16 бит), PC (24 бита) и несколько других. 

Ядро МК может выполнять фиксированный набор примитивных операций. Эти операции, для примера, могут быть такими:
  загрузить A <- M(addr1) 
     число из памяти М по адресу addr1 загрузить в регистр А
  сложить A <- A + 3
     к числу в регистре A добавить число 3 и записать обратно в А
  загрузить M(addr2) <- A
     число из регистра А записать в память М по адресу addr2

Перепишем тот же список операций по-другому:
  LD   A, M(addr1)
  ADD  A, 3
  LD   M(addr2), A

Такая запись последовательности элементарных операций МК называется программой на языке ассемблера. У каждого МК свой язык ассемблера и свои способы обозначения команд и адресов.


Далее представим, что: 
команда LD A,... имеет числовой код 1
команда ADD A,... имеет числовой код 2
команда LD ...,A имеет числовой код 3

Перепишем список операций в виде чисел:
  1 addr1
  2 3
  3 addr2

Эту последовательность чисел можно назвать программой для МК, представленной в числовом коде. Эта последовательность чисел может быть записана во Flash память и храниться в МК постоянно (даже при выключении питания).

Ядро МК "умеет" читать программу из памяти и выполнять соответствующие элементарные операции. Для организации процесса последовательного выполнения команд используется специальный регистр PC (program counter, счетчик [команд] программы). Этот регистр содержит адрес ячейки памяти той операции (команды), которая сейчас выполняется. Когда операция выполнена, значение PC увеличивается на длину выполненной операции, выполняется чтение кода следующей операции и ее выполнение. Таким образом организован процесс последовательного выполнения элементарных операций, записанных в памяти МК.

Существует отдельная группа операций МК, которая позволяет "нарушить" последовательное выполнение программы и перейти к выполнению программы по другому адресу - это команды перехода. На языке ассемблера они обычно начинаются с буквы J (от англ. jump - прыгнуть) и имеют вариации, например JRT, JRE, JREQ и др.

Например:
  Команда           Действие
  JRT addr3         PC <- addr3

Команды перехода могут быть безусловными и выполняться всегда, а могут быть условными и выполняться (или нет) в зависимости от результата предыдущей операции.

Объединение элементарных операций МК в последовательности с условными переходами позволяет реализовать сложные алгоритмы работы устройства. В этом состоит суть работы любого МК.

Комментариев нет:

Отправить комментарий