Операционная система MS-DOS. Регистры процессора. Сегментная структура программ. Простая программа с тремя сегментами

Страницы работы

Фрагмент текста работы

зависимости от того какой тип процедуры мы используем следует осторожно работать со следующими регистрами: ds, ss, sp, bp.

Регистр ds отвечает за сегмент данных, поэтому его изменение без восстановления приведёт к зависанию программы, тоже относится и к остальным перечисленным регистрам, поэтому если вы будете изменять, то их необходимо предварительно сохранить и в конце работы кода на ассемблере восстановить. Регистр bp используется для доступа к параметрам передаваемым в процедуры.

3.2.  2. Порядок выполнения работы

1)  Изучить теоретическую часть.

2)  Написать подпрограмму на ассемблере выполняющую те же действия, что процедура Insert в Паскале. Проводить контроль выход за пределы размерности строк и производить необходимое отсечение данных.

3)  Написать подпрограммы производящую сложение, вычитание, умножение и  деление 32-битовых чисел используя 16-битные регистры, предварительно требуется определить на Паскале тип  работы с такими данными. Оформить в отдельные процедуры и написать на Паскале процедуры вывода значений данного типа используя процедуру Write и WriteLn.

4)  Результатом работы является рабочая программа, и отчет, в котором должен быть представлен листинг и пример работы программы.

3.3.  Базовые инструкции процессоров 80x86

Это приложение является справочником по базовой системе команд семейства процессоров Intel. В справочник включены команды для моделей процессоров 80386 и более поздних. Для описания форматов команд используется ряд аббревиатур, представленных в табл. А.1. Сами команды описаны в табл. А.2.

Таблица А.1. Аббревиатуры команд

5)   

Обозначение

Краткое описание

Reg

Один из 8-, 16- или 32-разрядных регистров из списка: АН, AL,ВН, BL, СН, CL, АХ, ВХ, СХ, DX, SI, DI, BP, SP, ЕАХ, ЕВХ, ЕСХ,EDX, ESI, EDI, EBP, ESP

reg8, regl6, reg32

Регистр общего назначения, определяемый количеством битов

Асе

AL, АХ или ЕАХ

Mem

Операнд в памяти

mem8, meml6, mem32

Операнд в памяти, определяемый количеством битов

Immed

Непосредственный операнд

immed8, immedl6, immed32

Непосредственный операнд с определенным количеством битов

Label

Метка

Таблица А.2. Система команд

Код операции

Операнды

Функция

ааа

ASCII-коррекция после сложения

aad

ASCII-коррекция перед делением

aam

ASCII-коррекция после умножения

aas

ASCII-коррекция после вычитания

adc

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Сложение с переносом

add

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Сложение

and

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Логическое И

bsf, bsr

reg 16, reg 16 regl6, meml6 reg32, reg32 reg32, mem32

Сканирование битов

bt, btc, btr, Ms

reg 16, immed8 reg 16, regl6 meml6, immed8 meml6, regl6

Проверка битов

call

label reg

meml6 mem32

Вызов процедуры

cbw

Преобразование байта в слово

cdq

Преобразование двойного слова в учетверенное

clc

Сброс флага переноса

aas

ASCII-коррекция после вычитания

adc

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Сложение с переносом

add

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Сложение

and

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Логическое И

bsf, bsr

reg 16, reg 16 regl6, meml6 reg32, reg32 reg32, mem32

Сканирование битов

bt, btc, btr, Ms

reg 16, immed8 reg 16, regl6 meml6, immed8 meml6, regl6

Проверка битов

call

label reg

meml6 mem32

Вызов процедуры

cbw

Преобразование байта в слово

cdq

Преобразование двойного слова в учетверенное

clc

Сброс флага переноса

dd

Сброс флага направления

di

Сброс флага прерывания

cmc

Инвертирование флага переноса

cmp

Сравнение операндов

cmps, cmpsb, cmpsw, cmpsd

mem, mem

Сравнение строк

cwd

Преобразование слова в двойное слово

daa

Десятичная коррекция после сложения

das

Десятичная коррекция после вычитания

dec

reg mem

Декремент

div

reg mem

Деление без знака

idiv

reg mem

Деление целых чисел со знаком

imul

reg mem

Умножение целых чисел со знаком

in

acc, immed

Ввод из порта

inc

reg mem

Инкремент

int

Генерирование программного прерывания

iret

Возврат из прерывания

Jcondition

label

Переход, если выполнено условие

