
Lectures / 06-07
.pdf
Организация ЭВМ и систем
Тема 6-7
Введение в язык ассемблера

Трансляторы
Трансляторы
Компиляторы Интерпретаторы
Компиляторы с Ассемблеры языков высокого
уровня

Ассемблеры для МП Intel
• A86 |
Intel |
• TASM |
Borland |
• MASM |
Microsoft |
• NASM |
Netwide |
http://sourceforge.net/projects/nasm/
http://www.cryogen.com/nasm/

$
[]
?
Специальные символы
–смещение текущей команды (счетчик адресов)
–косвенная адресация
–неопределенное значение, либо символ в именах
( ) – ограничение выражения или его части
&– символ продолжения строки

Зарезервированные слова ассемблера
имена регистров
мнемокоды команд
директивы
прочие элементы языка
AX, AH, ..., BP, SP
ADD, MOV,
...,XOR
ASSUME,
SEGMENT,
..., END
BYTE, PTR, DUP,STACK,...

Операторы и директивы
Формат оператора
[метка:][префикс]команда[операнды][;комм]
Формат директивы (псевдокоманды)
[имя] директива [ операнды] [;коммент]
Примеры: |
|
|
COUNT DB 1 |
; директива, COUNT — имя |
|
M1: |
MOV AX ,0 ; команда, М1 — метка |
|
REP |
CMSB |
; команда с префиксом REP |

Директивы типа процессора
.8086 |
.286P |
.486P |
.8087 .386 .586
.186 |
.387 |
.586P |
.286 .386P
.287 .486

Структура программы
Имя 1
Сегмент стека
Конец сегмента
Имя 2
Сегмент данных
Конец сегмента
Имя 3 Стартовая метка:
Сегмент кода
Конец сегмента Конец программы
Логические
сегменты

Шаблон программы
SSEG SEGMENT STACK 'STACK'
..... .... .... ....
SSEG ENDS
DSEG SEGMENT
..... .... .... ....
DSEG ENDS
CSEG SEGMENT
ASSUME SS:SSEG,DS:DSEG,CS:CSEG START: .....
..... .... .... ....
CSEG ENDS END START

Директива SEGMENT
имя SEGMENT [выравнивание] [комбинирование] [класс]
[размер]
... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
имя ENDS
Пример:
SSEG SEGMENT PARA STACK ‘STACK’ USE32
Имя |
Директива |
Операнды |