Программирование. Ассемблер Intel 8086

Содержание

Слайд 2

Ассемблер Intel 8086

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

Ассемблер – машинно-ориентированный язык, расширенный средствами управления

Ассемблер Intel 8086 Программирование на языке Ассемблер Ассемблер – машинно-ориентированный язык, расширенный
трансляцией, средствами связывания программ и макросредствами.
Ассемблер – это программа, генерирующая машинный код из исходного кода на языке Ассемблер.

Слайд 3

Ассемблер Intel 8086

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

Ассемблер Intel 8086 Программирование на языке Ассемблер

Слайд 4

Ассемблер Intel 8086

Характерные черты языка Ассемблер

1) использование символических имён операций;
2) использование символических

Ассемблер Intel 8086 Характерные черты языка Ассемблер 1) использование символических имён операций;
имён полей памяти вместо адресов:
3) автоматическое распределение памяти;
4) исходный текст программы на Ассемблере состоит из операторов, каждый из которых занимает отдельную строку.

Имя поля заменяет его адрес, а не значение, т.е. Summa = 45h

Слайд 5

Ассемблер Intel 8086. Синтаксис.
Если строка в программе одна, то она должна содержать

Ассемблер Intel 8086. Синтаксис. Если строка в программе одна, то она должна
директиву ассемблера end, завершающую процесс трансляции.

Синтаксис программы

Слайд 6

Ассемблер Intel 8086. Синтаксис.

Синтаксис строки

Ассемблер Intel 8086. Синтаксис. Синтаксис строки

Слайд 7

Ассемблер Intel 8086. Синтаксис.
Символ – любой отображаемый (печатный) символ.

Синтаксис комментария

Ассемблер Intel 8086. Синтаксис. Символ – любой отображаемый (печатный) символ. Синтаксис комментария

Слайд 8

Ассемблер Intel 8086. Синтаксис.

Команда – указание команды (инструкции) процессора

Синтаксис команды

Ассемблер Intel 8086. Синтаксис. Команда – указание команды (инструкции) процессора Синтаксис команды

Слайд 9

Ассемблер Intel 8086. Синтаксис.

Директива – команда, выполняемая транслятором во время обработки программы,

Ассемблер Intel 8086. Синтаксис. Директива – команда, выполняемая транслятором во время обработки
имеет следующий синтаксис

Синтаксис директивы

Слайд 10

Ассемблер Intel 8086. Синтаксис.

Синтаксис макрокоманды

Ассемблер Intel 8086. Синтаксис. Синтаксис макрокоманды

Слайд 11

Ассемблер Intel 8086. Синтаксис.
Понятие буквы в ассемблере включает в себя все латинские

Ассемблер Intel 8086. Синтаксис. Понятие буквы в ассемблере включает в себя все
буквы, причем по умолчанию заглавные и прописные буквы не различаются, и символы @, $, &, _, ?. Цифры – арабские от 0 до 9.

Синтаксис метки

Слайд 12

Ассемблер Intel 8086

Выполнение трансляции и компоновки

Ассемблер Intel 8086 Выполнение трансляции и компоновки

Слайд 13

Ассемблер Intel 8086

Компоненты и структура программы

Пример 1. Программа читает с клавиатуры три

Ассемблер Intel 8086 Компоненты и структура программы Пример 1. Программа читает с
символа, уменьшает их коды на 1 и отображает на экране результат преобразования.

dosseg
.model small
.stack 200h
.data
DisplayString db 13, 10
ThreeChars db 3 dup(?)
db '$'
.code
Begin:
mov ax,@Data
mov ds, ax
mov bx, offset ThreeChars
mov ah, 1
int 21h
dec al

mov [bx], al
inc bx
int 21h
dec al
mov [bx], al
inc bx
int 21h
dec al
mov [bx], al
mov dx, offset DisplayString
mov ah, 9
int 21h
mov ax, 4C00h
int 21h
end Begin

Слайд 14

Ассемблер Intel 8086.

Упрощённые директивы:
DOSSEG – определяет порядок следования сегментов
.MODEL – задание модели

Ассемблер Intel 8086. Упрощённые директивы: DOSSEG – определяет порядок следования сегментов .MODEL
памяти
.DATA – сегмент данных
.CODE – сегмент кода
.STACK – определяет размер сегмента стека

