Практическая работа №1 «Изучение принципов работы с системами счисления»




Скачать 0.78 Mb.
Название Практическая работа №1 «Изучение принципов работы с системами счисления»
страница 6/7
Тип Практическая работа
rykovodstvo.ru > Руководство эксплуатация > Практическая работа
1   2   3   4   5   6   7

Контрольные вопросы
1 Что такое регистр флагов? Для чего он используется?

2 Опишите работу команды JMP.

3 Для чего используются команды условных переходов?

4 Как работают команды сравнения? Какие команды к ним относятся?

Практическое занятие № 9
«Изучение системы команд Ассемблера. Логические команды и команды сдвига»
Цель работы: изучить логические команды и команды сдвига данных.
Студент должен

уметь:

составлять программы на языке Ассемблера для выполнения задач на модификацию байтов и поиск нужных сочетаний битов;
знать:

работу логических команд и команд сдвига данных.
Краткие теоретические и учебно-методические материалы по теме практической работы
Логические команды служат для сброса или установки отдельных бит или байт в слове. Они включают операторы «не», «или», «и», «исключающее или» и операцию тестирования.
Таблица 9.1 – Логические команды

Название

Мнемокод

Действие

«Не»

NOT op

op←NOT(op)

Логическое «или»

OR op1,op2

op1←(op1)U(op2)

Логическое «и»

AND op1,op2

op1←(op1)&(op2)

«Исключающее или»

XOR op1,op2

op1←(op1)XOR(op2)

Проверка битов

TEST op1,op2

FLAGS←(op1)&(op2)


Инструкция 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



Сдвиг операнда вправо

SHR dst,CL



Циклический сдвиг влево

ROL dst,CL



Циклический сдвиг вправо

ROR dst,CL



Циклический сдвиг влево через CF

RCL dst,CL



Циклический сдвиг вправо через CF

RCR dst,CL




Команда 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

Вариант

Задача

1

MOV AL,11111111b

OR AL,00100100b

MOV AL, 10100111b

XOR AL, 10010101b

2

MOV AL,11111111b

OR AL, 11000011b

MOV AL, 10011111b

AND AL, 11010110b

3

MOV AL,11111111b

AND AL, 10100001b

MOV AL, 11001001b

XOR AL, 10011101b

4

MOV AL,11111111b

OR AL, 11100010b

MOV AL, 10110100b

XOR AL, 10011101b

5

MOV AL,11111111b

OR AL, 10001110b

MOV AL, 10101011b

AND AL, 11011101b

6

MOV AL,11111111b

AND AL, 11011110b

MOV AL, 00100111b

XOR AL, 10011101b

7

MOV AL,11111111b

OR AL, 00101011b

MOV AL, 11001111b

XOR AL, 11011010b

8

MOV AL,11111111b

OR AL, 10111110b

MOV AL, 01000010b

AND AL, 01101000b

9

MOV AL,11111111b

AND AL, 10101100b

MOV AL, 11110101b

XOR AL, 10011101b

10

MOV AL,11111111b

OR AL, 11100111b

MOV AL, 10010101b

XOR AL, 11000010b


Таблица 9.4 – Таблица вариантов для задачи 3

Вариант

Задача

1

Дан массив из 10 байт. Посчитать количество байт, в которых сброшены 6 и 4 биты.

2

Дан массив из 8 байт. Рассматривая его, как массив из 64 бит, посчитать количество единиц.

3

Дан массив из 10 байт. Посчитать количество байт с числом единиц в байте равным трем.

4

Дан массив из 6 байт. Рассматривая его, как массив из 48 бит, посчитать в нем количество нулей.

5

Дан массив из 8 байт. Посчитать количество байт, в которых число нулей и единиц одинаковое.

6

Дан массив из 13 байт. Посчитать количество байт, содержащих только нули или единицы.

7

Дан массив из 6 байт. Посчитать количество байт, число нулей в которых не больше трех.

8

Дан массив из 7 байт. Посчитать количество байт, в которых разряды 7 и 0 установлены в единицу.

Окончание таблицы 9.4

9

Дан массив из 20 байт. Посчитать количество байт, содержимое которых равно 10101010b.

