- •Микропроцессоры intel 80х86
- •Лабораторная работа 1 организация микросистем на базе микропроцессоров i8086
- •1.1. Цель работы
- •1.2. Принципы организации микросистем на базе мп i8086 (к1810вм86)
- •1.3. Структурная схема микропроцессора i8086 (рис. 1.2)
- •Пример 1.1
- •1.4. Программная модель мп (рис. 1.4.)
- •1.5 Адресная организация памяти, представление данных
- •1.6. Примеры форматов команд мп i8086
- •1.7. Пример разработки программы в машинных кодах
- •1.8. Отладчик td
- •1.9. Варианты заданий
- •1.10. Порядок выполнения работы
- •1.11. Содержание отчета
- •2.3. Режимы адресации
- •Пример 2.2.Команда mov [si],ax
- •2.4. Программа сложения многобайтных bcd-чисел
- •2.5. Варианты заданий
- •2.6. Порядок выполнения работы
- •2.7. Содержание отчета
- •Лабораторная работа 3
- •3.1. Цель работы
- •3.2. Элементы языка ассемблера мп 80х86
- •В таблице 3.1 приведены примеры записи директив ассемблера tasm.
- •3.3. Примеры программ на языке ассемблера мп х86
- •3.4 Ассемблер tasm. Трансляция исходного модуля
- •3.5. Порядок выполнения работы
- •3.6. Содержание отчета
- •Лабораторная работа 4
- •4.1. Цель работы
- •4.2. Состав системного программного обеспечения пэвм
- •4.3. Пример программы на языке ассемблера мп х86 для генерирования исполняемого модуля типа .Exe
- •4.4. Порядок выполнения работы
- •Создание исходного файла программы
- •Создание объектного и исполняемого модулей
- •Выполнение и отладка программы
- •4.5. Содержание отчета
- •Лабораторная работа 5
- •5.1. Цель работы
- •5.2. Особенности разработки 32-разрядных программ на языке ассемблера мп i80x86 для реального режима
- •5.3. Порядок выполнения работы
- •5.4. Содержание отчета
- •Команды обработки цепочек мп х86
- •6.1. Цель работы
- •6.2. Цепочечные команды
- •6.3. Ввод строковых данных в пэвм
- •6.4. Варианты заданий
- •6.5. Порядок выполнения работы
- •6.5. Содержание отчета
- •Приложение система команд мп Intel 8086
- •390005, Г. Рязань, ул. Гагарина, 59/1. Редакционно-издательский центр ргрта.
В таблице 3.1 приведены примеры записи директив ассемблера tasm.
Таблица 3.1. Примеры записи директив ассемблера tasm
|
Директива |
П р и м е р з а п и с и | |||
|
ORG EQU DB DW PROC ENDP .CODE .DATA .STACK .MODEL END |
ALFA K X BUF TABL TUR TUR .STACK .MODEL |
ORG EQU DB DW DW DB PROC ENDP 100H tiny END |
100H 13H 60H 160H 8 DUP(?) ‘Диск’ |
;Программа начинается с адреса 100H;Константе с именемALFA;присвоено значение13H;Для переменной с именемK;резервируется ячейка (байт) памяти, ;в которую заносится 60H;Для переменной с именем X;резервируются 2 ячейки (слово) ;памяти, в которые заносятся 60H;и 01H;Для переменнойBUFрезервируется ;8 слов памяти ;Для переменнойTABL;резервируются ячейки памяти, в ;которые заносится последователь-ностьASCII-символов «Диск» ;Начало ;и конец процедуры с именемTUR;Упрощенные сегментные директивы ;сегмента кодов, ;сегмента данных, ;сегмента стека размером 100Hбайт ;Модель памяти размером 64Kбайт ;Конец текста программы |
3.3. Примеры программ на языке ассемблера мп х86
для генерирования исполняемых модулей типа .СОМ
Далее приведены примеры программ на языке ассемблера микропроцессора Х86 для генерирования на их основе исполняемых модулей с расширением .СОМ.
В приведенных программах директива .MODEL tiny задает модель памяти как один сегмент размером 64 Кбайт. Для задания сегмента кодов используется упрощенная сегментная директива .CODE. При генерации исполняемого модуля типа .СОМ все данные в памяти задаются в кодовом сегменте. Для указания начального адреса данных используется директива ORG. Так, директива ORG 500h размещает данные с адреса 500h. Операнды-байты или слова задаются после ORG с помощью директив DB или DW.
Директива END указывает на конец программы.
Пример 3.1
|
;Программа вычисления выражения M=K+N–R +120 ;для исполняемого модуля типа .COM. ;Операнды-слова k, r, m размещены в памяти с адреса 500h ;n – в регистре DX | |||
|
|
.MODEL
.CODE |
tiny |
;Программа и данные размещены ;в сегменте кодов размером 64 Kбайт ;Начало кодового сегмента |
|
;Размещение данных с адреса 500h | |||
|
k r m |
org dw dw dw |
500h +60h -10h 0 |
|
|
;Команды программы с адреса 100h | |||
|
|
org begin: sub add add mov mov int END |
100h
dx,r dx,k dx,120h m,dx ah,4ch 21h begin |
;Метка начала программы ;Вычисление ;выражения ;m=(n-r)+k+120 ;Загрузить результат m в память ;Функция DOS выхода ;из программы ;Конец прогаммы
|
Пример 3.2
|
;Программа вычисления выражения M=K+N–R+120 для случая ;базовой адресации данных, когда K, R, N, M размещены в памяти ;с адреса 500h | |||
|
|
.MODEL
.CODE |
tiny |
;Программа и данные размещены в ;сегменте кодов размером 64 Kбайт ;Начало кодового сегмента |
|
;Размещение данных с адреса 500h | |||
|
k r n m |
org dw dw dw dw |
500h +60h -10h +30h 0 |
|
|
;Команды программы с адреса 100h | |||
|
|
org begin: mov mov sub add add mov mov int END |
100h
bx,offset k ax,[bx] ax,[bx+2] ax,[bx+4] ax,120h [bx+6],ax ah,4ch 21h begin |
;Метка начала программы ;Загрузить в BX адрес операнда k ;Загрузить в AX операнд k ;Получить в AX разность k–r ;AXAX + n ;AXAX + 120h ;Загрузить результат m в память ;Функция DOS выхода ;из программы ;Конец программы |
