Структура на програма на асемблер - 3 лекция

Компютърна и комуникационна техника Презентация

Слайд 1

Структура на програма на асемблер

Слайд 2

Етапи на разработка на програма на Асемблер:
Интегрирана система за развитие MPLAB IDE[1]
Създаване и редактиране на сорс файлове.
Групиране на файлове в проекти.
Дебъг на сорс файлове.
Дебъг на изпълними файлове чрез симулатори и емулатори.

[1] IDE (Integrated Development Environment) – интегрирана система за развитие.

Слайд 3

Какво представлява езикът Aсемблер?
Определение 1. Програмата за работа на микроконтролера е последователност от инструкции. Тези инструкции определят последователността от действия, които трябва да изпълни микропроцесорът за реализиране на определена задача.
Определение 2. Разработването на правилна последователност от инструкции се нарича програмиране на микроконтролера.
Определение 3. Последователността от битове, която се изпълнява от микроконтролера, се нарича машинен език.
Определение 4. Асемблерът е компютърно ориентиран език за програмиране, в който инструкциите са символни мнемоники и обикновено те съответстват на множеството инструкции от машинния език. Асемблерът може да поддържа средства - макроинструкции, като в този случай той се нарича Макроасемблер.
Определение 5. Преобразуването на асемблерната програма в програма на машинен език се изпълнява от програма за транслиране, наречена Асемблер.
Определение 6. Процесът на транслиране се нарича асемблиране.
Асемблер Машинен език
[етикет] ADDLW k 11 111x kkkk kkkk

Слайд 4

Команди на Асемблера
Команди на асемблера се наричат смислови части от сорс кода, които управляват работата на Асемблера; определят инструкциите, които трябва да извърши микроконтролерът, и коментарите, отправени към програмистите.
Асемблерът MPASM за PIC микроконтролери може да се използва по два основни начина:
за генериране на абсолютен код, който може директно да се изпълни на микроконтролер;
за генериране на обектен код, който може да се свърже с други отделно асемблирани и компилирани модули.

Слайд 5

Генериране на абсолютен код

Слайд 6

Генериране на обектен код

Слайд 7

Входни и изходни файлове на асемблера
Сорс файл (.asm)
Включени файлове (.inc)
Изходни файлове:
Листингфайл (.lst)
Файл на грешките (.err)
Шестнадесетичен файл (.hex, .hxl, .hxh)
Символ и дебъгфайл (.cod)
Обектен файл (.o)

Слайд 8

Сорс файл (.asm)
Всеки сорс файл трябва да съдържа до четири типа информация (всяка колона до 255 символа):
етикети (до 32 символа);
мнемоники (асемблерските инструкции, директиви и макроси) ;
операнди (разделят се със ,);
коментари (след ;).

Слайд 9

Пример за сорс код
list p=16c54 ; използван микропроцесор
Dest equ 0x0B

оrg 0x0000
goto Start

org 0x01FF
Start movlw 0x0A
movwf Dest
bcf Dest, 3
goto Start
end

Слайд 10

Директиви
Директивите са команди на асемблера, които съществуват в сорскода, но не се транслират директно в машинен код. Те се използват за управление на работата на асемблера: неговия вход, изход и разположението на данните.
Директиви за управление (Control Directives) – управляват начина на асемблиране на кода.
Директиви за условно асемблиране (Conditional Assembly Directives) – разрешават секции от условно асемблиран код.
Директиви за данни (Data Directives) – управляват разположението на паметта и осигуряват начин за символен достъп до данните.
Директиви за управление на листинга (Listing Directives) – управляват формата на листинговия файл.
Директиви за макроси (Macro Directives) – управляват изпълнението и разположението на данните в тялото на макросите.
Директиви за обектния файл (Object File Directives) – използват се само когато се създава обектен файл.

Слайд 11

Директиви за управление
CONSTANT - Декларира символна константа
constant <label> [= <expr>,...,<label> [= <expr>] ]
constant BufLength = 512
VARIABLE - Декларира символна променлива
variable <label> [= <expr>,...,<label> [= <expr>] ]
variable BufLength = 512
#DEFINE - Дефинира текстов етикет
#define <name> [[(<arg>,...,<arg>)]<value>]
#define length 20
END - Край на програмен блок
EQU - Дефинира асемблерска константа
<label> equ <expr>
four equ 4
#INCLUDE - Включва допълнителен сорсфайл
#include <<include_file>> или #include "<include_file>“
#include “P16C73.inc”
ORG - Задава начало на програмен фрагмент
<label> org <expr>
оrg 0x0000
#UNDEFINE - Изтрива текстов етикет
#undefine <label>
#undefine length

Слайд 12

Директиви за условно асемблиране
ELSE - Начало на алтернативния блок след IF
ENDIF - Край на условен блок
ENDW - Край на While цикъл
IF - Начало на условен блок
if <expr>
IFDEF - Изпълнение, ако символът е дефиниран
ifdef <label>
IFNDEF - Изпълнение, ако символът не е дефиниран
ifndef <label>
WHILE - Изпълнява цикъл, докато условието е истина
while <expr>

if version == 100 ; проверява текущата версия
movlw 0x0a
movwf io_1
else
movlw 0x01a
movwf io_2
endif

Слайд 13

Директиви за данни
DB - Декларира данни от един байт
db <expr>[,<expr>,...,<expr>]
db 't', 0x0f, 'e', 0x0f, 's', 0x0f, 't', '\n'
DW - Декларира данни от една дума
dw <expr> [,<expr>,...,<expr>]
dw 39, "diagnostic 39", (d_list*2+d_offset)
FILL - Определя стойност за запълване на паметта
fill <expr>, <count>
fill 0x1009, 5 ; запълва с константа

Слайд 14

Директиви за управление на листинга
TITLE - Определя заглавие на програмата
title "<title_text>“
title "operational code, rev 5.0"
SUBTITLE - Определя подзаглавие на програмата
subtitlе "<sub_text>“
subtitle "diagnostic section"
PAGE - Вмъква нова страница в листинга

Слайд 15

Макроси
Макросът е последователност от асемблерни инструкции и директиви, които ще се вмъкнат от асемблера в редовете след извикването на макроса.
Дефиниране на макроса:
< macro_name > macro [<arg1>,<arg2> ..., <argn>]
:
endm
Макро директиви:
MACRO - Деклариране на макро дефиниция
<label> macro [<arg>,...,<arg>]
ENDM - Край на дефиницията на макроса
EXITM - Изход от макроса
LOCAL - Деклариране на локална макро променлива
local <label> [,<label>]
Извикване на макроса:
<macro_name> [<arg>, ..., <arg>]

Слайд 16

Заместване на текст в макросите
<arg> - Замества текста на аргумента като част от извикването на макроса.
#v(<expr>) - Връща цяла стойност на израза <expr>. Обикновено се използва за създаване на уникални имена на променливи с общи префикси или суфикси. Не може да се използва в условни асемблерски директиви (н-р IFDEF, WHILE).

Слайд 17

Пример за макрос
define_table macro
local a = 0
while a < 3
entry#v(a) dw 0
a += 1
endw
endm

entry0 dw 0
entry1 dw 0
entry2 dw 0
entry3 dw 0

Преглед на началото - целият файл след изтегляне

Описание

Асемблер - машинен език! Дисциплина: Едночипови микрокомпютри

0 коментара

Все още няма коментари. Бъдете първият, който ще коментира.

За да коментирате, трябва да сте влезли в профила си.

Влезте