10

Дан массив из 11 байт. Посчитать количество байт, в которых старшим разрядом является ноль, а младшим разрядом – единица.


Примечание: массив байтов размещается, начиная с адреса 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

Номер функции

Описание

Параметры вызова

Возвращаемое значение

01h

Ввод с клавиатуры одного символа и отображение его на экране

АН = 01h

AL = код ASCII введенного символа

02h

Отображение символа на стандартный вывод (дисплей)

АН = 02h

DL = отображаемый символ

нет

05h

Отображение символа на принтер Функция не возвращает ошибки состояния принтера.

АН = 05h

DL = символ для принтера

нет

07h и 08h

Выполняет ввод с клавиатуры одного символа. Введенный символ не отображается на экране

АН =07h или

АН =08h

AL = код ASCIL введенного символа

09h

Выполняет отображение строки на стандартный вывод. $ – признак конца строки (не отображается).

АН = 09Н

DS:DX = адрес отображаемой строки

нет

ОАh

Выполняет ввод с клавиатуры в буфер строки символов. Символы при этом отображаются на экране. Символы вводятся один за другим, до тех пор, пока не будет введен код ODh (код клавиши Enter), завершающий строку. При вводе пользователь может редактировать строку

АН = 0Ah

DS:DX = адрес буфера ввода

строка символов по указанному адресу

0Bh

Выполняет опрос состояния буфера клавиатуры. Устанавливает значение AL в зависимости от наличия символов в буфере клавиатуры. Часто используются в задачах, действующих при нажатии определенных клавиш.

АН = 0Bh

AL = 00h, если нет символа в буфере клавиатуры;

AL = FFh, если есть символ в буфере клавиатуры.

1   2   3   4   5   6   7

Похожие:

Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №1 «Изучение организации бесперебойного питания пк»
Практическая работа №3 «Изучение типов современных процессоров и их характеристик»
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №1 «Изучение организации бесперебойного питания пк»
Практическая работа №3 «Изучение типов современных процессоров и их характеристик»
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №1 «Изучение методов конфигурирования сетей доступа»
Практическая работа №2 «Изучение методов отбора, подготовки и контроля линии под технологию adsl»
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Лабораторная работа №10. Изучение принципа действия и функциональной...
Лабораторная работа № Изучение принципов построения системы автоматической подстройки частоты (апч) радиолокационной станции
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора
Лабораторная работа Изучение принципов функционирования простейшей микроэвм и процессора I8085A при реализации программы
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Урок Практическая работа №4 «Получение аммиака и изучение его свойств» Цели урока
Цели урока: получения аммиака изучение его свойства через проведение практической работы
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Методические указания к лабораторным работам Рязань 2013
...
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Курсовая работа
Целью работы является детальное изучение бережливого производства, его принципов, инструментов, их характеристик, а также возможностей...
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №1 «Работа с нормативными документами»
...
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Урок информатики по теме "Системы счисления. Позиционные и непозиционные...
Формирование представлений об информации как одного из трех основополагающих понятий науки — вещества, энергии, информации, на основе...
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Описание практической работы №2 создание шаблона сайта
Цель работы: изучение и освоение принципов работы с html тегами, их атрибутами и умение создавать базовые элементы web–страницы
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Методические указания к выполнению лабораторных работ по дисциплине радиолокационные системы
Лабораторная работа №1 «Изучение принципов построения штатной радиолокационной киа»
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №1 «Изучение видов интерфейсов и их характеристик»
Профессиональный модуль «Применение микропроцессорных систем, установка и настройка периферийного оборудования»
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №1 «Расчет срока окупаемости капитальных вложений...
Практическая работа №2 «Задача выбора поставщика и ее решениена основе анализа полной стоимости»
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №5. Составление инструкции «Аккумуляторщик»
...
Практическая работа №1 «Изучение принципов работы с системами счисления» icon Практическая работа №1 «Технология строительства воздушных линий связи»
Практическая работа №9 «Технология ввода кабелей в здание атс. Оборудование шахт»

Руководство, инструкция по применению






При копировании материала укажите ссылку © 2024
контакты
rykovodstvo.ru
Поиск