Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Регистр флажков, его назначение и использование. ⇐ ПредыдущаяСтр 2 из 2
Биты 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; Нарушение авторского права страницы