Сдам Сам

ПОЛЕЗНОЕ


КАТЕГОРИИ







Регистр командного указателя





Регистры EIP/IP содержат смещение команды, которая должна быть выполнена.

EIP

IP

 

Регистр флагов

Флаговые регистры (EFLAGS/FLAGS) определяют текущее состояние машины и содержат результаты выполнения некоторых команд (многие арифметические команды и команды

сравнения изменяют состояние флагов).

Флаг Назначение

o (переполнение) ситуация переполнения возникает, когда результат умножения или деления не помещается в приемнике

d (направление) указывает на левое или правое направление при операциях со строками

i (прерывание) указывает на возможность внешних прерываний

t (пошаговый режим) переводит процессор в пошаговый режим выполнения команд

s (знак) содержит знак результата последней арифметической операции (0 - плюс, 1- минус)

z (ноль) содержит 1, если результат последней арифметической операции 0, и 0 – в противном случае

a (внешний перенос) содержит результат переноса из 3-го бита в байте при операциях с целыми числами в BCD-формате

c (перенос) содержит результат переноса из старшего бита после арифметических операций

p (четность) содержит 1, если в младших 8-ми битах 16-ти разрядных регистров четное количество единиц, и 0 - в противном случае

Структура программы на языке ассемблера

Структура программы на языке ассемблера сильно зависит от используемого компилятора и целевой операционной системы. В данном лабораторном практикуме используется пакет OpenWatcom, использующий синтаксис Intel и предназначенный для ОС DOS, Windows и OS/2.

Типичная программа на языке ассемблера (не только для DOS) содержит описание сегментов (секций) кода, данных и стека.

DOS-программа exe-формата может иметь следующую структуру:

;--------------------------------------------------

; Сегмент кода:

;--------------------------------------------------

CodeSg segment 'CODE'

; Подсказываем ассемблеру какие сегментные регистры

; указывают на какой сегмент:

Assume CS:CodeSg, DS:DataSg, SS:StackSg

; Точка входа в программу (указывается в завершающем

; программу операторе end):

begin:

; Собственно код:

; инициализируем DS:

Mov AX, DataSg

Mov DS, AX

; Ваш код

; нормальное завершение DOS-программы

Mov AX, 4C00h

Int 21h

CodeSg ends

;--------------------------------------------

; Сегмент данных:

;--------------------------------------------

DataSg segment 'DATA'

; Ваши данные

DataSg ends

;--------------------------------------------

; Сегмент стека:

;--------------------------------------------

StackSg segment stack 'STACK'

; резервируем под стек 256 байт,

; заполненых нулями:

Db 256 dup(0)

StackSg ends

;------------------------------------

End begin

 

Режимы адресации

В зависимости от того откуда и куда передаются данные и каким способом, различаются несколько режимов адресации:

• регистровая;

• непосредственная;

• прямая;

• косвенная;

•по базе со смещением;

•по базе с индексированием;

•стековая.

Регистровая адресация

Этот вид адресации предполагает передачу данных из одного регистра в другой.

Пример 1 (регистровая адресация)

Mov AX, BX; копируются данные из BX в AX

Mov DS, AX; сегментный регистр DS инициализируется числом из AX

Xchg AL, AH; обмен значений регистров AL и AH

Непосредственная адресация

При этом виде адресации происходит загрузка в регистр константы непосредственно записанной в команде.

Пример 2 (непосредственная адресация)

; счетчик проинициализировать числом 10:

Mov CX, 10

; нельзя инициализировать сегментный регистр непосредственным значением:

mov DS, 0000h; недопустимо!

; можно сделать так:

Mov AX, 0000h

Mov DS, AX

; загрузка адресов в индексные регистры:

Lea SI, X

Lea DI, Y

Прямая адресация

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

Пример 3 (прямая адресация)

; скопировать в BX слово по адресу 0000:0000h:

Mov AX, 0000h

Mov ES, AX

Mov BX, ES:0000h

; если в сегменте, на который указывает DS, есть переменная с именем X и

; размера слово, то значение хранящееся в DX можно скопировать в X так:

Mov X, DX

Косвенная адресация

Этот вид адресации предполагает использование базового регистра BX, используемого в качестве указателя.

Пример 4 (косвенная адресация)

; пусть в сегменте, на который указывает DS, первым объявлено слово X,

