SlideShare a Scribd company logo
LOGO
Директивы языка
ассемблера
Лекция № 19
31.05.13
Программа на ассемблере представляет собой
совокупность блоков памяти, называемых сегментами
памяти.
Программа может состоять из одного или нескольких
таких блоков-сегментов.
Каждый сегмент содержит совокупность
предложений языка, каждое из которых занимает
отдельную строку кода программы.
Предложения ассемблера бывают четырех типов:
• команды или инструкции, представляющие собой
символические аналоги машинных команд. В
процессе трансляции инструкции ассемблера
преобразуются в соответствующие команды
системы команд микропроцессора;
• макрокоманды — оформляемые определенным
образом предложения текста программы,
замещаемые во время трансляции другими
предложениями;
• директивы, являющиеся указанием транслятору
ассемблера на выполнение некоторых действий. У
директив нет аналогов в машинном представлении;
• строки комментариев, содержащие любые
символы, в том числе и буквы русского алфавита.
Комментарии игнорируются транслятором.
Упрощенные директивы сегментации
Программный модуль может иметь только
определенные типы сегментов, которые определяются
упрощенными директивами описания сегментов.
Для простых программ, содержащих по одному
сегменту кода, данных и стека, используют упрощенные
директивы сегментации MODEL.
Формат директи-
вы
Назначение
.CODE [имя] Начало или продолжение сегмента кода
.DATA Начало или продолжение сегмента иници-
ализированных данных.
.STACK [размер] Начало или продолжение сегмента стека
модуля. Параметр [размер] задает размер
стека
Обязательным параметром директивы MODEL
является модель памяти, которая определяет набор
сегментов и их размеры, способ связывания
сегментов и сегментных регистров.
Модель памяти имеет значения TINY, SMALL,
MEDIUM, COMPACT или LARGE.
Модель small выделяет по 64 Кбайт под сегменты
кода и данных и позволяет создавать программы
размером до 128 Кбайт.
Ее используют для большинства программ на
ассемблере. Сегменты могут пересекаться.
Директива MODEL SMALL автоматически связывает
сегменты с предопределенными именамипредопределенными именами (.code, .stack)
с сегментными регистрами CS и SS, явно связывать
нужно только сегмент данных .data с регистром DS.
Директивы определения данных позволяют
определить переменные в памяти различного размера:
DB - 1 байт
DW - 2 байта = 1 слово
DD - 4 байта = 1 двойное слово
DQ - 8 байт = 1 четвертное слово
DT - 10 байт
Первая программа
.Model Small ;Модель памяти ближнего типа
.Stack 100h ;Определяет стек размером 100h
.Data ;Начало сегмента данных
Hello DB 'Лабораторная работа №2 !$' ;Зарезервировали память
;для переменной HELLO
.Code ;Начало сегмента кода
Start:
mov ax,@DATA ;Формирование адреса сегмента
mov ds,ax ;данных
lea DX,Hello ;Установить в DX адрес переменной HELLO
mov ah,09h ;Функция DOS вывода строки
int 21h ;Вывод строки на экран
mov ax,4C00h ;Функция DOS завершения
int 21h ;программы
END start ;конец программы
КОМАНДЫ ПЕРЕСЫЛКИ (КОПИРОВАНИЯ)
Алгоритм: на место первого операнда пересылается
(копируется) значение второго: ор1:=ор2. Флаги не
меняются.
Допустимые комбинации операндов:Допустимые комбинации операндов:
Im – непосредственный операнд,
reg – регистр,
mem – память,
Размеры операндов должны быть одинаковы.
MOV op1, op2
ор1 ор2
Reg (кроме IP, CS) Im, reg, mem
Mem Im, reg
Запрещены пересылки:
1) из одной ячейки памяти в другую,
2) из одного сегментного регистра в другой,
3) непосредственного операнда в сегментный регистр
4) адреса в сегментный регистр
Обойти запреты можно, использовав промежуточный
регистр.
ПРИМЕРЫ
Скопировать слово из переменной var1 в var2 ( запрет 1):
MOV АХ, var1
MOV var2, AX
Переслать данные из регистра DS в ES ( запрет 2):
MOV АХ, DS
MOV ES, AX
Записать число 100 в сегментный регистр DS ( запрет 3):
MOV АХ, 100
MOV ES, AX ; ES:=100
039

More Related Content

