Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 3 года назад пользователемОльга Бежан
2 1 Определение 2 Структура команд ассемблера 3 Структура программы на ассемблере
3 Машинный код – система команд конкретной вычислительной машины (процессора), которая интерпретируется непосредственно процессором. Команда, как правило, представляет собой целое число, которое записывается в регистр процессора. Процессор читает это число и выполняет операцию, которая соответствует этой команде.
4 Язык программирования низкого уровня (низкоуровневый язык программирования) – это язык программирования, максимально приближённый к программированию в машинных кодах. В отличие от машинных кодов, в языке низкого уровня каждой команде соответствует не число, а сокращённое название команды (мнемоника).
5 Например, команда ADD – это сокращение от слова ADDITION. Поэтому использование языка низкого уровня существенно упрощает написание и чтение программ (по сравнению с программированием в машинных кодах). Язык низкого уровня привязан к конкретному процессору. Поэтому если программа написана для процессора PIC, то она не будет работать с другим процессором.
6 Язык программирования высокого уровня – это язык программирования, максимально приближённый к человеческому языку. Язык высокого уровня практически не привязан ни к конкретному процессору, ни к операционной системе. Язык ассемблера – это низкоуровневый язык программирования. Для каждого процессора существует свой язык ассемблера.
7 Ассемблер – это специальная программа, которая преобразует (компилирует) исходные тексты программы, написанной на языке ассемблера, в исполняемый файл (файл с расширением EXE или COM).
8 Разработка программы на Ассемблере состоит из следующих этапов: 1) Составление алгоритма в виде блок- схемы или структурного описания, 2) Ввод в ЭВМ текста исходной программы PROG.ASM с помощью редактора текстов. Имя PROG может быть произвольным, а расширение ASM - обязательно,
9 3) Перевод (трансляция или ассемблирование) исходной программы в машинные коды с помощью транслятора TASM.EXE. На этом этапе получается промежуточный продукт PROG.OBJ (объектный код). Выявленные при этом синтаксические и орфографические ошибки исправляются повтором
10 4) Преобразование с помощью программы TLINK.EXE объектного кода PROG.OBJ в выполнимый код PROG.EXE или PROG.COM. 5) Выполнение программы и ее отладка начиная с п.1, если встретились логические ошибки.
11 Текст программы на Ассемблере содержит следующие операции: a. команды или инструкции, b. директивы или псевдо операторы, c. операторы, d. предопределенные имена. Действия обусловленные операциями перечисленными в пп.b, c, d выполняются на этапе трансляции, т.е. являются командами Ассемблеру.
12 Операции, называемые командами или инструкциями выполняются во время выполнения программы, т.е. являются командами микропроцессору. Инструкция записывается на отдельной строке и включает до четырех полей, необязательные из которых выделены [ ]: Метка или символический адрес- условный адрес операции.
13 Операндами могут быть явно или неявно задаваемые двоичные наборы, над которыми производятся операции. Операнды приводятся в одной из четырех систем счисления и должны оканчиваться символом b(B), o(O), d(D), h(H) для 2, 8, 10 или 16-ной системы счисления. К шестнадцатеричному числу добавляется слева ноль, если оно начинается с буквы.
14 Программа, написанная на ассемблере, содержит следующие компоненты: ОПЕРАТОРЫ; ПРЕДОПРЕДЕЛЁННЫЕ ИМЕНА; ДИРЕКТИВЫ; КОМАНДЫ.
15 1. ПРЕДОПРЕДЕЛЕННЫЕ ИМЕНА $ - программный счетчик. Отмечает текущий адрес в текущем - адрес начала сегмента данных. mov mov ds,ax; в сегментном регистре DS теперь адрес сегмента данных. ??date, ??time, ??filename - эти имена во время трансляции заменяются, соответственно на текущие дату, время и имя файла в формате ASCII.
16 2 ОПЕРАТОРЫ 1.() - скобки, определяют порядок вычислений 2.[] - например [BX] означает содержимое ячейки памяти с адресом в регистре bx. Признак косвенной адресации. 3.+, -, *, / - операторы сложения, вычитания, умножения и деления. mov ax, (2 * / 2) - 2; в регистр ax будет помещено число 8.
17 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.
18 8. : - переназначение сегмента. mov dl,[es:bx]; поместить в dl байт данных из сегмента es и отстоящий от его начала на (bx) байтов (смещение). 9. OFFSET - оператор получения смещения адреса относительно начала сегмента (то есть количества байтов от начала сегмента до идентификатора адреса). mov bx, OFFSET table
19 3 ДИРЕКТИВЫ (ПСЕВДООПЕРАТОРЫ) : - определяет близкую метку (в пределах сегмента). = - присваивает символическому имени значение выражения. CODE - определяет начало кодового сегмента, то есть сегмента, где располагаются коды программы. DATA - определяет начало сегмента данных.
20 DB,DW - директивы резервирующие один или несколько байтов: DB, или одно или несколько слов: DW. END - обозначает конец программы. ENDM - окончание блока или макроопределения ENDP - обозначает конец подпрограммы. EQU - присваивает символическому имени или строке значение выражения.
21 LABEL - определяет метку соответствующего типа. LOCAL - определяет метки внутри макроопределений как локальные и в каждом макрорасширении вместо них ассемблер вставляет уникальные метки: ??XXXX, где XXXX = ( FFFF)h. Почему ??XXXX ? Да потому что никому не должно прийти в голову начинать символическое имя с ??, и транслятор смело может генерировать метки не боясь совпадений.
22 MACRO - задает макроопределение. Swap MACRO a,b; где a,b - параметры макро (ячейки памяти).MODEL - определяет размер памяти под данные и код программы..MODEL tiny; под программу, данные и стек отводится один общий сегмент (64 Kb).
23 PROC - определяет начало подпрограммы. Print PROC NEAR ;здесь команды подпрограммы Print ENDP.... call Print;вызов подпрограммы..STACK - определяет размер стека..STACK 200h; выделяет 512 байтов для стека..RADIX base - определяет систему счисления по умолчанию, где base - основание системы счисления: 2, 8, 10, 16. ; - начало комментария.
24 4 КОМАНДЫ 1. Команды пересылки MOV DST,SRC; переслать (SRC) в (DST). Здесь и далее содержимое регистра, например регистра AL будет обозначаться - (AL) или (al), а пересылка в комментарии будет обозначаться знаком <--. PUSH RP; поместить на вершину стека содержимое пары регистров RP (например push bx).
25 POP RP; снять с вершины стека два байта и поместить в пару RP. XCHG DST, SRC; поменять местами содержимое (DST) и (SRC). Оба операнда не могут быть одновременно содержимым ячеек памяти. XLAT SRC; извлечь из таблицы с начальным адресом SRC байт данных имеющий номер от начала таблицы = (AL), и поместить его в AL. Адрес SRC должен находиться в регистре BX. Другой вариант: XLATB.
26 IN ACCUM, PORT; поместить в аккумулятор AL или AX байт или слово из порта с адресом PORT. Если адрес порта FF, то адрес порта указывается косвенно, через содержимое регистра DX (специальная функция регистра общего назначения). OUT PORT, ACCUM; переслать из аккумулятора AL или AX байт или слово в ВУ с символическим адресом PORT.
27 LEA RP,M; загрузить в регистр RP эффективный адрес (смещение) ячейки памяти с символическим адресом M. 2. Арифметические команды ADD DST, SRC; сложить содержимое SRC и DST и результат переслать в DST. add al, [mem_byte]; mem_byte однобайтовая ячейка памяти add [mem_word], dx; mem_word двухбайтовая ячейка памяти
28 INC DST; увеличить (DST) на 1 (инкремент (DST)). SUB DST, SRC; вычесть (SRC) из (DST) и результат поместить в DST. DEC DST; декремент (DST). CMP DST, SRC; сравнить содержимое DST и SRC. Эта команда выполняет вычитание (SRC) из (DST), но разность не помещает в DST и по результату операции воздействует на флаги.
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.