Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатика
ИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханика
ОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторика
СоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансы
ХимияЧерчениеЭкологияЭкономикаЭлектроника

Режимы адресации памяти

Читайте также:
  1. IV. Режимы использования земель в границах охранной зоны объектов археологического наследия и зон археологического наблюдения
  2. Адресация памяти в защищенном режиме работы процессора
  3. Архитектура памяти.
  4. В оперативной памяти находятся 10 переменных, содержащих числа, - S1, S2, ... S10. Программирование в среде Ассемблера. Сосчитать их произведение.
  5. В увековечивании памяти Юрия Тумаркина сделан еще один важный шаг
  6. Верхний блок памяти
  7. Виды памяти

 

Типы адресации Ассемблера микропроцессора Intel 8086 , будем изучать на примере команд пересылки, без которых не обходится ни одна программа.

К этой группе команд относятся команды:

Mov <Операнд назначения (приемник)>, <операнд- источник>

Xchg <Операнд1>, <операнд2>.

Mov – это основная команда пересылки данных. В ней допустимо большинство из возможных сочетаний операндов:

Mov ax,table ;пересылка из памяти в регистр

Mov table, ax ; и наоборот

Mov ds, ax ; пересылка между 16-битовыми регистрами

Mov bl,al ; пересылка между 8-битовыми регистрами

Mov cl,-30 ;пересылка константы в регистр

Mov table,word ptr 25h ; пересылка константы в память

Обращаю Ваше внимание на тот факт, что если шестнадцатеричная константа начинается с цифры, то дополнительный признак 0 перед ней ставить необязательно! Признак обязателен для шестнадцатеричных констант, начинающихся с буквы, т.к. с буквы начинаются большинство (если не все) идентификаторов программы!

Обратите внимание на запись инструкции пересылки в память константы! Если в команде пересылки одним из операндов является регистр, то ассемблер пересылает столько байтов, каков размер регистра. При отсутствии в команде регистра ассемблер не знает, одну, двух или четырехбайтовую константу необходимо пересылать в память. В таком случае подсказкой для ассемблера должны быть модификаторы BYTE PTR (пересылка одного байта), WORD PTR (пересылка слова – двух байтов), DWORD PTR (пересылка двойного слова – четырех байтов).

В команде Mov исключаются следующие сочетания операндов:

- сегментный регистр-память. Нельзя загрузить в сегментный регистр значение непосредственно из памяти. Поэтому для такой загрузки используют обычно 2 команды пересылки – через регистр общего назначения или через стек. Если посмотрите на листинг программы, то в начале сегмента кодов увидите 2 команды пересылки, которые должны присутствовать в каждой программе:

DSEG SEGMENT PARA PUBLIC ‘DATA’ ; по этой команде ;Ассемблер назначит адрес начала сегмента для переменных (или данных) в программе

. . . . . . .

CSEG SEGMENT PARA PUBLIC ‘CODE’

ASSUME CS:CSEG, DS:DSEG, SS:STACK

OUR_PROG PROC

MOV AX,DSEG ; эти команды инициируют адрес

MOV DS,AX ; сегмента данных через РОН

- ячейка памяти-ячейка памяти. Нельзя осуществлять непосредственную пересылку данных из одной ячейки памяти и другую. Такая пересылка осуществляется через регистр общего назначения. Например,

DSEG SEGMENT PARA PUBLIC ‘DATA’

SOURCE DW 500 ; это слово будет скопирована

DEST DW (?) ; в эту переменную


Дата добавления: 2015-07-08; просмотров: 203 | Нарушение авторских прав


 

 

<== предыдущая страница | следующая страница ==>
Адресация в IPv6| MOV DS,AX

mybiblioteka.su - 2015-2023 год. (0.014 сек.)