PPT
лекции спрг 6_семестр (1)
PDF
Теория языков программирования некоторые слайды к лекциям
PPTX
8 повторение основ алгоритмизации и программирования
PDF
C++ Базовый. Занятие 01.
PDF
Анализ указателей в программах с вызовами библиотечных функций
PDF
C++ Базовый. Занятие 03.
PPS
Язык программирования Pascal
PDF
лекции спрг 6_семестр (1)
Теория языков программирования некоторые слайды к лекциям
8 повторение основ алгоритмизации и программирования
C++ Базовый. Занятие 01.
Анализ указателей в программах с вызовами библиотечных функций
C++ Базовый. Занятие 03.
Язык программирования Pascal

What's hot (10)

PPTX
Ayan9r1 po(1)
PPTX
системное администрирование
PDF
C++ Базовый. Занятие 04.
PPT
Лекция №4(часть 1) Организация ЭВМ и систем
PPTX
Равиль Губайдуллин - Annotation processing
PPT
подпрограммы в языке программирования паскаль
PPTX
PDF
ИРБИС: Редактирование конвертора Rusm-Irbis
PDF
О.В.Сухорослов "Паралленльные вычисления"
Ayan9r1 po(1)
системное администрирование
C++ Базовый. Занятие 04.
Лекция №4(часть 1) Организация ЭВМ и систем
Равиль Губайдуллин - Annotation processing
подпрограммы в языке программирования паскаль
ИРБИС: Редактирование конвертора Rusm-Irbis
О.В.Сухорослов "Паралленльные вычисления"
Ad

Viewers also liked (13)

PDF
Merit Award - ESSENCE Bike by Paulo Oliveira - 14th IBDC
PPTX
The 4 Things You Need To Know Before Migrating Your Business To The Cloud
PDF
PDF
Ghid violenta in familie
PPT
39
DOC
57
DOC
37
DOC
5
DOC
лекция 18
DOC
03
DOCX
Mudra pt elimin.negativitatii
DOC
8
PDF
The Four Knowledges of Sustainable Management: A Developing Tool to Allow Act...
Merit Award - ESSENCE Bike by Paulo Oliveira - 14th IBDC
The 4 Things You Need To Know Before Migrating Your Business To The Cloud
Ghid violenta in familie
39
57
37
5
лекция 18
03
Mudra pt elimin.negativitatii
8
The Four Knowledges of Sustainable Management: A Developing Tool to Allow Act...
Ad

Similar to 039 (10)

PPT
system software programming - assembler programming.pp
PPT
038
PPT
Лекция №3
PPT
024
PPSX
PPSX
PPT
НуП_Лекция 8. Работа с файлами на Ассемблере.ppt
PPT
НуП_Лекция 2. Управление программами.ppt
PPTX
C language lect_08_introduction
PPT
НуП_Лекция 5. Управление видеосистемой.ppt
system software programming - assembler programming.pp
038
Лекция №3
024
НуП_Лекция 8. Работа с файлами на Ассемблере.ppt
НуП_Лекция 2. Управление программами.ppt
C language lect_08_introduction
НуП_Лекция 5. Управление видеосистемой.ppt

More from JIuc (20)

DOCX
выступление на совет директоров
DOC
тест по теме системы счисления
DOC
тест по теме компьютерные коммуникации
DOC
тест по теме аппаратное обеспечение эвм
DOC
тест по теме устройство компьютера (20 вопросов)
DOC
тест Atutor аппаратное обеспечение
DOC
итоговый тест по дисциплине аппаратное обеспечение эвм
DOC
тест по теме основные устройства компьютера
DOC
тесты сортировка в бд Excel
DOCX
тест создание и модифиация структуры бд
DOC
тест система управления базами данных
DOCX
тест работа с макросами и внешними данными
DOCX
тест по Sql
DOCX
тест ключи, связи, индексы поиск и фильтрация
DOCX
тест запросы
DOC
тест бд
DOC
тест база данных. основные функции
DOC
тестирование по разделу архитектура эвм
DOC
тест треннинг по архитектуре
DOC
тест треннинг по архитектуре
выступление на совет директоров
тест по теме системы счисления
тест по теме компьютерные коммуникации
тест по теме аппаратное обеспечение эвм
тест по теме устройство компьютера (20 вопросов)
тест Atutor аппаратное обеспечение
итоговый тест по дисциплине аппаратное обеспечение эвм
тест по теме основные устройства компьютера
тесты сортировка в бд Excel
тест создание и модифиация структуры бд
тест система управления базами данных
тест работа с макросами и внешними данными
тест по Sql
тест ключи, связи, индексы поиск и фильтрация
тест запросы
тест бд
тест база данных. основные функции
тестирование по разделу архитектура эвм
тест треннинг по архитектуре
тест треннинг по архитектуре

