1 Определение 2 Структура команд ассемблера 3 Структура программы на ассемблере.

Презентация:



Advertisements
Похожие презентации
Архитектура ЭВМ Практика 3. Линейные программы на языке ассемблера.
Advertisements

Программирование на языке ассемблер (Assembler)
С ИСТЕМА КОМАНД ЕОМ. С ТРУКТУРА ТА ФОРМАТИ КОМАНД.
Микропроцессорные системы Программы и инструменты Это описание предполагает, что транслятор wavrasm правильно установлен на компьютер, на котором происходит.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 2 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Адресация Адресация Уточним понятие "адресация". Адресация (по Э. Таненбауму) – процесс определения местоположения операндов команды МП (их адреса). Адрес.
Архитектура ЭВМ Практика 2. Основы ассемблера..
Язык ASSEMBLER Команды пересылки данных Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.
Уровни организации ЭВМ. Машинный уровень Лекция 5.
Intel архитектура IA16 Основа большинства современных компьютеров.
Регистры общего назначения – сумматор, регистр данных, адресный регистр и т.д. Арифметико- логическое устройство Устройство управления
Определение констант для размещения их компилятором в составе инструкций языка Определение числовых констант: имя = значение PI= V_size = 5 M_size.
Программирование на Ассемблер к.т.н., доц. Красов А.В. Лекция 3 ФакультетМТС Курс3 Семестр6 Форма контролязачет Лекции14 часов Лабораторные работы12 часов.
Учебный курс Введение в цифровую электронику Лекция 6 Программирование микропроцессорной системы кандидат технических наук, доцент Новиков Юрий Витальевич.
Основы алгоритмизации Алгоритмы. Типы алгоритмов. Алгоритмы. Типы алгоритмов. Блок-схемы. Вопросы и задания. Вопросы и задания.
Директивы сегментации. Упрощенные директивы сегментации. Лекция доцента кафедры ИВТ ГрГУ кандидата технических наук Ливак Е.Н.
Организация обмена информацией Функции устройств магистрали.
ВЫПОЛНЕНИЕ АЛГОРИТМОВ КОМПЬЮТЕРОМ. Алгоритм, записанный на «понятном» компьютеру языке программирования, называется программой. Программа данные, предназначенные.
Лекция 5. Язык программирования - ассемблер. Логические основы компьютера.
Система команд процессора. Система команд процессора включает в себя четыре основные группы команд: команды пересылки данных; арифметические команды;
Транксрипт:

1 Определение 2 Структура команд ассемблера 3 Структура программы на ассемблере

Машинный код – система команд конкретной вычислительной машины (процессора), которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде.

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

Например, команда ADD – это сокращение от слова ADDITION. Поэтому использование языка низкого уровня существенно упрощает написание и чтение программ (по сравнению с программированием в машинных кодах). Язык низкого уровня привязан к конкретному процессору. Поэтому если программа написана для процессора PIC, то она не будет работать с другим процессором.

Язык программирования высокого уровня – это язык программирования, максимально приближённый к человеческому языку. Язык высокого уровня практически не привязан ни к конкретному процессору, ни к операционной системе. Язык ассемблера – это низкоуровневый язык программирования. Для каждого процессора существует свой язык ассемблера.

Ассемблер – это специальная программа, которая преобразует (компилирует) исходные тексты программы, написанной на языке ассемблера, в исполняемый файл (файл с расширением EXE или COM).

Разработка программы на Ассемблере состоит из следующих этапов: 1) Составление алгоритма в виде блок- схемы или структурного описания, 2) Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора текстов. Имя PROG может быть произвольным, а расширение ASM - обязательно,

3) Перевод (трансляция или ассемблирование) исходной программы в машинные коды с помощью транслятора TASM.EXE. На этом этапе получается промежуточный продукт PROG.OBJ (объектный код). Выявленные при этом синтаксические и орфографические ошибки исправляются повтором

4) Преобразование с помощью программы TLINK.EXE объектного кода PROG.OBJ в выполнимый код PROG.EXE или PROG.COM. 5) Выполнение программы и ее отладка начиная с п.1, если встретились логические ошибки.

Текст программы на Ассемблере содержит следующие операции: a. команды или инструкции, b. директивы или псевдо операторы, c. операторы, d. предопределенные имена. Действия обусловленные операциями перечисленными в пп.b, c, d выполняются на этапе трансляции, т.е. являются командами Ассемблеру.

Операции, называемые командами или инструкциями выполняются во время выполнения программы, т.е. являются командами микропроцессору. Инструкция записывается на отдельной строке и включает до четырех полей, необязательные из которых выделены [ ]: Метка или символический адрес- условный адрес операции.

Операндами могут быть явно или неявно задаваемые двоичные наборы, над которыми производятся операции. Операнды приводятся в одной из четырех систем счисления и должны оканчиваться символом b(B), o(O), d(D), h(H) для 2, 8, 10 или 16-ной системы счисления. К шестнадцатеричному числу добавляется слева ноль, если оно начинается с буквы.

