Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Микропроцессоры Конспект.doc
Скачиваний:
9
Добавлен:
14.02.2015
Размер:
1.27 Mб
Скачать

16.02.12

Основа программирования на языке Ассемблер.

В МПС используется программирование на языка Ассемблер. Термин Ассемблер имеент два значения:

  1. Ассемблером называется язык программирования мнемокодов команд.

  2. Ассемблером называется и специальная команда, транслятор, которая переводит (транслирует) мнемокоды в машинные коды, считываемые микропроцессором из памяти программ, дешифруемые и выполняемые. Процесс перевода мнекодов в машинные команды называется ассемблированием.

Программа на языке ассемблера содержит 2 типа выражения:

  1. Команды, которые транслируются в машинные коды

  2. Дерективы, которые управляют ходом трансляции.

Выражение имеет вид

{(метка)}:(мнемокод) {(операнд)}{,}{(операнд)>}{;комент}

В фигурных скобках мнемокод и операнды отделяются хотя бы одним пробелом или тобуляцией. Максимальная длина строки - 132 символа. Однако более часто используются строки их 80 символов, что приведены элементы выражения, которых может и не быть в некоторых командах. Метка соответствует длине экрана.

Dely:MOVAX,BX;метка, команда ;два операнда ;пример команды ассемблера

Метка на языке Ассемблера является символическим адресом команды. Метками обозначчаются не все команды, а только те, к которым нужно выполнять переход с помощью команд переходов или вызовов подпрограмм. После метки ставится ":". Первым символом в метке может быть буква или 1 из специальных символов (? . @ ____, $). Максимальная длина метки - 31 символ. Пример меток:

COVNT;

PAGE25/

РКОМИНДУЕТСЯ ПИСАТЬ СМЫСЛОВЫЕ МЕТКИ. Все метки в проге должны быть уникальными, т.е. не может быть команд с одинаковыми метками.

Нельзя использовать в качестве меток зарезервированные ассемблером слова к которым принадлежат коды команд, дерективы, имена регистров.

................являются зарезервированными и используются только для указания соответствующих регистров.

В командах переходов или вызовов подпрограмм обозначенние метки используется как операнд - Символический адрес перехода, например:

call,dely;вызов подпрограммы с меткойdely

Снемокод идентифицирует команды ассемблера. для мнемокодов используют сокращенные или полные английские слова, которые передают значения основной фуенкции команды add- сложить,sub- вычесть,xchg- обмен. Операнды отделяются запятыми. если заняты 2 операнда, то первые отделются источником, а второй приемником информации. Команда может содержать различные операнды разных типов. Комментарии игнорируются в процессе трансляции и используются для документирования и лучшего понимания содержания программы. Комментраии всегда начинаются с ";" и может содержать любые символы. комметрарий может занимать всю строку или быть расположенным за командой в одной строке. Поскольку комментарий не транслируется ........

17.02

Пргорамма на языке ассембела называется начальной, или начальным исходным программным модулем.

Ассемблированием - перевод исходного модуля в машинные коды, которые выполняет программа - Транслятор (TASM.COM).

в ЗЗАВИСИМОСТИ ОТ УСТАНОВОК ЗАДАВАЕМЫХ ПОЛЬЗОВАТЕЛЕЙ программа переводит исходный модуль в один из 2-х программных модулей: командный модуль (файл с расширением .comили объектный модуль .obj.

Командный модуль содкржит машинный коды команд с абсолютными адрксами и выполняется микропроцессором. Командый модуль целесообразно использовать, когда емкость программы не превышает размера одного сигмента. Первым оператором командного модуля является деректива ORG100H, которая распологает первую команду в сегменте кода со смещением 100h. Заканчиваться программа должна командойRETили стандартной процедурой корректного выхода вms-dos. Последней строкой программы может быть дериктиваEND.

Объектный модуль содержит машинные коды команд с относительными адресами. Объектный модуль выполняется в МПС после замены относительных адресов на абсолютные с помощью программы - компоновщика, например Linc.exe, которые генерирует модуль с расширением .exeфайл.Exeфайл в отличии от команлдного модуля может превышать объем одного сиигмента, однако в этом случае обязательно определять сигменты с помощью деректив ассемблера. Заканчиветсяexeфайл стандартной процедурой корректоного выхода вms-dos.

Программа - компоновщик имеет еще 1 назначение. Она оарпеделяет модуль с библеотечницми модулями или несколько отдельных модулей в один exе файл. Библеотечнми модулями называются оптечне файлы, которые содержат наиболее распростаненные подпрограммы. Библеотечные модули раззмещаются в специальном системном файле - библеотике.

При ассемблировании программа транслятор гененирует листинг и файл листинга - программы.

Листинг - это отображение на дисплее или бумаги текстов начального программного модуля (com) и сообщений, которые указывают на ошибки программирования, связанные с нарушением правил записи выражений, например, нет операнда или непралиный мнемокод команды.

Дерективы предназначены для управления процессом ассемблирования и формирования листинга. Они действуют только в процессе ассемблирования программы и не переводятся в машинные коды. Язык ассемблера содержит такие основные дериктивы:

  • SEGMENT иENDS

  • Начало и конца процедуры ProcиENDP

  • Назанчение процедуры ASSUME

  • начало ORG

  1. распределения и инициирования памяти DB,DW,DD

  2. END

  3. конец метки LABEL.

Пример написаня простой программы.

Простые программы целесообразно оформлять в виде командных файлов. Первой директивой таких программ является ORG100H, посденей -END. Написать программу сложения 2-х 8-разрядных ячеек памяти, которые находятся в сегменте данныхDSсо смещениями 1000Hи 1001Hсоответственно. Результат размистить в ячеейке памяти с адресом DS:1002H.

Мнемокод

Операнд

Комментарий

ORG

100H

; начало программы

MOV

AL [1000H]

;AL-DS [100H]

Переслать в 8-разрядные регистр ALв содержимое ячейки памяти с адресомDS[1000H]

ADD

AL, [1001H]

; AL-AL+DS; [1001H]

MOV

[1002H], AL

;DS:1002H-AL

; переслать содержимое ALв ячейкуDS[1002H]

END

;завершение программы

Задание 1 обнулить нечетные разряды

№2 кстановть единицы в четных разрядов

№проинфентироваать