- •Исследование процессов ввода/вывода информации и системы команд микропроцессоров семесйства intel 80×i86
- •Введение
- •1.Цель работ
- •2.1. Архитектура микропроцессора Intel 8086.
- •2.2. Адресация памяти и данных.
- •2.3. Синтаксис операндов языка assembler
- •2.4. Команды передачи данных.
- •Mov ax,segment
- •3) Mov [bx],dx переслать (dx) в ячейку адресованную (вх)
- •Mov al,es:[si]; ds заменен на es
- •Команды lea, lds, les.
- •Lea reg, memr
- •Команда xchg
- •Стековые команды push и рор
- •2.5 Префикс программного сегмента (psp)
- •2.6 Арифметические команды
- •Команды сложения и вычитания
- •0015 65А0
- •0037 1D3e
- •0004 В837
- •0001 F0f8
- •Команды расширения знака.
- •Команды inc, dec, neg, cmp.
- •Команды двоичного умножения и деления.
- •Дополнительные сведения.
- •2.7 Основные правила при разработке программ на языке assembler.
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •Int 21h
- •3. Лабораторные работы
- •Контрольные вопросы
- •Лабораторная работа № 2
- •Контрольные вопросы
- •Лабораторная работа № 3
- •Дополнительная информация для составления программы по данному заданию.
- •Лабораторная работа № 4
- •Контрольные вопросы
- •Лабораторная работа № 5
- •Контрольные вопросы
- •Лабораторная работа № 6
- •Контрольные вопросы
- •Лабораторная работа № 7
- •Рекомендации по выполнению лабораторной работы.
- •4.1. Тексты подпрограмм вывода на экран.
- •Int 21h
- •Int 21h
- •Контрольные вопросы
- •Лабораторная работа № 8
- •Контрольные вопросы
- •Лабораторная работа № 9
- •Контрольные вопросы
- •Лабораторная работа № 10
- •Контрольные вопросы
- •Контрольные вопросы
- •Лабораторная работа № 14
- •Контрольные вопросы
- •6. Требования к отчетам
- •7. Библиографический список
Int 21h
mov dx,offset string_1
Int 21h
Здесь оператор offset означает, что в регистр dx загружается начальный адрес области памяти с данными end_line, а затем области памяти с данными string_1.
Отметим, что исполняемая часть программы, то есть сегмент кода, всегда должна располагаться после идентификатора .code и обязательно начинаться меткой, например, start или begin или любой другой. После метки начала программы всегда должны стоять две команды:
mov ax,@data
mov ds,ax
Эти две команды обеспечивают загрузку в сегментный регистр ds начального адреса сегмента данных. С этих двух команд всегда должен начинаться сегмент кода всех программ, использующих малую модель памяти. Это необходимо делать, так как в начале исполнения программы сегментные регистры ds и es всегда настроены на начало области памяти, называемую префиксом программного сегмента. Отметим, что непосредственно загружать операндом сегментные регистры командой mov, как и другими командами, нельзя. При необходимости для быстрой настройки регистра es на начало сегмента данных (после того, как регистр ds уже настроен) можно воспользоваться следующими командами:
push ds
pop es
Здесь команда push ds загружает содержимое регистра ds в вершину стека, а команда pop es извлекает из вершины стека два ранее записанных байта и помещает их в регистр es.
Конец программы всегда должен заканчиваться следующими инструкциями:
mov ax,4c00h
Int 21h
end start
Первые две команды обеспечивают выход работающей программы после её завершения в операционную систему DOS. Метка после команды end всегда должна совпадать с меткой, с которой начинается исполняемая часть программы. Таким образом, ассемблерная программа, выводящая на экран монитора с новой строки слово ASSEMBLER будет иметь вид:
.model small
.stack 100h
.data
end_line db ’0dh, 0ah’,’$’
string_1 db ’ASSEMBLER’,’$’
.code
begin:
mov ax,@data
mov ds,ax
mov ah,09h
mov dx,offset end_line
Int 21h
Int 21h
mov ax,4c00h
Int 21h
mov dx,offset string_1
Int 21h
end begin
Отметим, что описание структуры сегмента данных в исходном тексте программы может располагаться и в конце программы перед командой end begin.
Для запоминания на жестком диске набранной программы нажимается клавиша F2, а затем клавиша Esc, и после этого имя набранного Вами файла с расширением .asm появится в DOSовских панелях. Для повторного открытия данного файла с целью его редактирования необходимо нажать клавишу F4. После редактирования текста программы отмеченные выше действия для записи файла на диск повторяются, то есть нажимаются клавиши F2, а затем Esc.
После набора текста программы и его записи на диск необходимо выполнить трансляцию программы и её компоновку. Трансляция исходной программы осуществляется с помощью DOSовской программы tasm.exe. Для этого формируется командная строка вида:
D:\SHELLS>tasm.exe lab_1.asm
Командную строку можно сформировать следующим образом: вначале маркер (светлая полоса) устанавливается на файл tasm.exe и нажимаются клавиши Ctrl – Enter, затем маркер устанавливается на файл lab_1.asm и также нажимаются клавиши Ctrl – Enter. После формирования командной строки нажимается клавиша Enter и тогда в DOSовских панелях (на жестком диске), если нет синтаксических ошибок в исходном тексте программы, появляется объектный файл с расширением obj, то есть lab_1.obj. Этот файл необходимо скомпоновать с встроенными в операционную систему DOS вспомогательными программами, например подпрограммами, которые обслуживают различные прерывания. Компоновка программы осуществляется так же с помощью DOSовской программы tlink.exe. Для этого набирается командная строка вида:
D:\SHELLS>tlink.exe lab_1.obj
и нажимается клавиша Enter. После этого на диске появится файл с картой распределения памяти lab_1.map и готовый к исполнению бинарный файл с расширением exe, то есть lab_1.exe. Для его исполнения подводится маркер к этому файлу и нажимается клавиша Enter. Если при трансляции программы были обнаружены ошибки, то объектный файл с расширением .obj не образуется и некоторую информацию о них можно получить нажав клавиши Ctrl – o. Эти клавиши используются и для просмотра результата выполнения готовой программы. Для возврата в DOSовские панели после просмотра результатов трансляции или выполнения программы так же используется комбинация этих клавиш.