- •Введение.
- •Лекция 1. Архитектура эвм Понятие архитектуры эвм.
- •Архитектура фон Неймана.
- •Лекция 2. Микропроцессор. Характеристики микропроцессора. Структура универсального микропроцессора.
- •Характеристики процессора
- •Лекция 3. Организация памяти. Модели памяти.
- •Режимы работы микропроцессора
- •Лекция 4. Модели памяти.
- •Сегментированная модель памяти.
- •Формирование линейного адреса в реальном режиме.
- •Формирование линейного адреса в защищенном режиме
- •Страничная модель памяти
- •Лекция 5. Типы данных. Форматы команд. Форматы и типы данных
- •Формат машинной команды
- •Лекция 6. Архитектура мп 8086. Программная модель микропроцессора.
- •Лекция 7. Архитектура 32-разрядного универсального микропроцессора ia32
- •Лекция 8. Методы адресации
- •Лекция 9. Структура машинной команды.
- •Лекция 10. Структура программы на ассемблере.
- •Лекция 11. Система команд микропроцессора 8086. Команды пересылки данных
- •Команды пересылки данных
- •Команды преобразования типов
- •Команды преобразования данных.
- •Xlat [адрес_таблицы_перекодировки]
- •Лекция 12. Целочисленные арифметические команды двоичной арифметики
- •Команда сравнения как команда с арифметическим принципом действия
- •Лекция 13. Команды манипулирования битами
- •Логические команды
- •Команды сдвига
- •Коп операнд, счетчик_сдвигов
- •Команды линейного сдвига
- •Команды циклического сдвига
- •Дополнительные команды сдвига
- •Лекция 14. Команды передачи управления
- •Команда безусловного перехода
- •Команды условного перехода
- •Организация циклов
- •Лекция 15. Стек
- •Работа стека
- •Управление стеком
- •Доступ к элементам стека
- •Лекция 16. Модульное программирование. Процедуры Концепция модульного программирования
- •Понятие "процедура"
- •Описание процедуры
- •Команда вызова процедуры. Команда возврата управления
- •Организация интерфейса с процедурой
- •Возврат результата из процедуры
- •Лекция 18. Цепочки
- •Синтаксис цепочечных команд
- •Префиксы повторения
- •Цепочечные индексные регистры
- •Направление обработки цепочки
- •Пересылка цепочек
- •Сравнение цепочек
- •Поиск в цепочках
- •Загрузка цепочек
- •Запись данных в цепочку. Заполнение памяти
- •Лекция 19. Массивы
- •Описание и инициализация массива в программе
- •Доступ к элементам массива
- •Двухмерные массивы
- •Лекция 20. Структуры
- •Описание шаблона структуры
- •Определение данных с типом структуры
- •Ссылки на поля структур
- •Использование структурированных переменных
- •Лекция 21. Расширенные возможности современных микропроцессоров Архитектурные особенности
- •Дополнительные режимы адресации
- •Использование средств 32-разрядных процессоров в программировании
- •Лабораторный практикум Лабораторная работа №1. Этапы создания программы на ассемблере. Отладчик Turbo Debugger
- •Лабораторная работа №2. Команды пересылки данных. Арифметические команды
- •Задачи для самостоятельного решения
- •Лабораторная работа №3 . Команды для работы с битами.
- •Демонстрационные примеры
- •Задачи для самостоятельного решения
- •Лабораторная работа №4. Команды передачи управления
- •Лабораторная работа №5. Прерывания.
- •Демонстрационные примеры
- •Задачи для самостоятельного решения
- •Лабораторная работа №6. Модульное программирование. Подпрограммы
- •Задачи для самостоятельного решения
- •Лабораторная работа №7. Стек.
- •Лабораторная работа №8 . Массивы
- •Задачи для самостоятельного решения
- •Лабораторная работа №9. Цепочки
- •Демонстрационные примеры.
- •Задачи для самостоятельного решения
- •Лабораторная работа №10. Структуры
- •Демонстрационные примеры.
- •Лабораторная работа №11. Файлы
- •Демонстрационные примеры
- •Задачи для самостоятельного решения
- •Литература
Демонстрационные примеры
Пример 1. Демонстрация синтаксиса и семантики логических команд and, or, xor, not, test
CODE SEGMENT
ORG 100h
ASSUME cs:code, ds:code
Begin:
mov ax,0100001100100001b ; (BX)=4321h
mov bx,ax
; --------------------------------------------
; Обнуление битов регистра BX c 4-го по 7-ой и с 12-го по 15-ый
; ----------------------
and bx,0000111100001111b ; (BX)=0301h
mov cx,bx ; (CX)=(BX)=0301h
; ----------------------------------------
; Установка 5-го и 14-го битов регистра CX
; ----------------------------------------
or cx,0100000000100000b ; (CX)=4321h
; ------------------------------------------
; Проверка того факта, совпадают ли значения
; регистров AX и CX. В случае положительного
; ответа значение регистра AX станет 0
; ------------------------------------
xor ax,cx ; (AX)=0
; ---------------------------------------
; Инвертирование 0-го, 5-го, 8-го, 9-го и
; 14-го битов регистра AX
; -----------------------------------
xor ax,0100001100100001b ; (AX)=4321h
; --------------------------------
; Инвертирование битов регистра DX
; -----------------------------------
not dx ; (DX)=FFFFh
; ---------------------------------
; Установка того факта, все ли биты
; регистра dx установлены в единицу
; ---------------------------------
test dx,0 ; (ZF)=1
; --------
Mov ax, 4C00h
int 21h
CODE ENDS ; Конец сегмента кода
END Begin
Пример 2. Демонстрация установления чётности данного целого числа
include bibl-mcr.inc
CODE SEGMENT
ORG 100h
ASSUME cs:code, ds:code
Begin:
Print str1 ; Печать строки
Vvod_AX ; Ввод целого числа в регистр AX
mov bx,1 ; (BX)=1
and ax,bx ; (AX)=0 или (AX)=1
; --------
Print str2 ; Печать строки
Vivod_AX ; Печать целого числа из регистра AX
Print str3 ; Печать строки
; --------
mov ah,08h ; Функция задержки экрана
int 21h ; Вызов функции DOS 21h
mov ax,4C00h ; Функция стандартного выхода из программы
int 21h ; Вызов функции DOS 4C00h
; ----------------------------------------
str1 DB "Введите целое число: ",'$'
str2 DB "Результат: ",'$'
str3 DB 0Ah,0Dh,"'1' - знак того, что введённое число"
DB "чётное.",0Ah,0Dh,"'0'-знак того, что введённое"
DB "число нечётное.",'$'
; ------------------------------------
CODE ENDS ; Конец сегмента кода
END Begin
Пример 3. Демонстрация вычисления выражения 2 в степени n по заданному натуральному числу n
include bibl-mcr.inc
CODE SEGMENT
ORG 100h
ASSUME cs:code, ds:code
Begin:
Print str1 ; Печать строки
Vvod_AL_pos ; Ввод целого числа n>=0 в регистр AL
mov cl,al ; (CL)=n
mov bx,1 ; (BX)=1
shl bx,cl ; Логический сдвиг (BX) влево на n битов
mov ax,bx ; (AX)=(BX)
; --------
Print str2 ; Печать строки
Vivod_AX ; Печать целого числа из регистра AX
; --------
mov ah,08h ; Функция задержки экрана
int 21h ; Вызов функции DOS 08h
; --------
mov ax,4C00h
int 21h
; ----------------------------------------
str1 DB "Введите натуральное число n=",'$'
str2 DB " 2^n=",'$'
; ----------------------------------------
CODE ENDS ; Конец сегмента кода
END Begin
Пример 4. Демонстрация синтаксиса и семантики команд: shr (логический сдвиг вправо), sal (арифметический сдвиг вправо)
include bibl-mcr.inc
CODE SEGMENT
ORG 100h
ASSUME cs:code, ds:code
Begin:
Print prigl
Vvod_AX ; Ввод целого числа в регистр AX
mov bx,ax ; (AX)=(BX)
; -------
shr ax,1 ; Логический сдвиг (AX) вправо на 1 бит
sar bx,1 ; Арифметический сдвиг(BX)вправо на 1бит
Print str1 ; Печать строки
Vivod_AX ; Печать целого числа из регистра AX
; -------
mov ax,bx
Print str2 ; Печать строки
Vivod_AX ; Печать целого числа из регистра AX
; --------
mov ah,08h ; Функция задержки экрана
int 21h ; Вызов функции DOS 08h
; --------
mov ax,4C00h
int 21h
; ----------------------------------------
prigl DB "Введите целое число: ",'$'
str1 DB "Результат выполнения логической команды "
DB "'shr' : ",'$'
str2 DB 0Ah,0Dh,"Результат выполнения арифметической "
DB "команды 'sal': ",'$'
; -----------------------------------
CODE ENDS ; Конец сегмента кода
END Begin
Пример 5. Демонстрация умножения числа (размером в двойное слово), располагающегося в паре регистров DX и AX, на 4
CODE SEGMENT
ORG 100h
ASSUME cs:code
Begin:
; --------------------------
; Умножение числа 65537 на 4
; --------------------------
mov ax,65535
add ax,2
adc dx,dx
; (DX_AX)=65537*4
shl ax,1 ; Бит 15 регистра AX сдвигается во флаг переноса
rcl dx,1 ; Флаг переноса сдвигается в бит 0 регистра DX
shl ax,1 ; Бит 15 регистра AX сдвигается во флаг переноса
rcl dx,1 ; Флаг переноса сдвигается в бит 0 регистра DX
; -------------------------------------------------------
; Умножение числа -32769 на 4
; ---------------------------
mov ax,-32768
add ax,-1
sbb dx,dx
; (DX_AX)=-32769*4
shl ax,1 ; Бит 15 регистра AX сдвигается во флаг переноса
rcl dx,1 ; Флаг переноса сдвигается в бит 0 регистра DX
shl ax,1 ; Бит 15 регистра AX сдвигается во флаг переноса
rcl dx,1 ; Флаг переноса сдвигается в бит 0 регистра DX
mov ax,4C00h ; Функция стандартного выхода из программы
int 21h ; Вызов функции DOS 4C00h
CODE ENDS ; Конец сегмента кода
END Begin
Пример 6. Демонстрация установки флага ZF во флаг CF
CODE SEGMENT
ORG 100h
ASSUME cs:code
Begin:
xor ax,ax ; Установка флага ZF
lahf ; Содержимое регистра флагов - в регистре AH
; (AH)=(S)(Z)0(A)0(P)1(C)b
and ah,1000000b ; (AH)=01000000b
shl ah,2 ; Логический сдвиг (AH) влево на 2 бита
; ----------
mov ax,4C00h
int 21h
CODE ENDS
END Begin
Пример 7. Демонстрация установки флагов SF, ZF и CF по содержимому регистра AH
CODE SEGMENT
ORG 100h
ASSUME cs:code
Begin:
mov ah,11000011b ; (AH)=(S)(Z)0(A)0(P)1(C)b
sahf ; (SF)=1, (ZF)=1, (CF)=1
; ----------
mov ax,4C00h
int 21h
CODE ENDS
END Begin