jmp

label

Безусловный переход

lahf

Загрузка флагов в АН

Ids, les, Its, Igs, Iss

Загрузка дальнего указателя

lea

reg, mem

Загрузка текущего адреса

lods, lodsb, lodsw, lodsd

mem

Загрузка строки в аккумулятор

loop

label

Цикл, в котором выполняется декремент регистра СХ и переход на метку, пока СХ больше 0

loope, loopz

label

Цикл, если равно 0. Декремент регистра СХ и переход на метку, если СХ больше 0 и флаг нуля установлен

loopne, loopz

label

Цикл, если не равно 0. Декремент регистра СХ и переход на метку, если СХ больше 0 и флаг нуля сброшен

mov

reg, reg mem, reg reg, mem reg, immed mem, immed

Пересылка операндов

movs, movsb, movsw, movsd

mem, mem

Пересылка строк

mul

reg mem

Умножение целых чисел без знака

neg

reg mem

Изменение знака операнда

nop

Отсутствие операций; используется для организации задержек в циклах

not

reg mem

Логическое НЕ; инвертирование каждого бита операнда

or

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Логическое ИЛИ

out

immed, acc DX, acc

Вывод в порт

pop

regl6 reg32 meml6 mem32

Извлечение операнда из стека

popa, popad

Извлечение из стека регистров общего назначения (рора — 16-разрядных, popad— 32-разрядных)

popf, popfd

Извлечение флагов из стека

push

regl6 reg32 meml6 mem32

Помещение в стек

pusha, pushad

Помещение в стек всех регистров

pushf, pushfd

Помещение регистра флагов в стек

rd

reg, immed8 reg, CL mem, immed8 mem, CL

Циклический сдвиг операнда влево через флаг переноса

rcr

reg, immed8 reg,CL mem, immed8 mem, CL

Циклический сдвиг операнда вправо через флаг переноса

rep

Повторение команды для строкового примитива с использованием регистра СХ как счетчика

repcondition

Повторение команд строковых примитивов по условию

ret

Возврат из процедуры

retn

immed8

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

rol

reg, immed8 reg, CL mem, immed8 mem, CL

Циклический сдвиг влево

ror

reg, immed8 reg, CL mem, immed8 mem, CL

Циклический сдвиг вправо

sahf

Загрузка регистра флагов из регистра АН

sal

reg, immed8 reg, CL mem, immed8 mem, CL

Арифметический сдвиг влево

sar

reg, immed8 reg, CL mem, immed8 mem, CL

Арифметический сдвиг вправо

sbb

reg, reg mem, reg reg, mem reg, immed mem, immed

Вычитание с заемом

seas, scasb, scasw, scasd

mem

Сканирование строки со сравнением значений элементов со значением в аккумуляторе

SETcondition

reg8 mem8

Установка по условию. Если заданное условие истинно, то байт-получатель устанавливается в 1, если ложно — в 0

shl

reg, immed8 reg,CL mem, immed8 mem, CL

Логический сдвиг влево

shr

reg, immed8 reg, CL mem, immed8 mem, CL

Логический сдвиг вправо

stc

Установка флага переноса

std

Установка флага направления

sti

Установка флага прерывания

stos, stosb, stosw, stosd

mem

Сохранение содержимого аккумулятора в ячейке памяти, принадлежащей буферу строки

sub

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Вычитание

test

reg, reg mem, reg reg, mem reg, immed mem, immed acc, immed

Проверка отдельных битов операнда-получателя с соответствующими битами операнда-приемника. Выполняется операция логического И, в результате устанавливаются соответствующие флаги

wait

Приостановка процессора

xchg

reg, reg mem, reg reg, mem

Обмен содержимым операнда-отправителя и операнда-получателя

xlat, xlatb

mem

Использование значения в регистре ALкак индекса

таблицы, на которую указывает содержимое

регистра ВХ

xor

reg, reg

Логическое исключающее ИЛИ

mem, reg

reg, mem

reg, immed

mem, immed

acc, immed

3.4.  Специальные инструкции процессоров 80x86

Это приложение является справочником по специальным командам семейства процессоров Intel Pentium. Для описания форматов команд используется ряд аббревиатур, представленных в табл. Б.1. Сами команды описаны в табл. Б.2 и Б.З.

Таблица Б.1. Аббревиатуры команд

Обозначение

Краткое описание

Reg

Один из 8-, 16- или 32-разрядных регистров из списка:

Похожие материалы

Информация о работе