
- •Введение
- •1. Архитектура процессора 8086
- •1.1. Программно доступные регистры микропроцессора
- •1.2. Сегментная организация памяти.
- •1.3. Способы адресации.
- •1.4. Организация стека.
- •1.5. Организация прерываний.
- •2. Загрузка и выполнение программ в DOS
- •2.1. EXE- и COM-программы
- •2.2. Выход из программы
- •3. Ассемблер, макроассемблер, редактор связей
- •4. Введение в язык Ассемблера
- •4.1. Структура программы на языке ассемблера
- •4.2. Операторы языка ассемблера
- •4.3. Приоритеты операций
- •4.4. Объявление и инициализация данных.
- •4.4.3. Структуры
- •4.4.4. Директива эквивалентности
- •4.6. Стандартные директивы определения сегментов
- •4.7. Директива INCLUDE
- •4.8. Ссылки вперед
- •5. Команды пересылки
- •5.1. Команда MOV
- •5.2. Команда обмена данных XCHG
- •5.3. Команды загрузки полного указателя LDS и LES
- •5.4. Команда перекодировки XLAT
- •5.5. Команды работы со стеком
- •5.6. Команды ввода-вывода
- •6. Арифметические команды
- •6.1. Команды арифметического сложения ADD и ADC
- •6.2. Команды арифметического вычитания SUB и SBB
- •6.3. Команда смены знака NEG
- •6.4. Команды инкремента INC и декремента DEC
- •6.5. Команды умножения MUL и IMUL
- •6.6. Команды деления DIV и IDIV
- •7. Команды побитовой обработки
- •7.1. Команды, выполняющие логические операции
- •7.2. Команды, выполняющие операции сдвигов
- •8. Команды сравнения и передачи управления
- •9. Подпрограммы и прерывания.
- •10. Команды работы со строками
- •11. Команды управления процессором
- •12. Структуры данных
- •12.1. Массивы
- •12.2. Связанные списки
- •13. Условное ассемблирование
- •14. Макросредства
- •14.1. Макродирективы
- •15. Языки высокого уровня и Turbo Assembler
- •15.1. Вызов подпрограмм и передача параметров в языке С++
- •15.2. Вызов ассемблерных программ из программ на языке С++
- •Литература
Рассмотрим пример.
#include <iostream.h> #pragma inline
void main(void)
{int a=10, b=20, c; cout<<”a=”<<a<<”b=”<<b<<’\n’;
asm mov ax,10 ; // в ax значение 10 asm mul a ; // умножение ax*a c=_AX;
cout<<”c=”<<c<<’\n’; asm {
mov ax, a mov bx, b xchg ax, bx mov a,ax mov b, bx
}
cout<< “ a= ”<< a <<”; b= ”<< b <<’\n’;
}
Литература
1.Скэнлон Л. Персональные ЭВМ IBM PC и XT. Программирование на языке Ассемблер. Пер. с англ. – M.: Радио и связь. 1989. – 336 с.
2.Фролов А.В., Фролов Г.В. Библиотека системного программиста. Тома 18,19. MS-DOS для программиста, М.: Диалог-МИФИ, 1995. – 507 с.
3.Пильщиков В.Н. Программирование на языке ассемблера IBM PC. –
М.: "Диалог-МИФИ", 2001. – 288 c.
4.Финогенов К.Г. Самоучитель по системным функциям MS-DOS. – Изд.2. – М.: Радио и связь, Энтроп, 1995. – 382 с.
5.Сван Т. Освоение Turbo Assembler. – Киев: Диалектика, 1996. – 544 с.
6.Юров В., Хорошенко С. Assembler: учебный курс. – СПБ: Питер Ком, 1999. – 672 с.
77
7.Зубков С.В. Assembler. Для DOS, Windows и Unix. – 2-е изд. – М.: ДМК, 2000. – 640 с.
8.Скляров В.А. Программирование на языке ассемблера. Учебное пособие, М. Высш.школа, 1999, 152 с.
9.Юров В. Assembler: Специальный справочник. СПб: Питер, 2000.
10.Пирогов В. Ю. Assembler. Учебный курс. – М.: "Нолидж", 2001. –
848с.
11.Юров В. Assembler: практикум. – СПб: Питер, 2001. – 400 с.
12.Рудаков П.И., Финогенов К.Г. Язык ассемблера: уроки программирования. – М.: ДИАЛОГ-МИФИ, 2001. – 640 с.
13.Голубь Н.Г. Искусство программирования на Ассемблере. Лекции и упражнения. – СПб.: ООО "ДиаСофтЮП", 2002. – 656 с.
14.Ирвин Кип. Язык ассемблера для процессоров Intel, 3-е изд.: Пер. с англ. – М.: Изд. Дом "Вильямс", 2002. – 616 с.
78