- •Федеральное агентство связи
- •Регистры общего назначения.
- •Сегментные регистры.
- •Регистры состояния и управления.
- •Формат команд.
- •Создание программы на ассемблере.
- •Отладчик Turbo Debugger.
- •Структура программы на ассемблере.
- •Методические указания по выполнению лабораторных работ.
- •Лабораторная работа №1 Изучение пакета tasm и организация ввода данных с клавиатуры.
- •Лабораторная работа №2 Система адресования и последовательность выполнения основных команд пересылки.
- •Лабораторная работа №3 Программирование арифметических операций.
- •Лабораторная работа №4 Программирование логических операций
- •Лабораторная работа №5 Запись и выполнение программ пересылки данных между информационными массивами.
- •Лабораторная работа №6 Программирование ветвящихся вычислительных процессов.
- •Лабораторная работа №7 Программирование итеративных циклических вычислительных процессов.
- •Лабораторная работа №8 Программирование и контроль регулярных циклических вычислительных процессов.
- •Лабораторная работа №9 Программа и стек.
- •Лабораторная работа № 10 Программирование вычислительных процессов с использованием стандартных подпрограмм.
Лабораторная работа №1 Изучение пакета tasm и организация ввода данных с клавиатуры.
Цель работы.
Изучение средств пакета TASM, ознакомление с языком ассемблер для IBM PC на базе микропроцессора фирмы Intel.
Задание.
Предварительная часть.
Изучить структуру и принцип действия микропроцессоров семейства Intel Х86 по [1,2,3].
Ознакомиться со структурой и средствами языка ассемблер по [1].
Ознакомиться с описанием лабораторного стенда, приведенным в начале сборника.
2.2. Экспериментальная часть.
2.2.1. Ознакомиться с примером текста программы на языке ассемблер. Записать данную программу в текстовом редакторе “Блокнот”, при этом исходные данные lmnl, lmn2 взять в таблице 1. Для работы с текстовым редактором нажать кнопку “Пуск” в панели задач и выбрать в раскрывшемся списке пункт “Программы” далее пункт "Стандартные” и затем “Блокнот”. Таблица 1
Номер бригады |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
lmn1 |
A416 |
12310 |
7516 |
24310 |
CC16 |
1510 |
2116 |
2110 |
F116 |
lmn2 |
64AD16 |
342316 |
1BCD16 |
27316 |
432216 |
61BB16 |
AD16 |
27510 |
43516 |
2.2.2. Сохранить полученный файл в каталоге C:\TASM\Work\, с именем не более восьми символов и не содержащий русских букв. Полученный текстовый файл переименовать в файл с расширением .asm. Для этого выделить исходный файл и нажатием правой кнопки мыши раскрыть меню действия нал файлом. Выбрать пункт переименовать и заменить расширение выбранного файла на .asm.
2.2.3 Произвести компоновку полученной программы, т.е. создать загрузочный модуль с опциями для tasm.exe - [/zi], а для tlink.exe - [/v]. Для этого нажать кнопку “Пуск” в панели задач и выбрать в раскрывшемся списке пункт “Программы” затем выбрать пункт “Сеанс MS - DOS”. В командной строке необходимо ввести команду:
C:\TASM\Work\tasm.exe /zi имя_исходного_файлa.asm. Нажать клавишу Enter. После выполнения этой команды в каталоге C:\TASM\Work\ появится объектный модуль - файл с тем же именем, но с расширением .obj. Теперь, для создания загрузочного модуля в командной строке необходимо ввести команду:
C:\TASM\Work\tlink.exe /v имя_исходного_файла.оbj и нажать клавишу Enter. После выполнения команды в каталоге C:\TASM\Work\ будет создан загрузочный модуль - файл с именем как у первоначального, но с расширением .ехе.
Исследовать работу полученной программы в Turbo Debugger. Для этого запустить программу TD.exe из каталога C:\TASM\Work\. В меню Files выбрать пункт Open и указать имя созданного файла. В пункте меню View выбрать CPU и исследовать программу в пошаговом режиме нажимая клавишу F7. При этом в главном окне будет виден текст программы в дизассемблированном виде, а окна Registers и Stack будут отражать содержимое регистров микропроцессора и стека соответственно.
Содержание отчета.
Функциональная схема регистров микропроцессора Pentium.
Таблица состояния регистров микропроцессора на каждом шаге выполнения программы.
Текст программы на языке ассемблер.
Выводы.
Контрольные вопросы
Какое количество пользовательских регистров содержит микропроцессор Pentium? Перечислите эти регистры.
Какие сегментные регистры вам известны?
Возможно ли непосредственное обращение к старшим 16 битам регистров общего назначения? Ответ пояснить.
Какие команды определения и инициализации переменных (данных) вам известны?
Основное назначение регистра есх.
Пример текста программы на языке ассемблер.
masm Model small Stack 256 .data lmn1 db Ofah lmn2 dw 06d5fh .code start: mov ax,@data mov ds,ax mov ax,0000h mov al,lmn1 mov dx,lmn2 mov dx,ax mov dl,lmn1 mov ah,0fh mov bx,012ch mov lmn1,ah push dx mov dl,010d mov dh,0ah pop dx mov ax,4c00h int 21h end start |
; режим работы ; модель памяти ; стек размером 256 байт ; начало сегмента данных ; объявление и инициализация переменной размером в байт ; объявление и инициализация переменной размером в слово ; начало сегмента кода ; точка входа в программу ; запись адреса сегмента данных в регистр ах ; запись в сегментный регистр ds значения из регистра ах ; пересылка 0000 в ах ; пересылка lmn1 в регистр аl ; пересылка lmn2 в регистр dx ; пересылка ах в dx ; пересылка lmn1 в регистр dl ; пересылка в регистр ah числа f ; пересылка в регистр bx числа 12с ; пересылка значения регистра ah в переменную lmn1 ; запись регистра dx в стек ; пересылка в регистр dl числа 10 ; пересылка в регистр dh числа а ; запись в регистр dx из стека ; пересылка в ах числа 4с00 ; вызов прерывания с номером 21 ; конец программы с точкой входа start
|