- Главная
- Информатика
- Прямая адресация памяти
Содержание
- 2. Команды процессора, обращающиеся к памяти, могут в качестве первого байта своего кода содержать префикс замены сегмента,
- 3. Пример прямой адресации
- 4. А также его листинг
- 5. Пусть требуется вывести в левый верхний угол экрана несколько символов, например, два восклицательных знака. Эту операцию
- 6. Пример
- 7. Листинг
- 9. Типы,которые можно выбрать, и классы переменных
- 11. Сетевые переменные в CoDeSys
- 13. Скачать презентацию
Слайд 2
Команды процессора, обращающиеся к памяти, могут в качестве первого байта своего
Команды процессора, обращающиеся к памяти, могут в качестве первого байта своего
кода содержать префикс замены сегмента, с помощью которого процессор определяет, из какого сегментного регистра взять сегментный адрес. Для сегментного регистра ES код префикса составляет 26h, для SS - 36h, для CS - 2Eh. Если префикс отсутствует, сегментный адрес берется из регистра DS (хотя для него тоже предусмотрен свой префикс).
Если в начале программы с помощью директивы assume указано соответствие сегменту данных сегментного регистра DS
assume DS:data
то команды обращения к памяти транслируются без какого-либо префикса, а процессор при выполнении этих команд берет сегментный адрес из регистра DS.
Если в директиве assume указано соответствие сегмента данных регистру ES
assume ES:data
Слайд 3
Пример прямой адресации
Пример прямой адресации
Слайд 4
А также его листинг
А также его листинг
Слайд 5
Пусть требуется вывести в левый верхний угол экрана несколько символов, например,
Пусть требуется вывести в левый верхний угол экрана несколько символов, например,
два восклицательных знака. Эту операцию можно реализовать с помощью следующих команд:
mov AX,0B800h ;Сегментный адрес видеобуфера
mov ES,AX ;Отправим его в ES
mov byte ptr ES:0,'!' ;Отправим символ на 1-е знакоместо экрана
mov byte ptr ES:2,'!' ;Отправим символ на 2-е знакоместо экрана
Настроив регистр ES на сегментный адрес видеобуфера B800h, мы пересылаем код знака "!" сначала по относительному адресу 0 а затем на следующее знакоместо, имеющее смещение 2. В обеих командах необходимо с помощью обозначения ES: указать сегментный регистр, который используется для адресации памяти. Встретившись с этим обозначением, транслятор включит в код команды префикс замены сегмента, в данном случае код 26h.
Настроив регистр ES на сегментный адрес видеобуфера B800h, мы пересылаем код знака "!" сначала по относительному адресу 0 а затем на следующее знакоместо, имеющее смещение 2. В обеих командах необходимо с помощью обозначения ES: указать сегментный регистр, который используется для адресации памяти. Встретившись с этим обозначением, транслятор включит в код команды префикс замены сегмента, в данном случае код 26h.
Слайд 6
Пример
Пример
Слайд 7
Листинг
Листинг
Слайд 8
Слайд 9
Типы,которые можно выбрать, и классы переменных
Типы,которые можно выбрать, и классы переменных
Слайд 10
Слайд 11
Сетевые переменные в CoDeSys
Сетевые переменные в CoDeSys