Программа, написанная на ассемблере, содержит следующие компоненты: ОПЕРАТОРЫ; ПРЕДОПРЕДЕЛЁННЫЕ ИМЕНА; ДИРЕКТИВЫ; КОМАНДЫ.

1. ПРЕДОПРЕДЕЛЕННЫЕ ИМЕНА $ - программный счетчик. Отмечает текущий адрес в текущем - адрес начала сегмента данных. mov mov ds,ax; в сегментном регистре DS теперь адрес сегмента данных. ??date, ??time, ??filename - эти имена во время трансляции заменяются, соответственно на текущие дату, время и имя файла в формате ASCII.

2 ОПЕРАТОРЫ 1.() - скобки, определяют порядок вычислений 2.[] - например [BX] означает содержимое ячейки памяти с адресом в регистре bx. Признак косвенной адресации. 3.+, -, *, / - операторы сложения, вычитания, умножения и деления. mov ax, (2 * / 2) - 2; в регистр ax будет помещено число 8.

4. MOD - деление по модулю. Даёт остаток. 5. SHL,SHR - сдвиг операнда влево, вправо. mov si, b SHR 3; в регистр SI будет загружено число 0Ah ( ). 6. NOT - побитовая инверсия. 7. AND,OR,XOR – операции mov dl, (10d OR 5d) XOR 7d; (dl) будет равно 8.

8. : - переназначение сегмента. mov dl,[es:bx]; поместить в dl байт данных из сегмента es и отстоящий от его начала на (bx) байтов (смещение). 9. OFFSET - оператор получения смещения адреса относительно начала сегмента (то есть количества байтов от начала сегмента до идентификатора адреса). mov bx, OFFSET table

3 ДИРЕКТИВЫ (ПСЕВДООПЕРАТОРЫ) : - определяет близкую метку (в пределах сегмента). = - присваивает символическому имени значение выражения. CODE - определяет начало кодового сегмента, то есть сегмента, где располагаются коды программы. DATA - определяет начало сегмента данных.

DB,DW - директивы резервирующие один или несколько байтов: DB, или одно или несколько слов: DW. END - обозначает конец программы. ENDM - окончание блока или макроопределения ENDP - обозначает конец подпрограммы. EQU - присваивает символическому имени или строке значение выражения.

LABEL - определяет метку соответствующего типа. LOCAL - определяет метки внутри макроопределений как локальные и в каждом макрорасширении вместо них ассемблер вставляет уникальные метки: ??XXXX, где XXXX = ( FFFF)h. Почему ??XXXX ? Да потому что никому не должно прийти в голову начинать символическое имя с ??, и транслятор смело может генерировать метки не боясь совпадений.

MACRO - задает макроопределение. Swap MACRO a,b; где a,b - параметры макро (ячейки памяти).MODEL - определяет размер памяти под данные и код программы..MODEL tiny; под программу, данные и стек отводится один общий сегмент (64 Kb).

PROC - определяет начало подпрограммы. Print PROC NEAR ;здесь команды подпрограммы Print ENDP.... call Print;вызов подпрограммы..STACK - определяет размер стека..STACK 200h; выделяет 512 байтов для стека..RADIX base - определяет систему счисления по умолчанию, где base - основание системы счисления: 2, 8, 10, 16. ; - начало комментария.

4 КОМАНДЫ 1. Команды пересылки MOV DST,SRC; переслать (SRC) в (DST). Здесь и далее содержимое регистра, например регистра AL будет обозначаться - (AL) или (al), а пересылка в комментарии будет обозначаться знаком <--. PUSH RP; поместить на вершину стека содержимое пары регистров RP (например push bx).

POP RP; снять с вершины стека два байта и поместить в пару RP. XCHG DST, SRC; поменять местами содержимое (DST) и (SRC). Оба операнда не могут быть одновременно содержимым ячеек памяти. XLAT SRC; извлечь из таблицы с начальным адресом SRC байт данных имеющий номер от начала таблицы = (AL), и поместить его в AL. Адрес SRC должен находиться в регистре BX. Другой вариант: XLATB.

IN ACCUM, PORT; поместить в аккумулятор AL или AX байт или слово из порта с адресом PORT. Если адрес порта FF, то адрес порта указывается косвенно, через содержимое регистра DX (специальная функция регистра общего назначения). OUT PORT, ACCUM; переслать из аккумулятора AL или AX байт или слово в ВУ с символическим адресом PORT.

LEA RP,M; загрузить в регистр RP эффективный адрес (смещение) ячейки памяти с символическим адресом M. 2. Арифметические команды ADD DST, SRC; сложить содержимое SRC и DST и результат переслать в DST. add al, [mem_byte]; mem_byte однобайтовая ячейка памяти add [mem_word], dx; mem_word двухбайтовая ячейка памяти

INC DST; увеличить (DST) на 1 (инкремент (DST)). SUB DST, SRC; вычесть (SRC) из (DST) и результат поместить в DST. DEC DST; декремент (DST). CMP DST, SRC; сравнить содержимое DST и SRC. Эта команда выполняет вычитание (SRC) из (DST), но разность не помещает в DST и по результату операции воздействует на флаги.