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

Сегментные регистры

Читайте также:
  1. Регистры
  2. Регистры Serial ATA
  3. Регистры состоянияиуправления
  4. Регистры устройств
  5. Режимы и регистры ЕСР-порта

1. Сегмент кода. Содержит команды программы. Для доступа к этому сегменту служит регистр cs (code segment register) – сегментный регистр кода. Он содержит адрес сегмента с машинными командами, к которому имеет доступ микропроцессор (т. е. эти команды загружаются в конвейер микропроцессора).

2. Сегмент данных. Содержит обрабатываемые программой данные. Для доступа к этому сегменту служит регистр ds (data segment register) – сегментный регистр данных, который хранит адрес сегмента данных текущей программы.

3. Сегмент стека. Этот сегмент представляет собой область памяти, называемую стеком. Работу со стеком микропроцессор организует по следующему принципу: последний записанный в эту область элемент выбирается первым. Для доступа к этому сегменту служит регистр ss (stack segment register) – сегментный регистр стека, содержащий адрес сегмента стека.

8)Регистры - это несколько байт, которые физически находятся в центральном процессоре(ЦП).

Регистры нужны для вычислений и хранения данных или адресов, где хранятся данные.

 

Есть 4 регистра общего назначения (РОН): EAX,EBX,ECX,EDX

Все они имеют размер 4 байта: от 0000 0000h до ffff ffffh

Пробел для лучшей читабельности, h на конце указывает на шестнадцатеричную систему счисления.

 

Пример:

inc eax;регистр EAX станет таким:0000 0001h

inc eax;0000 0002h

nop;тут действие не происходит

dec eax;отнимаем 1 и получаем 0000 0001h

dec eax;0000 0000h

nop;и опять ничего не происходит

EAX - аккамулятор

EBX - база

ECX - счетчик

EDX - данные

Четыре способа применения регистров кроме основного (счет).

 

9)

Регистровые указатели и индексные регистры тесно связаны с определенными операциями.

Регистровые указатели SP и BP обеспечивают доступ к данным в сегменте стека.

 

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

 

Регистр командного указателя IP (Instruction Pointer) содержит смещение на команду, которая должна быть выполнена. Обычно при программировании этот регистр не используют. Но очень удобно наблюдать за изменениями его значений при отладке программы в различных отладчиках, например debug.exe, TurboDebugger и т.п.

Регистр флагов так же состоит из 16 бит, из них используются только 9.

10)

CF (Carry Flag) — флаг переноса при арифметических операциях. Содержит перенос из старшего бита после арифметических операций, а так же последний бит при сдвигах или циклических сдвигах.
PF (Parity Flag) — флаг четности результата, показывает четность младших восьмибитовых данных (1 – четное, 0 – нечетное).
AF (Auxiliary Flag) — флаг дополнительного переноса. Содержит перенос из 3 бита для 8-битовых данных, используется для специальных арифметических операций.
ZF (Zero Flag) — флаг нулевого результата. Показывает результат арифметических операций и операций сравнения (0 – ненулевой, 1 – нулевой результат).
SF (Sign Flag) — флаг знака (совпадает со старшим битом результата, 0 – плюс, 1 - минус).
TF (Trap Flag) — флаг пошагового режима (используется при отладке).
IF (Interrupt-enable Flag) — флаг разрешения аппаратных прерываний.
DF (Direction Flag) — флаг направления при строковых операциях. Обозначает левое или правое направление пересылки или сравнения строковых данных.
OF (Overflow Flag) — флаг переполнения. Указывает на переполнение старшего бита при арифметических командах.

 

11) Машинная адресация.

Реальный режим.

Процессор может обращаться только к первому мегабайту памяти. Диапазон адресов от 00000 до FFFFF. При работе в реальном режиме процессор, в заданный момент времени может, выполнять одну программу, при этом, выполнение программы может прерваться прерыванием, которое переключит процессор на выполнение другого процесса. Например, на обработку запроса от одного из устройств компьютера.

Реальный режим работы процессора используется в MS DOS и в режимах эмуляции ОС MS Windows.

Защищенный режим.

Процессор выполняет несколько процессов, каждому их которых может быть назначено до 4 Гб оперативной памяти. Для предотвращения ошибок код и данные располагают во взаимно несмежных сегментах.

В защищенном режиме работают ОС Windows и Linux.

Виртуальный режим.