039

  • 2. Программа на ассемблере представляет собой совокупность блоков памяти, называемых сегментами памяти. Программа может состоять из одного или нескольких таких блоков-сегментов. Каждый сегмент содержит совокупность предложений языка, каждое из которых занимает отдельную строку кода программы.
  • 3. Предложения ассемблера бывают четырех типов: • команды или инструкции, представляющие собой символические аналоги машинных команд. В процессе трансляции инструкции ассемблера преобразуются в соответствующие команды системы команд микропроцессора; • макрокоманды — оформляемые определенным образом предложения текста программы, замещаемые во время трансляции другими предложениями;
  • 4. • директивы, являющиеся указанием транслятору ассемблера на выполнение некоторых действий. У директив нет аналогов в машинном представлении; • строки комментариев, содержащие любые символы, в том числе и буквы русского алфавита. Комментарии игнорируются транслятором.
  • 5. Упрощенные директивы сегментации Программный модуль может иметь только определенные типы сегментов, которые определяются упрощенными директивами описания сегментов. Для простых программ, содержащих по одному сегменту кода, данных и стека, используют упрощенные директивы сегментации MODEL. Формат директи- вы Назначение .CODE [имя] Начало или продолжение сегмента кода .DATA Начало или продолжение сегмента иници- ализированных данных. .STACK [размер] Начало или продолжение сегмента стека модуля. Параметр [размер] задает размер стека
  • 6. Обязательным параметром директивы MODEL является модель памяти, которая определяет набор сегментов и их размеры, способ связывания сегментов и сегментных регистров. Модель памяти имеет значения TINY, SMALL, MEDIUM, COMPACT или LARGE. Модель small выделяет по 64 Кбайт под сегменты кода и данных и позволяет создавать программы размером до 128 Кбайт. Ее используют для большинства программ на ассемблере. Сегменты могут пересекаться.
  • 7. Директива MODEL SMALL автоматически связывает сегменты с предопределенными именамипредопределенными именами (.code, .stack) с сегментными регистрами CS и SS, явно связывать нужно только сегмент данных .data с регистром DS.
  • 8. Директивы определения данных позволяют определить переменные в памяти различного размера: DB - 1 байт DW - 2 байта = 1 слово DD - 4 байта = 1 двойное слово DQ - 8 байт = 1 четвертное слово DT - 10 байт
  • 9. Первая программа .Model Small ;Модель памяти ближнего типа .Stack 100h ;Определяет стек размером 100h .Data ;Начало сегмента данных Hello DB 'Лабораторная работа №2 !$' ;Зарезервировали память ;для переменной HELLO .Code ;Начало сегмента кода Start: mov ax,@DATA ;Формирование адреса сегмента mov ds,ax ;данных lea DX,Hello ;Установить в DX адрес переменной HELLO mov ah,09h ;Функция DOS вывода строки int 21h ;Вывод строки на экран mov ax,4C00h ;Функция DOS завершения int 21h ;программы END start ;конец программы
  • 10. КОМАНДЫ ПЕРЕСЫЛКИ (КОПИРОВАНИЯ) Алгоритм: на место первого операнда пересылается (копируется) значение второго: ор1:=ор2. Флаги не меняются. Допустимые комбинации операндов:Допустимые комбинации операндов: Im – непосредственный операнд, reg – регистр, mem – память, Размеры операндов должны быть одинаковы. MOV op1, op2 ор1 ор2 Reg (кроме IP, CS) Im, reg, mem Mem Im, reg
  • 11. Запрещены пересылки: 1) из одной ячейки памяти в другую, 2) из одного сегментного регистра в другой, 3) непосредственного операнда в сегментный регистр 4) адреса в сегментный регистр Обойти запреты можно, использовав промежуточный регистр.
  • 12. ПРИМЕРЫ Скопировать слово из переменной var1 в var2 ( запрет 1): MOV АХ, var1 MOV var2, AX Переслать данные из регистра DS в ES ( запрет 2): MOV АХ, DS MOV ES, AX Записать число 100 в сегментный регистр DS ( запрет 3): MOV АХ, 100 MOV ES, AX ; ES:=100