; а следом за ним - слово Y; тогда их значения можно скопировать так:

Mov BX, 0000h

mov AX, [BX]

Mov BX, 0002h

mov CX, [BX]

Адресация по базе со смещением

Этот вид адресации представляет из себя разновидность косвенной адресации.

Пример 5 (адресация по базе со смещением)

; следующие команды из примера 4 можно заменить на одну:

; mov BX, 0002h

; mov CX, [BX]

mov CX, [BX]+2

Адресация по базе с индексированием

Этот вид адресации представляет из себя разновидность косвенной адресации и предполагает использование индексных регистров SI и DI.

Пример 6 (адресация по базе с индексированием)

; пусть объявлен массив слов X; тогда получить значения

; первого, третьего и пятого элемента можно так:

Mov BX, offset X

Mov SI, 0000h

mov AX, [BX][SI]; 1

Add SI, 4

mov AX, [BX][SI]; 3

Add SI, 4

mov AX, [BX][SI]; 5

Стековая адресация

Стековая адресация предназначена для передачи данных из стека и в стек. Для этого предназначены команды push и pop, адресующие ячейки памяти посредством регистра SP, и команды mov, использующие регистр BP.

Пример 7: Временное хранение данных

Push eax; сохраняем текущее значение eax в стеке

Выполняем какие нибудь действия,

Использующие eax

Pop eax; восстанавливаем прежнее значение eax

Пример 8: Копирование содержимого одного сегментного регистра в другой

Push ds

Pop es

Задание

В соответствии с представленной программы в лабораторной работы произвести следующие режимы адресации:

- регистровую;

- непосредственную;

- прямую;

- косвенную;

- адресацию по базе со смещением;

- адресацию по базе с индексированием.

5 Контрольные вопросы

1. Регистры процессоров семейства x86.

2. Структура регистра флагов.

3. Сегментная организацию памяти реального режима процессоров семейства x86.

4. Форматы и алгоритмы работы следующих команд: mov, lea, lds, les, lfs, lgs, lss;

xchg.

5. Форматы и алгоритмы работы команд работы с флагами: lahf, sahf, clc/stc,

cld/std, cmc, cli/sti.

6. Режимы адресации, применяемые в процессорах семейства x86.

7.Режим регистровой адресации.

8.Режим непосредственной адресации.

9.Режим прямой адресации.

10.Режим косвенной адресации.

11.Режим адресации по базе со сдвигом.

12.Режим адресации по базе с индексированием.

13.Общее понятие стека.

14.Особенности реализации стека в семействе микропроцессоров x86.

15.Форматы, предназначение и алгоритмы работы команд стека: push, pop, pusha/pushad,

popa, popad.

 

 

Лабораторная работа №3

Структура программы на языке ассемблера. Сегментная

Организация памяти.

Цель работы

Основные характеристики, области применения ЭВМ различных классов. Изучение устройства компьютера: Сегментация памяти

Базовые знания, необходимые для выполнения данной работы

• Двоичная система счисления.

• Шестнадцатиричный код.

• Понятие регистра, его виды и предназначение.

• Типичная структура и схема микропроцессора.

 

 

Программы, использующие 32-х разрядные регистры должны начинаться с одной из директив .386, .486, .586 или .686. Кроме того, в операторе segment словом use16 должен указываться 16-ти разрядный режим адресации для правильной работы программы в среде DOS.







Что вызывает тренды на фондовых и товарных рынках Объяснение теории грузового поезда Первые 17 лет моих рыночных исследований сводились к попыткам вычис­лить, когда этот...

ЧТО ПРОИСХОДИТ, КОГДА МЫ ССОРИМСЯ Не понимая различий, существующих между мужчинами и женщинами, очень легко довести дело до ссоры...

ЧТО ТАКОЕ УВЕРЕННОЕ ПОВЕДЕНИЕ В МЕЖЛИЧНОСТНЫХ ОТНОШЕНИЯХ? Исторически существует три основных модели различий, существующих между...

ЧТО И КАК ПИСАЛИ О МОДЕ В ЖУРНАЛАХ НАЧАЛА XX ВЕКА Первый номер журнала «Аполлон» за 1909 г. начинался, по сути, с программного заявления редакции журнала...





Не нашли то, что искали? Воспользуйтесь поиском гугл на сайте:


©2015- 2024 zdamsam.ru Размещенные материалы защищены законодательством РФ.