Входные и выходные файлы 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. Если в имени метки используется двоеточие, то отделенная часть трактуется как оператор, а не как часть имени метки.