История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Эмиссия газов от очистных сооружений канализации: В последние годы внимание мирового сообщества сосредоточено на экологических проблемах...
Топ:
Определение места расположения распределительного центра: Фирма реализует продукцию на рынках сбыта и имеет постоянных поставщиков в разных регионах. Увеличение объема продаж...
Оснащения врачебно-сестринской бригады.
Генеалогическое древо Султанов Османской империи: Османские правители, вначале, будучи еще бейлербеями Анатолии, женились на дочерях византийских императоров...
Интересное:
Наиболее распространенные виды рака: Раковая опухоль — это самостоятельное новообразование, которое может возникнуть и от повышенного давления...
Распространение рака на другие отдаленные от желудка органы: Характерных симптомов рака желудка не существует. Выраженные симптомы появляются, когда опухоль...
Аура как энергетическое поле: многослойную ауру человека можно представить себе подобным...
Дисциплины:
2020-11-19 | 121 |
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-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!