Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Регистр флажков, его назначение и использование.



Биты 1, 3, 5, 15, 19-31 — не используются, зарезервированы.

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

В защитном режиме 5 дополнительных флагов, определяющих режим работы процессора.

CF=1, если при выполнении команды '+' осуществляется перенос за разрядную сетку, а при '-' требуется заем.

PF=1, если в младшем байте резт-та содержится четное кол-во единиц

AF=1, если осуществляется перенос(заем) из 3-го разряда байтов в 4-й и наоборот

ZF=1, если результат- во всех разрядах результата.

SF всегда =знаковому разряду результата

TF=1, прерывает работу процессора после каждой выполненной команды.

DF определяет направление обработки строк данных.

 

Форматы данных и форматы команд.

Процессор может обрабатывать большой набор различных типов данных. Целые числа без знака могут занимать слово, байт, двойное слово и принимать значения из диапазонов 0-256, 0-65535, 0-4294967295.

Целые числа со знаком: -128-127, -32768-32767, -2147483648-2147483647 и хранятся в дополнительном коде. Дополнительный Код «+» численно равен самому числу, а дополнительный код «-»: х=10n-|x|, n-разрядность. Для (-AC716): 104АС7=F539

Символьные данные символы в коде ASCII для любого символа сводится 1 байт.

Строковые данные-последовательность бит, байт, слов или двочных слов.

Указатели-длинный(занимает 48 бит) –селектор(16)+смещение(32)

-короткий (занимает 32 бита) только смещение

dispH/disp L-стандартная(младшая часть смещения)

«над операции»(иногда «reg»)- определяют выполняемую операцию.

d-место хранения 1-го операнда. Если w=0 то работа с байтами, =1-со словами.

Reg-определяет один операнд, хранимый в регистре.

Mod, disp H, disp L- второй операнд(может хранится в памяти)

Если mod=11, то второй операнд находится в регистре, определяется полем I/m

Disp H/L- отсутсвует, команда займет 2 байта если mod< > 11; т.е 2-й опернад нах-ся в памяти.

 

36.Адресация операндов, способы адресации, примеры команд с различными способами адресации.

Команда - цифровой двоичный код состоящий из 2 последовательностей 0 и 1. Одна из них определяет код операции, а вторая адреса операндов, участвующих в операции и место расположения результатов.

Процессор может работать с безадресными командами(1, 2, 3-адресами)

Одноадресные могут работать с операндами, размещенных в регистрах или памяти. Формат 2-х адресных команд м.б различен. Адрес состоит из 3 частей: < база>, < индекс>, < смещение>. Способы адресации: непосредственная, прямая, регистровая, косвенно-регистровая, адресация по базе, прямая с индексированием, по базе с индексированием.

1)регистровая: MOV AX, BX; (BX)-> AX Машинный формат 1001001111000011; код операции: 100100; d=1; w=1; mod=11; reg=000; r/m=011.

2)непосредственная: MOV AX, 25; (25)-> AX CONST EQU 34H; именнованая константа cosnt. MOV AX, CONST; (34H)-> AX.

3)прямая: если известен адрес памяти, начиная с которого размещается операнд, то в команде можно его указать: MOV AX, ES: 0001.ES- регистр сегмента данных, 0001-смещение внутри сегмента. Содержание 2-х байт, начиная с адреса (ES)+0001 пересылаются в АХ- ((ES)+0001)-> AX

4)Косвенно-регистровая: в регистре содержится адрес области памяти в которой операнд содержится: MOV AX, [SJ]; Могут использоватся: SI, DI, BX, BP, EAX, EBX, ECX, EDX, EBP, ESI, EDI. Не могут: AX, CX, DX, SP, ESP.

5)на базе со смещением: MOV AX, [BX]+2; ((DS)+(BX)+2)-> AX MOV AX, [BP+4]; ((SS)+(BP)+4)-> AX

6)прямая с индексированием: MOV, AX, MAS[SI]; ((DS)+(SI)+MAS)-> AX MAS- адрес в области памяти для работы с массивами.

7)по базе с индексированием: MOV AX, Arr[BX][DJ]; ((DS)+(BX)+(DJ)+Arr)-> AX

 

Структура программы на Ассемблере.Стандартные директивы сегментации.

Программа на Ассемблере состоит из 3-х сегментов:

; сегмент стека Sseg Segment …......... Sseg ends

; сегмент данных Dseg Segment.......... Dseg ends

; сегмент кода Cseg Segment ….......... Cseq ends

Каждый сегмент начинается директивой начала сегмента — Segment и заканчивается директивой конца Ends. Существует специальная директива, устанавливающая соответствие между сегментными регистрами и именами в директиве сегмент.

ASSUME SS: Sseg, DS: Dseg, CS: Cseg, ES: Dseg. Кодовый сегмент оформляется как процедура: Cseq Segment ASSUME SS: Sseg, DS: Dseq, CS: Cseg, CS: Dseg

Pr1 proc …./….. Pr2 proc …./…. Pr2 endp …./…. Pr1 endp Cseg ends.

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

; Prim1.ASM; |сегмент стека Sseg Segment… DB256| DUP(? )| Sseg ends |

; сегмент данных Dseg Segment… X DB |‘A’ |Y DB ‘B’ Z DB ‘C’| Dseg Ends| Cseg Segment| ASSUME SS: Sseg, DS: Dseg. CS: Cseg| Start Proc FAR| Push DS/ Push AX / MOV DX, Dseg/ MOV| DS, DX |Call MAIN| Ret| Start endp| MAIN Proc Near| ADD Al, X| MOV AX, Y| ……../………..| Ret| Main endp| Cseg ends| End start|

 

 

Формат команды и директивы на Ассемблере.Примеры команд и директив.

Ассемблер — язык программирования низкого уровня => программа на нем должна пройти 3 этапа обработки.

Команда состоит из 4-х полей:

[< имя> [: ]]< код операции> [< операнды> ][; комментарии]

В [] - необязательные поля, имя - символическое имя ассемблера, используется в качестве метки для обращения к этой команде, передачи управления на команду.

[: ] - метка внутренняя. Код операции определяет какое действие должен выполнить процессор.

Поле < операнды> содержит адреса данных или данные, участвующие в операции и местоположение результатов через “, ”.

JMP M1: команда безусловной передачи на команду с меткой М1

M1: MOV AX, BX; пересылка содержимого регистра BX в регистр AX.

Директива: [< имя> ]< код псевдо операции> < операнды> [; коменты] Код псевдооперации определяет назначение директивы. Операндов мб различное кол-во и для одной директивы. M1 DB 1, 0, 1, 0, 1; директива DB определяет 5 байтов в памяти и заполняет их 0 или 1, причем адрес первого байта М1. M2 Dv?,?,?; 3 байта ничем не заполнены, адрес первого М2. Proc; директива начала процедуры Endp; директива конца процедуры Segment; директива начала сегмента Ends директива конца сегмента.

 

 


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-07-14; Просмотров: 502; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.012 с.)
Главная | Случайная страница | Обратная связь