Скачать 0.78 Mb.
|
Контрольные вопросы 1 Что такое регистр флагов? Для чего он используется? 2 Опишите работу команды JMP. 3 Для чего используются команды условных переходов? 4 Как работают команды сравнения? Какие команды к ним относятся? Практическое занятие № 9 «Изучение системы команд Ассемблера. Логические команды и команды сдвига» Цель работы: изучить логические команды и команды сдвига данных. Студент должен уметь: составлять программы на языке Ассемблера для выполнения задач на модификацию байтов и поиск нужных сочетаний битов; знать: работу логических команд и команд сдвига данных. Краткие теоретические и учебно-методические материалы по теме практической работы Логические команды служат для сброса или установки отдельных бит или байт в слове. Они включают операторы «не», «или», «и», «исключающее или» и операцию тестирования. Таблица 9.1 – Логические команды
Инструкция NOT op инвертирует все биты байта или слова. Команда OR op1,op2 выполняет поразрядное логическое «или» двух операндов и помещает результат на место первого операнда. Бит результата устанавливается в 1, если хотя бы один из двух соответствующих битов операндов равен 1, и устанавливается в 0 если нет. Команда AND op1,op2 выполняет поразрядное логическое «и» двух операндов и помещает результат на место первого операнда. Бит результата устанавливается в 1, если установлены в 1 оба соответствующих ему бита операндов, и устанавливаются в 0 противном случае. Команда XOR op1,op2 выполняет поразрядную операцию «исключающее или» двух операндов и помещает результат на место первого операнд. Бит результата устанавливается в 1, если соответствующие ему биты операндов имеют противоположные значения, и устанавливается в 0 в противном случае. Инструкция TEST выполняет логическое «и» двух операндов (байтов или слов), модифицирует флаги SF, ZF и PF, но результат не возвращает, т.е. операнды не изменяются. Команды сдвига данных Таблица 9.2 – Команды сдвига данных
Команда SHL dst,CL выполняет сдвиг битов влево на число разрядов, хранящееся в регистре CL. Освобождающиеся при сдвиге разряды заполняются нулями. При этом последний сдвигаемый бит сохраняется в флаге CF. Например, SHL 11111111b,3. После выполнения команды получим 11111000. Команда SHR dst,CL работает аналогично, но сдвиг выполняется вправо. Например, SHR 11111111b,3. После выполнения команды получим 00011111. Команда ROR dst,CL выполняет циклический сдвиг вправо на число разрядов, хранящееся в регистре CL. При этом младший сдвигаемый бит копируется в флаг CF. Рисунок 9.1 – Изображение циклического сдвига вправо Команда ROL dst,CL выполняет циклический сдвиг влево на число разрядов, хранящееся в регистре CL. При этом старший сдвигаемый бит копируется в флаг CF. Команда RCL dst,CL выполняет циклический сдвиг влево через CF. Все разряды операнда циклически сдвигаются влево. Содержимое старшего разряда загружается в СF, а прежнее содержимое СF загружается в младший разряд результата. Команда RCR dst,CL выполняет циклический сдвиг вправо через CF. Все разряды операнда циклически сдвигаются вправо. Содержимое младшего разряда загружается в СF, а прежнее содержимое СF загружается в старший разряд результата. Примеры программ Задача 1. Установить 3 и 0 биты в регистре AL, остальные не изменять. OR AL, 00001001b Задача 2. Сбросить 4 и 6 битвы в регистре AL, остальные биты не изменять. AND AL, 10101111b Задача 3. Инвертировать 2 и 4 биты в регистре AL, остальные биты не изменять. XOR AL, 00010100b Задача 4. Перейти на метку LAB, если установлен 4 бит регистра AL, в противном случае продолжить выполнение программы. TEST AL, 00010000b JNZ LAB LAB: Задача 5. Посчитать число единиц в регистре AL, рассматривая байт, как набор бит. MOV CX, 8 ; число сдвигов XOR BL, BL ; обнуление BL LL: SHL AL, 1 ; сдвиг влево на один разряд JNC NO ; переход, если нет переноса INC BL ; иначе увеличить BL NO: LOOP LL ; возврат, если СХ не равно 0 Задания для практической работы 1 Составить таблицы «Логические команды» и «Команды сдвига данных» с указанием названия команды, ее мнемокода и выполняемого действия. 2 Определить содержимое регистра AL при выполнении команд (таблица 9.3). 3 Разработать программу на языке Ассемблер для выполнения задачи в соответствии с вариантом (таблица 9.4). Таблица 9.3 – Таблица вариантов для задачи 2
Таблица 9.4 – Таблица вариантов для задачи 3
Примечание: массив байтов размещается, начиная с адреса DS:0000h. Ответ должен быть записан в регистр DX. Контрольные вопросы 1 Для чего служат логические команды? 2 Какие команды относятся к логическим и как они работают? 3 Как работают команды SHL dst,CL и SHR dst,CL? 4 Чем отличаются команды ROL dst,CL и RСL dst,CL? Практическое занятие № 10 «Изучение системы команд Ассемблера. Подпрограммы и прерывания» Цель работы: изучить принцип вызова и работу с подпрограммами, изучить принцип работы с прерываниями. Студент должен уметь: составлять программы на языке Ассемблера для выполнения задач на использование подпрограмм и прерываний; знать: работу команд вызова подпрограмм и прерываний; порядок организации вызова подпрограммы и прерывания. Краткие теоретические и учебно-методические материалы по теме практической работы Для организации работы с подпрограммами используются команды CALL и RET. Команда CALL address предназначена для организации обращения к подпрограмме расположенной по адресу address (с автоматическим сохранением адреса возврата в стеке). Команда RET применяется для возврата из подпрограммы в основную программу, при этом адрес возврата берётся с вершины стека. Для передачи входных параметров в подпрограмму и выходных в программу существует несколько способов. Чаще всего передача параметров осуществляется через регистры или через стек. При передаче через регистры перед вызовом подпрограммы параметры заносятся в регистры процессора, а после возврата вызывающая программа забирает из регистров значения результатов. При передаче через стек, параметры перед вызовом подпрограммы заносятся в стек. Подпрограмма во время выполнения использует регистры процессора. Значения, которые в них хранились, могут ещё понадобиться основной программе. Поэтому каждая подпрограмма обязана сохранить значения регистров перед началом их использования, а после завершения работы перед возвратом восстановить их прежние значения. Для сохранения регистров используется стек. Команда PUSH служит для занесения содержимого 16-разрядного источника (машинного слова) в стек. Источником могут быть РОН, индексный регистр, сегментный регистр, ячейка памяти. Выполнению команды предшествует автоматически выполняемое действие (SP)←(SP)-2. Команда POP извлекает 16-разрядный операнд из стека и пересылает его в место назначения, указанное в команде – РОН, индексный регистр, сегментный регистр, ячейку памяти. После извлечения операнда из стека МП автоматически формирует новый адрес вершины стека, выполняя действие (SP)←(SP)+2. Каждая подпрограмма должна содержать равное количество команд PUSH и POP. При этом возврат значений в регистры осуществляется обратно записи: PUSH DX PUSH BX … POP BX POP DX. Для обработки особых состояний ЦП необходимо прервать выполнение текущей программы и перейти к выполнению подпрограммы обслуживания прерывания. После её завершения ЦП возвращается к прерванной программе и продолжает её выполнение. За каждым прерыванием закрепляется его номер. В начальных адресах оперативной памяти располагается особая структура данных – таблица векторов прерываний (ТВП). Каждый вектор – это полный адрес начала подпрограммы обработки соответствующего прерывания, состоящий из адреса сегмента и смещения, занимающий 4 байта. Получив команду вызова прерывания (например, INT 10h), ЦП сохраняет в стеке полный (CS, IP) адрес очередной команды в прерванной программе, затем там же сохраняет регистр FLAGS, сбрасывает флаги IF и TF, после чего обращается к ТВП и, основываясь на номере прерывания, извлекает из ТВП адрес подпрограммы обработки. Далее ЦП выполняет эту подпрограмму (и тем самым обслуживает прерывание), пока ему не встретится команда IRET (возврат из прерывания). По этой команде ЦП восстанавливает из стека сохранённый ранее адрес (а также и регистр FLAGS) и возвращается к продолжению прерванной программы. Разница между обычным вызовом подпрограммы (командой CALL) и вызовом подпрограммы через механизм прерываний (командой INT) состоит в следующем. При пользовании командой CALL программист обязан знать адрес начала подпрограммы, в то время как при вызове прерывания знать этот адрес совершенно не нужно – нужен лишь номер соответствующего прерывания. Это удобно при вызове различных сервисов операционных систем (ОС). Ряд ОС, в том числе и MS-DOS-подсистема ОС Windows, содержат в себе большое количество стандартных подпрограмм обслуживания клавиатуры, мыши, дисплея, дисковых устройств, COM- и LPT-портов и т.д. Команды RET (возврат из подпрограммы) и IRET выполняют различные действия и не являются взаимозаменяемыми. Команда вызова программного прерывания имеет вид INT <�номер прерывания>, где <�номер прерывания> – число, обычно в шестнадцатеричное, в диапазоне 00h – 0FFh, определяющее адрес вызываемой резидентной программы. Наибольшее число различных системных функций в MS-DOS сосредоточено в резидентной программе с номером прерывания 21h – диспетчер функций MS-DOS. В зависимости от значения, содержащегося при вызове прерывания в регистре АН, MS-DOS выполняет одну из нескольких десятков функций MS-DOS. Для вызова функции прерывания DOS 21h необходимо проделать следующие действия: - выбрать функцию, выполняющую требуемые действия; - занести номер функции в регистр АН; - подготовить другие регистры (если это необходимо); - написать команду INT 21h; - прочесть результаты или состояние из регистров, указанных в описании функции. Таблица 10.1 – Описание функций прерывания 21h
|
Практическая работа №1 «Изучение организации бесперебойного питания пк» Практическая работа №3 «Изучение типов современных процессоров и их характеристик» |
Практическая работа №1 «Изучение организации бесперебойного питания пк» Практическая работа №3 «Изучение типов современных процессоров и их характеристик» |
||
Практическая работа №1 «Изучение методов конфигурирования сетей доступа» Практическая работа №2 «Изучение методов отбора, подготовки и контроля линии под технологию adsl» |
Лабораторная работа №10. Изучение принципа действия и функциональной... Лабораторная работа № Изучение принципов построения системы автоматической подстройки частоты (апч) радиолокационной станции |
||
Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора I8085A при реализации программы |
Урок Практическая работа №4 «Получение аммиака и изучение его свойств» Цели урока Цели урока: получения аммиака изучение его свойства через проведение практической работы |
||
Методические указания к лабораторным работам Рязань 2013 ... |
Курсовая работа Целью работы является детальное изучение бережливого производства, его принципов, инструментов, их характеристик, а также возможностей... |
||
Практическая работа №1 «Работа с нормативными документами» ... |
Урок информатики по теме "Системы счисления. Позиционные и непозиционные... Формирование представлений об информации как одного из трех основополагающих понятий науки — вещества, энергии, информации, на основе... |
||
Описание практической работы №2 создание шаблона сайта Цель работы: изучение и освоение принципов работы с html тегами, их атрибутами и умение создавать базовые элементы web–страницы |
Методические указания к выполнению лабораторных работ по дисциплине радиолокационные системы Лабораторная работа №1 «Изучение принципов построения штатной радиолокационной киа» |
||
Практическая работа №1 «Изучение видов интерфейсов и их характеристик» Профессиональный модуль «Применение микропроцессорных систем, установка и настройка периферийного оборудования» |
Практическая работа №1 «Расчет срока окупаемости капитальных вложений... Практическая работа №2 «Задача выбора поставщика и ее решениена основе анализа полной стоимости» |
||
Практическая работа №5. Составление инструкции «Аккумуляторщик» ... |
Практическая работа №1 «Технология строительства воздушных линий связи» Практическая работа №9 «Технология ввода кабелей в здание атс. Оборудование шахт» |
Поиск |