Регистры общего назначения
При программировании на языке ассемблера регистры общего назначения являются основными рабочими регистрами. Особенностью этих регистров является то, что возможна использование их не только как единого целого, но и по частям. Так 32-х разрядные регистры имеют в качестве младшей половинки соответствующий 16-ти разрядный регистр (однако, старшая половинка не адресуема). А 16-ти разрядные, в свою очередь имеют адресуемые младшие и старшие одно байтовые половинки. Регистры EAX и AX. Регистры EAX и AX являются аккумуляторами и применяются для всех основных операций ввода-вывода, некоторых операций над строками и некоторых арифметических операций. Например, команды умножения, деления и сдвига предполагают использование регистров EAX и AX. Некоторые команды генерируют более эффективный код, если они имеют ссылки на регистры EAX и AX. EAX AX AH AL Регистры EBX и BX. Регистры EBX и BX являются базовыми регистрами. Эти регистры общего назначения могут использоваться в качестве "индекса" для расширенной адресации. Другое общее их применение - вычисления. EBX BX BH BL Регистры ECX и CX. Регистры ECX и CX являются счетчиками. Они необходимы для управления числом повторений циклов и для операций сдвига влево или вправо. Эти регистры используется также для вычислений. ECX CX CH CL Регистры EDX и DX. Регистры EDX и DX являются регистрами данных. Они применяется для некоторых операций ввода-вывода и тех операций умножения и деления над большими числами, которые используют регистровые пары EDX:EAX или DX:AX. EDX DX DH DL Все регистры общего назначения могут участвовать в операциях сложения и вычитания как 8-ми, 16-ти и 32-х битовых значений. Регистры-указатели Регистры-указатели ESP/SP и EBP/BP обеспечивают системе прямой доступ к данным в сегменте стека. Иногда их используют для операций сложения и вычитания. Регистры SP и BP в 32-х разрядных процессорах являются младшими половинками ESP и EBP соответственно. Регистры ESP и SP - указатели стека. Указывают на текущую вершину стека. ESP SP Регистры EBP и BP - указатели базы. Используются в адресации по базе. Можно использовать для доступа к данным в стеке без использования команд push/pop. EBP BP При этом регистры SP и BP используется при 16-ти разрядном режиме адресации, а ESP и EBP – при 32-х разрядном. Индексные регистры Индексные регистры ESI/SI и EDI/DI используются в индексной адресации. Иногда их используютдля операций сложения и вычитания. Регистры ESI и SI - индекс источника при операциях со строками. ESI SI Регистр EDI и DI - индекс приемника при операциях со строками. EDI DI Регистр командного указателя Регистры 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
Режимы адресации В зависимости от того откуда и куда передаются данные и каким способом, различаются несколько режимов адресации: • регистровая; • непосредственная; • прямая; • косвенная; •по базе со смещением; •по базе с индексированием; •стековая. Регистровая адресация Этот вид адресации предполагает передачу данных из одного регистра в другой.
Популярное: Почему люди поддаются рекламе?: Только не надо искать ответы в качестве или количестве рекламы... Личность ребенка как объект и субъект в образовательной технологии: В настоящее время в России идет становление новой системы образования, ориентированного на вхождение... ©2015-2024 megaobuchalka.ru Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. (594)
|
Почему 1285321 студент выбрали МегаОбучалку... Система поиска информации Мобильная версия сайта Удобная навигация Нет шокирующей рекламы |