Входные и выходные файлы MPASM
Повнофункціональний універсальний макроасемблер для всього сімейства мікропроцесорів PICmicro. Асемблер дозволяє генерувати шістнадцятирічний файл для запису в мікро контролер або формувати об’єктні файли для переміщення лінкером MPLINK.
Організатор бібліотек MPLIB
Лінкер MPLINK
Асемблер MPASM
Лекція 3. Асемблер
Begin
Begin
If EmptyO(sp) Then i := 0 Else i := Pos ( TopO(sp), '( + - * / ) ' );
NumAct := tab [ i, Pos( op, ' = ( + - * / ) ' ) – 1 ];
End;
Function Calc ( op :Char; Var sp: u ) :Boolean;
{вычисляет операцию ор, результат помещает в стек данных;
если успешно, то возвращает True.}
Var x, y :Real;
Calc := True;
IfEmpty( sp ) Then BeginCalc := False; Exit; End;
y := Pop ( sp );
IfEmpty( sp ) Then Begin Calc := False; Exit; End;
x := Pop ( sp );
Case op Of
'+': x := x + y;
'-': x := x - y;
'*': x := x * y;
'/': Ify=0 ThenCalc := False Elsex := x / y;
End;
Push ( sp, x );
End;
.......................................................................................................................................
Begin { головная программа}
ClrScr;
v := ' 4 * ( 2 + 3 ) / 9 = ' ;
ho := Nil; h := Nil;
j := 1; Ok := True; f := False;
While Not f Do
If v[j] In['0'..'9']
{если v[j] операнд, то положить его в стек, иначе вып-ть действие из tab}
Then Begin Val ( v[j], x, k ); Push ( h, x ); Inc( j ); End
Else If v[ j ] In [ '(', '+', '-', '*', '/' , ')', '=' ]
Then{ если v [ j ] есть операция}
Case NumAct( ho, v[j] ) Of
{ошибка в выражении} 0: Begin Ok := False;
f := True;
End;
{операцию в стек} 1: BeginPushO ( ho, v[j] ); Inc( j ); End;
{выч-ть верх операцию} 2: BeginOk := Calc ( PopO (ho), h );
f := Not Ok;
{а текущю оп-цию в стек} PushO ( ho, v[j] );
Inc( j );
End;
{ ' ( ' из стека } 3: Begin c := PopO ( ho );
Inc( j ) ;
End;
{ выч-ть верх. оп-цию} 4: Begin Ok := Calc ( PopO(ho), h );
f := Not Ok;
End;
{конец выражения} 5: Begin res := Pop ( h );
Ok := Empty ( h ) And( j >= Length( v ) );
f := True;
End;
End; {Case}
If Ok Then Writeln ( v, res :10 :6 )
ElseWrite ( 'ошибка в выражении или деление на 0 ' );
Readkey;
Еnd.
Типы файлов, связанные с ассемблером MPASM.
Тип файла | Описание |
.ASM | Исходный файл MPASM, <Source name> .ASM |
.LST | Файл листинга программы, <Source name> .LST |
.ERR | Список ошибок, возникших при компиляции, <Source name> .ERR |
.HEX | Файл кода программы, <Source name> .HEX |
.HXL/ .HXH | Файлы кода программы, отдельно младшие и старшие байты кода, <Source name> .HXL < Source name > .HXH |
.COD | Файл для отладчика, <Source name> .COD |
.0 | Объектный файл программы, <Source name> .0 |
Исходный файл (.ASM)
Исходный файл программы может быть создан в любом текстовом редакторе ASCII. Текст программы должен удовлетворять следующим требованиям:
Каждая строка исходного файла может содержать до четырех информационных полей:
- метка;
- мнемоника команды;
- операнды команды;
- комментарии.
Необходимо соблюдать порядок расположения информационных полей в строке. Метки должны начинаться с первой колонки. Мнемоники команд должны начинаться со второй (и далее) колонки. Операнды следуют за мнемоникой команды. Комментарии могут следовать за операндами, мнемониками и метками и могут начинаться в любой колонке. Максимальная ширина колонки 255 символов. Метки от мнемоник должны отделяться двоеточием, пробелами или символами табуляции, операнды должны разделяться запятыми.
Метки
Метка должна начинаться в колонке 1. За ней может следовать двоеточие (:), пробелы, символы табуляции или конец строки.
Метка должна начинаться с символа латинского алфавита или символа подчеркивания (_) и может состоять из алфавитно-цифровых символов латинского алфавита, символа подчеркивания (_) или знака вопроса (?).
Максимальная длина метки 32 символа.
По умолчанию метки чувствительны к регистру символов, этот параметр может быть изменен в командной строке при запуске MPASM. Если в имени метки используется двоеточие, то отделенная часть трактуется как оператор, а не как часть имени метки.