История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
Топ:
Оценка эффективности инструментов коммуникационной политики: Внешние коммуникации - обмен информацией между организацией и её внешней средой...
История развития методов оптимизации: теорема Куна-Таккера, метод Лагранжа, роль выпуклости в оптимизации...
Интересное:
Влияние предпринимательской среды на эффективное функционирование предприятия: Предпринимательская среда – это совокупность внешних и внутренних факторов, оказывающих влияние на функционирование фирмы...
Искусственное повышение поверхности территории: Варианты искусственного повышения поверхности территории необходимо выбирать на основе анализа следующих характеристик защищаемой территории...
Мероприятия для защиты от морозного пучения грунтов: Инженерная защита от морозного (криогенного) пучения грунтов необходима для легких малоэтажных зданий и других сооружений...
Дисциплины:
|
из
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. При этом будет меняться число возможных итераций цикла.
|
|
|
История развития пистолетов-пулеметов: Предпосылкой для возникновения пистолетов-пулеметов послужила давняя тенденция тяготения винтовок...
Кормораздатчик мобильный электрифицированный: схема и процесс работы устройства...
Типы оградительных сооружений в морском порту: По расположению оградительных сооружений в плане различают волноломы, обе оконечности...
Семя – орган полового размножения и расселения растений: наружи у семян имеется плотный покров – кожура...
© cyberpediasu.com 2017-2026 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!