- •Исследование процессов ввода/вывода информации и системы команд микропроцессоров семесйства 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. Библиографический список
Mov al,es:[si]; ds заменен на es
MOV SS:[BX+4],AX; DS заменен на SS
Если переменная в памяти имеет собственную метку (идентификатор), например MEMR_VAR, то её можно вызвать командой:
MOV BX,MEMR_VAR
Многие команды ассемблера оперируют байтами или словами. Если с помощью соответствующих директив переменная COST определена как слово, а переменная COUNT как байт, то команда INC COST оперирует словом, а команда INC COUNT-байтом. Однако в некоторых случаях ассемблер не может определить тип операнда. Команда INC [ВХ] производит инкремент величины, адрес которой находится в регистре ВХ, но является эта величина байтом или словом? Аналогичная ситуация возникает при использовании команды:
MOV [ВХ],1
Встретив такую команду, TASM зафиксирует ошибку. Чтобы исключить указанную неопределенность, используют атрибутные операторы, например оператор указателя PTR:
MOV WORD PTR[BX],1; запись слова
MOV BYTE PTR [BX],1; запись байта
Команды lea, lds, les.
Эти команды отличаются от других команд пересылки тем, что при их выполнении в адресуемые регистры передаются не собственно данные, а их адреса. Они занимают в памяти от 2 до 4 байт. Основное назначение этих команд - инициализация регистров перед выполнением цепочечных команд или перед выполнение подпрограмм. Команда:
Lea reg, memr
обеспечивает вычисление эффективного адреса ЕА ячейки памяти в соответствии с указанным способом адресации и загружает ЕА (а не содержимое адресуемой ячейки!) в указанный общий регистр. Например, команда: LEA BX,COL[BP] загрузит в регистр ВХ эффективный адрес ЕА, вычисленный сложением содержимого ВР и смещения COL. Такая операция может потребоваться, например, для загрузки начального адреса таблицы в регистр ВХ, перед выполнением команды XLAT. Команды:
LDS SI, memr и LES DI, memr
загружают адресную информацию из памяти в пару регистров DS:SI и ES:DI соответственно. Первое слово из памяти загружается в сегментный регистр, а второе слово в индексный регистр. Эти команды управляют коммутацией сегментов данных.
Команда xchg
Эта команда осуществляет обмен данными между источником и получателем: XCHG dst, src
Так как непосредственные операнды обменять невозможно, ни один из операндов команды XCHG не может быть константой. В двоичных кодах данная команда имеет два формата. Общий формат (длиной 2 байта) позволяет произвести обмен содержимым любой пары общих регистров, а так же обмен регистров и ячеек памяти при любом допустимом способом адресации. Укороченный формат(один байт) осуществляет обмен любого общего регистра и аккумулятора AX(AL). Команда XCHG AX,AX используется как команда пустой операции NOP, обеспечивающей задержку 3 такта. Отметим, что эта команда не работает с сегментными регистрами.
Стековые команды push и рор
Эти команды могут занимать от одного до шести байт. Они оперируют словами и автоматически изменяют указатель стека(8Р). В качестве операндов может быть указан любой из регистров микропроцессора или ячейка памяти. В МП86 не предусмотрены команды записи в стек непосредственных операндов. Для сохранения в стеке и извлечения из стека регистра флажков введены две дополнительные безоперандные команды. PUSHF и POPF.
©ВНИМАНИЕ.1 Команда POPF изменяет все флажки в регистре флажков.
Команда записи (вложения) в стек имеет мнемонику: PUSH src и производит следующие действия: SP← (SP)-2; SP← (SP)-2 TOS (src). Здесь TOS- вершина аппаратного стека, которая имеет адрес [SS:SP].
Команда извлечения из стека имеет мнемонику: POP dst и выполняет следующие действия: dst (TOS); SP←(SP) + 2.