Этот режим в свою очередь работает в защищенном режиме. Для каждой задачи создается виртуальная машина, которой выделяется изолированная область памяти размером 1 Мб, и полностью эмулируется работа процессора 80х86 в реальном режиме.

Виртуальный режим поддерживают ОС Windows. Программы, написанные для MS DOS и реального режима адресации, которые напрямую взаимодействуют с аппаратным обеспечением, в виртуальном режиме работать не будут.

 

11) Четная адресация

 

Процессор 8086, 80286 и 80386 действуют более эффективно, eсли в

программе обеспечиваются доступ к словам, расположенным по четным адресам.

| Адрес: 04B23 Сначала процессор получает доступ к байтам по адресам 4B22 и 4B23 ипересылает байт из ячейки 4B23 в регистр AL. Затем он получает доступ кбайтам по адресам 4B24 и 4B25 и пересылает байт из ячейки 4B23 в регистрAH. В результате регистр AX будет содержать 0124.12) ФОРМАТ КОДИРОВАНИЯОсновной формат кодирования команд ассемблера имеет следующий вид: [метка] команда [операнд(ы)] Метка (если имеется), команда и операнд (если имеется) pазделяются покрайней мере одним пробелом или символом табуляции. Максимальная длинастроки - 132 символа, однако, большинство предпочитают работать состроками в 80 символов (соответственно ширине экрана). Примерыкодирования: Метка Команда Операнд COUNT DB 1;Имя, команда, один операнд MOV AX,0;Команда, два операнда Метки ------- Метка в языке ассемблера может содержать следующие символы: Буквы: от A до Z и от a до z Цифры: от 0 до 9 Спецсимволы: знак вопроса (?) точка (.) (только первый символов Первым символом в метке должна быть буква или спецсимвол. Ассемблерне делает различия между заглавными и строчными буквами. Максимальнаядлина метки - 31 символ. Примеры меток: COUNT, PAGE25, $E10. Рекомендуетсяиспользовать описательные и смысловые метки. Имена регистров, например,AX, DI или AL являются зарезервированными и используются только дляуказания соответствующих регистров. Например, в команде ADD AX,BXассемблер "знает", что AX и BX относится к регистрам. Однако, в команде MOV REGSAVE,AXассемблер воспримет имя REGSAVE только в том случае, если оно будетопределено в сегменте данных. В прил.3 приведен cписок всехзарезервированных слов ассемблера. Команда --------- Мнемоническая команда указывает ассемблеру какое действие долженвыполнить данный оператор. В сегменте данных команда (или директива)определяет поле, рабочую oбласть или константу. В сегменте кода командаопределяет действие, например, пересылка (MOV) или сложение (ADD). Операнд --------- Если команда специфицирует выполняемое действие, то операндопределяет а) начальное значение данных или б) элементы, над которымивыполняется действие по команде. В следующем примере байт COUNTERопределен в сегменте данных и имеет нулевое значение: Метка Команда Операнд COUNTER DB 0;Определить байт (DB) с нулевым значения Команда может иметь один или два операнда, или вообще быть безоперандов. Рассмотрим следующие три примера:

13) Главное различие между файлами типа.COM и типа.EXE связано с

форматом записи соответствующего объектного файла на дискете. Оба

типа файлов являются программами, записанными на машинном языке.

Программа, записанная в файле типа.COM может сразу выполняться.

DOS может непосредственно загрузить его в память машины с дискеты.

После этого DOS передает управление в сегмент памяти, отведенный

для команд, в точку со смещением 100H. Файл типа.EXE

непосредственно выполнен быть не может. У соответствующего

объектного файла, хранящегося на дискете, имеется заголовок. В нем

содержится информация, сгенерированная редактором связей. Наиболее

важная ее часть относится к информации, связанной с перемещением. В

то время, как у файла типа.COM перемещаем один сегмент команд, у

файла типа.EXE могут быть перемещены многие различные сегменты.

Это ограничивает максимальный размер файла.COM 64 кбайтами, если

только программа не подгружает еще и другие сегменты. Файл типа

.EXE может содержать ряд сегментов, которые динамически

перемещаются в пределах программной области.

15) Команда JMP в примере на рис.7.1 реализует бесконечный цикл. Но более
вероятно подпрограмма должна выполнять определенное число циклов. Команда
LOOP, которая служит для этой цели, использует начальное значение в
регистре CX. В каждом цикле команда LOOP автоматически уменьшает
содержимое регистра CX на 1. Пока значение в CX не равно нулю, управление
передается по адресу, указанному в операнде, и если в CX будет 0,
управление переходит на следующую после LOOP команду.