Сегментные директивы

Слайд 15

Ассемблер Intel 8086.
Примечания:
tiny – код и данные располагаются в одном сегменте,

Ассемблер Intel 8086. Примечания: tiny – код и данные располагаются в одном
small – код и данные могут располагаться в разных сегментах;
large – массивы не могут быть больше 64 Кбайт, huge – массивы могут значительно превышать размер 64 КБайта.

Сегментные директивы: модели памяти

Слайд 16

Ассемблер Intel 8086.

Режимы адресации данных

Ассемблер Intel 8086. Режимы адресации данных

Слайд 17

Ассемблер Intel 8086.

Режимы адресации данных

Ассемблер Intel 8086. Режимы адресации данных

Слайд 18

Ассемблер Intel 8086.

DB – 1 байт
DW – 1 слово (2 байта)
DD

Ассемблер Intel 8086. DB – 1 байт DW – 1 слово (2
– двойное слово (4 байта)
DF, DP – 6 байтов (для i386 и старше)
DQ – 8 байтов
DT – 10 байтов

Инициализация данных: директивы

Слайд 19

Ассемблер Intel 8086.

y, x - указывает на первый элемент массива.
Адрес

Ассемблер Intel 8086. y, x - указывает на первый элемент массива. Адрес
элемента массива – адрес младшего байта элемента.
Для одномерного массива справедлива формула определения адреса заданного элемента:
E[i] = y + i* size
size – размер элемента массива

Индексирование элементов массива

Слайд 20

Ассемблер Intel 8086.

1. Способ модификации команд (нереентерабельные программы):
4 0000 0007 A

Ассемблер Intel 8086. 1. Способ модификации команд (нереентерабельные программы): 4 0000 0007
dw 7
6 0004 ???? C dw ?
11 000B A1 0000r mov ax, A
17 0018 A3 0004r mov C, ax

Способы обращения к элементам массива

Слайд 21

Ассемблер Intel 8086.

2. Использование регистровой относительной адресации:
A dw 1,7,-6,8,3
mov si, 2
mov cx, 4
for_cycle: mov ax, A[si]
do_else: add si, 2
loop for_cycle

Способы

Ассемблер Intel 8086. 2. Использование регистровой относительной адресации: A dw 1,7,-6,8,3 mov
обращения к элементам массива

Слайд 22

Ассемблер Intel 8086.

При использовании в программе многомерных массивов производится линеаризация массива.
После

Ассемблер Intel 8086. При использовании в программе многомерных массивов производится линеаризация массива.
линеаризации элементы многомерного массива располагаются в памяти друг за другом:

Многомерные массивы

E[i,j] = y + i*size*l+j*size
y – адрес начала массива
l – кол-во элементов в строке
i – номер строки
j – номер столбца

Слайд 23

Ассемблер Intel 8086.

1. Инициализация массивов:
а) массив из 8 элементов типа «двойное

Ассемблер Intel 8086. 1. Инициализация массивов: а) массив из 8 элементов типа
слово»:
DArray DD 0, 1, 2, 3, 4
DD 5, 6, 7
б) массив из ста нулей:
WArray DW 100 DUP(0)
в) массив из 50 кодов ‘0’:
BArray DB 50 DUP(‘0’)
г) массив из 19 любых элементов:
SArray DW 19 DUP(?)

Инициализация данных: примеры

Слайд 24

Ассемблер Intel 8086.

2. Инициализация строки
String1 DB ‘A’, ‘B’, ‘C’, ‘D’
String2 DB

Ассемблер Intel 8086. 2. Инициализация строки String1 DB ‘A’, ‘B’, ‘C’, ‘D’
‘ABCD’
; String1 = String2
String3 DB ‘Line’, 0Dh, 0Ah, ‘$’

Инициализация данных: примеры

Слайд 25

Ассемблер Intel 8086.

Типы меток:
1) BYTE 2) WORD
3) DWORD 4) FWORD, PWORD
5) QWORD 6) TBYTE
7)

Ассемблер Intel 8086. Типы меток: 1) BYTE 2) WORD 3) DWORD 4)
NEAR 8) FAR
9) PROC 10) UNKNOWN

Именованные области памяти