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