__________________________________________________________________________

page 60,132
TITLE EXLOOP (COM) Организация цикла командой LOOP
0000 CODESG SEGMENT PARA 'Code'
ASSUME CS:CODESG,DS:CODESG,SS:CODESG
0100 ORG 100H

0100 BEGIN PROC NEAR
0100 B8 0001 MOV AX,01;Инициализация AX,
0103 BB 0001 MOV BX,01; BX,
0106 BA 0001 MOV DX,01; и DX
0109 B9 000A MOV CX,10;Число циклов
010C A20:
010C 40 INC AX;Прибавить 01 к AX
010D 03 D8 ADD BX,AX;Прибавить AX к BX
010F D1 E2 SHL DX,1;Удвоить DX
0111 E2 F9 LOOP A20;Уменьшить CX и повторить
; цикл, если не нуль
0113 C3 RET;Завершить работу
0114 BEGIN ENDP
0114 CODESG ENDS
END BEGIN

16) Команды DEC и JNZ действуют аналогично команде LOOP: уменьшают
содержимое регистра CX на 1 и выполняет переход на метку A20, если в CX не
ноль. Команда DEC кроме того устанавливает флаг нуля во флаговом регистре
в состояние 0 или 1. Команда JNZ затем проверяет эту установку. В
рассмотренном примере команда LOOP хотя и имеет ограниченное
использование, но более эффективна, чем две команды: DEC и JNZ.
Аналогично командам JMP и LOOP операнд в команде JNZ cодержит
значение расстояния между концом команды JNZ и адресом A20, которое
прибавляется к командному указателю. Это расстояние должно быть в пределах
от -128 до +127 байт. В случае перехода за эти границы ассемблер выдаст
сообщение "Relative jump out of range" (превышены относительные границы
перехода).

17) В знаковых данных самый левый бит
представляет собой знак, причем если его значение равно нулю, то число
положительное, и если единице, то отрицательное. Многие числовые значения
могут быть как положительными так и отрицательными.
В качестве примера предположим, что регистр AX содержит 11000110, а
BX - 00010110. Команда

CMP AX,BX

сравнивает содержимое регистров AX и BX. Если данные беззнаковые, то
значение в AX больше, а если знаковые - то меньше.

Переходы для беззнаковых данны
---------------------------------
Мнемоника Описание Проверяемые флаги

JE/JZ Переход, если равно/нуль ZF
JNE/JNZ Переход, если не равно/не нуль ZF
JA/JNBE Переход, если выше/не ниже или равно ZF,CF
JAE/JNB Переход, если выше или равно/не ниже CF
JB/JNAE Переход, если ниже/не выше или равно CF
JBE/JNA Переход, если ниже или равно/не выше CF,AF

Любую проверку можно кодировать одним из двух мнемонических кодов.
Например, JB и JNAE генерирует один и тот же объектный код, хотя
положительную проверку JB легче понять, чем отрицательную JNAE.

17) Переходы для знаковых данных.

 

Мнемоника Описание Проверяемые флаги

JE/JZ Переход, если равно/нуль ZF
JNE/JNZ Переход, если не равно/не нуль ZF
JG/JNLE Переход, если больше/не меньше или равно ZF,SF,OF
JGE/JNL Переход, если больше или равно/не меньше SF,OF
JL/JNGE Переход, если меньше/не больше или равно SF,OF
JLE/JNG Переход, если меньше или равно/не больше ZF,SF,OF

Команды перехода для условия равно или ноль (JE/JZ) и не равно или не
ноль (JNE/JNZ) присутствуют в обоих списках для беззнаковых и знаковых
данных. Состояние равно/нуль происходит вне зависимости от наличия знака.


Специальные арифметические проверки
-------------------------------------
Мнемоника Описание Проверяемые флаги

JS Переход, если есть знак (отрицательно) SF
JNS Переход, если нет знака(положительно) SF
JC Переход, если есть перенос (аналогично JB) CF
JNC Переход, если нет переноса CF
JO Переход, если есть переполнение OF
JNO Переход, если нет переполнения OF
JP/JPE Переход, если паритет четный PF
JNP/JP Переход, если паритет нечетный PF


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


<== предыдущая страница | следующая страница ==>
Двоичная арифметика| КОРМЧАЯ ЖЕНСКОГО МОНАШЕСТВА ЗАКАРПАТЬЯ

mybiblioteka.su - 2015-2024 год. (0.012 сек.)