Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Индивидуальные и групповые автопоилки: для животных. Схемы и конструкции...
Топ:
Комплексной системы оценки состояния охраны труда на производственном объекте (КСОТ-П): Цели и задачи Комплексной системы оценки состояния охраны труда и определению факторов рисков по охране труда...
Техника безопасности при работе на пароконвектомате: К обслуживанию пароконвектомата допускаются лица, прошедшие технический минимум по эксплуатации оборудования...
Процедура выполнения команд. Рабочий цикл процессора: Функционирование процессора в основном состоит из повторяющихся рабочих циклов, каждый из которых соответствует...
Интересное:
Берегоукрепление оползневых склонов: На прибрежных склонах основной причиной развития оползневых процессов является подмыв водами рек естественных склонов...
Национальное богатство страны и его составляющие: для оценки элементов национального богатства используются...
Отражение на счетах бухгалтерского учета процесса приобретения: Процесс заготовления представляет систему экономических событий, включающих приобретение организацией у поставщиков сырья...
Дисциплины:
|
из
5.00
|
Заказать работу |
Содержание книги
Поиск на нашем сайте
|
|
|
|
Рассмотрим ассемблерные команды, которые находят применение при решении задач системного программирования. При описании команд использованы условные обозначения:
· R — регистр процессора.
· A — адрес ячейки оперативной памяти или число.
Команды пересылки данных
MOV – запись числа в регистр или ячейку памяти.
MOV R1,R2;R1=R2
MOV R,A;R=A
MOV [R],A;Запись в ячейку памяти значения
MOV R,[R];Сохранения из памяти значения
Подробно эта команда обсуждалась при рассмотрении правил задания кодов данных в ассемблерной программе.
MOVSB – пересылка байтов в оперативной памяти, для работы команды настраиваются регистры процессора:
ESI – адрес источника байтов.
EDI – адрес приемника байтов.
ECX= n – количество пересылаемых байтов.
Для пересылки n байтов команда снабжается префиксом REP. Перед вызовом команды обычно используют команду CLD. Команда сбрасывает флаг регистра флагов направления DF для пересылки байтов в порядке возрастания их адресов в буфере.
Если байты буфера пересылаются в порядке убывания адресов, значение DF = 1. Для установки флага используется команда STD.
Таким образом, при значении DF=0, после завершения пересылки байтов регистры ESI и EDI будут хранить адрес следующей ячейки памяти буфера источника и буфера приемника.
При DF=1 эти регистры хранят адрес ячейки памяти, которая находится п еред ячейкой буфера источника и приемника.
Упражнение 6.1. В сегменте данных задана строка “ABCDEFG”, которая хранится по адресу msg и буфер buf размером 128 байтов. Каждый байт буфера хранить код LF. Требуется переслать символы строки в буфер.
Тогда команды пересылки байтов строки в буфер примут вид:
mov esi,msg;ESI > msg
mov edi,buf;EDI > buf
mov ecx,msg_size; Число байтов
cld;DF = 0
rep movsb;Переслать все байты
Составьте программу, которая выводит исходную строку до пересылки на экран терминала и содержание буфера, после завершения пересылки кодов.
Занесение кодов в стек
PUSH R – запись числа в стек.
POP R – извлечение числа из стека.
При работе со стеком необходимо иметь в виду, в стек можно записывать значение регистра целиком, либо его младшую часть.
Так правильные команды занесения значения регистра EAX примут вид:
push eax
push ax
Следующие команды недопустимы:
push al
push ah
Команда позволяет записывать в стек значения по адресу из оперативной памяти.
Пример. В сегменте данных заданы два адреса:
addr1 dw 1234h
addr2 dd 890fh
Тогда будут допустимы такие команды
push [addr1]
push [addr2]
Следует помнить, что в операциях со стеком могут использоваться только операнды размером с машинное слово (word) и размером в двойное машинное слово (dword)
Для команды POP справедливы те же правила. Так верными будут команды:
pop ebx
pop bx
Команда:
pop bl
недопустима.
Команда обмена значений в регистрах
Формат команды:
XCHG R1, R2
R1 получает значение R2, а R2 получает значение из регистра R1.
Пример. Обмен значение регистров AX и BX
xchg ax,bx
Команды передачи управления
JMP label – безусловный переход.
Данная команда позволяет передать управление команде, которая находиться в том же сегменте, что и команда JMP. В команде label — метка (адрес) команды, которая получает управление.
Пример. Схема передачи управления:
jmp fin
;Команды программы
…...................
;Завершение работы программы
fin:
mov eax,1
mov ebx,0
int 0x80
В ассемблерной программе, адрес команды, на которую передается управление, должен заканчиваться символом двоеточие.
Для выполнения определенного участка программа несколько раз используется команда LOOP.
Формат команды:
LOOP label – циклическое выполнение команд. Первая команда блока команд помечается меткой label. Количество повторений цикла - итераций заносится в регистр ECX:
Пример. Организация цикла на 70 итераций:
mov ECX,70
go:
;Команды
loop go
Каждое выполнение команды LOOP уменьшает значение регистра ECX на единицу. Обработка будет прекращена, когда в ECX будет находиться значение равное нолю.
Общее число возможных итераций цикла равно 232. Допускается использовать не весь регистр для задания счетчика итераций.
Так число итераций можно записать в младшую часть регистра CX или в одну из частей CH или CL. При этом будет меняться число возможных итераций цикла.
|
|
|
Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...
Двойное оплодотворение у цветковых растений: Оплодотворение - это процесс слияния мужской и женской половых клеток с образованием зиготы...
Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...
Архитектура электронного правительства: Единая архитектура – это методологический подход при создании системы управления государства, который строится...
© cyberpedia.su 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!