- •Лекция №1. Основные понятия. Первая программа для dos и под Windows. Представление данных в компьютере.
- •Сам ассемблер — программа, которая переводит текст с языка, понятного человеку, в язык, понятный процессору, получает объектный модуль;
- •Компоновщик (linker), который создает исполнимые файлы из одного или нескольких объектных модулей, полученных после запуска ассемблера;
- •Дополнительные вспомогательные программы — компиляторы ресурсов, расширители dos и тому подобное (см. Табл.).
- •Написать её в блокноте, сохранять в *.Asm файл;
- •Из командной строки вызвать ассемблер tasm32.Exe (tasm.Exe);
- •Из командной строки вызвать линковщик tlink32.Exe (tlink.Exe);
- •Процессоры и их регистры
- •Процессоры x86
- •Регистры процессора
- •Описание регистров
- •Задача: найти старшую часть расширенного регистра (eax, ebx, ..., esi, edi)?
- •0030:4012 (Всё шестнадцатиричное)
- •4) Нельзя использовать сегментный регистр cs в качестве операнда назначения.
- •5) Оператор ptr можно применять и когда требуется принудительно поменять размерность операндов. К примеру, требуется переслать значение 0ffh во второй байт поля flp:
- •Xchg eax,ebx ; обменять содержимое регистров eax и ebx.
- •Xchg al,al ; а эта команда не делает ничего
- •Xchg ax, word ptr [si] ; обменять содержимое регистра ах и слова в памяти по адресу в [si].
- •Технология sse. Блок xmm
- •Имеются специальные команды сравнения двух вещественных чисел. После их выполнения формируются и помещаются в eflags признаки, характеризующие результат операции.
- •8 Флагов состояния. Эти флаги могут изменяться после выполнения машинных команд;
- •1) Первой известной кодировкой символов была кодировка ascii, и она используется до сих пор. В ascii-кодировке каждый символ занимает 8 бит, или один байт.
- •2. Адресные операнды – задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения. К примеру:
- •6. Структурные операнды используются для доступа к конкретному элементу структуры.
- •7. Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.
- •Команды безусловной передачи управления:
- •Команды условной передачи управления:
- •Команды управления циклом:
- •Лекция № 4. Условные переходы. Арифметиченские команды. Bcd числа.
- •1111111011101101 Инвертируем 0000000100010010
- •Лекция №5. Арифметические команды над целыми числами (продолжение). Арифметические операции над двоично-десятичными числами (bcd числами)
- •К содержимому младшей тетрады al прибавляется 6;
- •Флаг cf устанавливается в 1, тем самым фиксируется перенос в старший разряд для того, чтобы его можно было учесть в последующих действиях.
- •Из содержимого младшей тетрады регистра al вычитается 6;
- •Обнуляется старшая тетраду регистра al;
- •Устанавливает флаг cf в 1, фиксируя воображаемый заём из старшего разряда.
- •Делит ax на 10;
- •Результат деления записывается так: частное – в ah, остаток в al.
- •1) Преобразует двузначное неупакованное bcd-число в регистре ах в двоичное число;
- •2) Полученное двоичное число используется в качестве делимого в операции деления;
- •3) Полученное двоичное число помещается в регистр aх.
- •Деление с остатком
- •Блок-схема вывода результата при делении с остатком Числа с плавающей запятой. Работа с сопроцессором
- •Число имеет вид 1,1100011 × 2-1 или 0,11100011.
- •Переводом в десятичную систему счисления получаем 0,88671875. Лекция №6. Работа с сопроцессором. Команды для работы с fpu. Работа с fpu.
- •Блок-схема вывода на экран вещественного числа, которое хранится в регистре st(0) сопроцессора.
- •Деление с остатком, используя команды целочисленного деления
- •Блок-схема вывода результата при делении с остатком Трансцендентные операции fpu
- •Массивы
- •Перечислением элементов массива в поле операндов одной из директив описания данных. Например:
- •Используя оператор повторения dup. К примеру:
- •4) Mov esi,6*2 ; 2 байта – размер элементов
- •Индексная адресация со смещением — режим адресации, при котором полный адрес формируется из двух компонентов:
- •Базовая индексная адресация со смещением — режим адресации, при котором полный адрес формируется максимум из трех компонентов:
- •Структуры
- •Организовать обращение к элементам структуры.
- •Цепочечные команды или команды обработки строк символов
- •Организация обращения к элементам записи.
- •Iotest record
- •Работа с записями
- •1) Для выделения элемента записи необходимо:
- •2) Чтобы поместить измененный элемент на его место в запись необходимо:
- •3. В конце работы файл следует закрыть.
- •4. Признаком ошибки при выполнении функции dos является взведенный флаг с (переноса).
- •2. Создание файла с усечением существующего до нулевой длины.
- •LpFileName — указатель на asciiz-строку с именем (путем) открываемого или создаваемого файла;
- •DwDesiredAccess — тип доступа к файлу:
- •4) Mov esi,6*2 ; 2 байта – размер элементов
- •Индексная адресация со смещением — режим адресации, при котором полный адрес формируется из двух компонентов:
- •Базовая индексная адресация со смещением — режим адресации, при котором полный адрес формируется максимум из трех компонентов:
- •Структуры
- •Организовать обращение к элементам структуры.
- •Цепочечные команды или команды обработки строк символов
- •Организация обращения к элементам записи.
- •Iotest record
- •Работа с записями
- •1) Для выделения элемента записи необходимо:
- •2) Чтобы поместить измененный элемент на его место в запись необходимо:
- •3. В конце работы файл следует закрыть.
- •4. Признаком ошибки при выполнении функции dos является взведенный флаг с (переноса).
- •2. Создание файла с усечением существующего до нулевой длины.
- •LpFileName — указатель на asciiz-строку с именем (путем) открываемого или создаваемого файла;
- •DwDesiredAccess — тип доступа к файлу:
- •3) Создать и открыть новый файл
- •4) Чтение из файла или устройства
- •5) Переместить указатель чтения/записи
- •1) HFile – хэндл того файла, в котором перемещается указатель.
- •7) Запись в файл или устройство
- •8) Закрыть файл
- •9) Удаление файла
- •Функция 01h – ожидание ввода символа с эхопечатью
- •Функция 0ah – получение строки символов
- •1) Создать каталог
- •2) Удалить каталог
- •5) Определить текущий каталог
- •Перечень функций прерывания 21h, работающих с файлами, которые имеют длинные имена и соответствующие функции api Win32.
- •Перечислим функции api Win32, имеющие отношение к работе с файловой системой.
- •1) В Win32 получить время создания, время последнего доступа и время последней модификации файла можно с помощью функции GetFileTime.
- •3) В Win32 имеется функция GetFileInformationByHandle, с помощью которой можно получить все атрибуты файла:
- •Int 10h ; вызов прерывания bios
- •Основные графические режимы vga
- •Int 10h ; считываем символ и его атрибут
- •Стандартные цветовые палитры в режимах 4,5,6.
- •02H/03h - Чтение/запись секторов.
- •Прямое программирование видеобуфера в текстовом режиме
- •Лекция №6. Работа с сопроцессором. Команды для работы с fpu. Работа с fpu.
- •Лабораторная работа №12. Тема: Графические видеорежимы. Работа с vga-режимами
- •Лабораторная работа № 8. Тема: Работа с файлами
- •Лабораторная работа №5. Тема: Работа с массивами
- •Лекция №1. Основные понятия. Первая программа для dos и под Windows. Представление данных в компьютере.
- •Сам ассемблер — программа, которая переводит текст с языка, понятного человеку, в язык, понятный процессору, получает объектный модуль;
- •Компоновщик (linker), который создает исполнимые файлы из одного или нескольких объектных модулей, полученных после запуска ассемблера;
- •Дополнительные вспомогательные программы — компиляторы ресурсов, расширители dos и тому подобное (см. Табл.).
- •Написать её в блокноте, сохранять в *.Asm файл;
- •Из командной строки вызвать ассемблер tasm32.Exe (tasm.Exe);
- •Из командной строки вызвать линковщик tlink32.Exe (tlink.Exe);
- •Процессоры и их регистры
- •Процессоры x86
- •Регистры процессора
- •Описание регистров
- •Задача: найти старшую часть расширенного регистра (eax, ebx, ..., esi, edi)?
- •0030:4012 (Всё шестнадцатиричное)
- •4) Нельзя использовать сегментный регистр cs в качестве операнда назначения.
- •5) Оператор ptr можно применять и когда требуется принудительно поменять размерность операндов. К примеру, требуется переслать значение 0ffh во второй байт поля flp:
- •Xchg eax,ebx ; обменять содержимое регистров eax и ebx.
- •Xchg al,al ; а эта команда не делает ничего
- •Xchg ax, word ptr [si] ; обменять содержимое регистра ах и слова в памяти по адресу в [si].
- •Технология sse. Блок xmm
- •Имеются специальные команды сравнения двух вещественных чисел. После их выполнения формируются и помещаются в eflags признаки, характеризующие результат операции.
- •8 Флагов состояния. Эти флаги могут изменяться после выполнения машинных команд;
- •1) Первой известной кодировкой символов была кодировка ascii, и она используется до сих пор. В ascii-кодировке каждый символ занимает 8 бит, или один байт.
- •2. Адресные операнды – задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения. К примеру:
- •5. Структурные операнды используются для доступа к конкретному элементу структуры.
- •6. Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.
- •Команды безусловной передачи управления:
- •Команды условной передачи управления:
- •Команды управления циклом:
- •От типа операнда в команде безусловного перехода (ближний или дальний);
- •Лабораторная работа №1. Тема: знакомство с системой программирования Турбо-ассемблер.
- •1) Пересылка данных
- •2) Xor логическое исключающее или
- •3) Команды передачи управления
- •Задание для самостоятельной работы
- •Лабораторная работа №1. Тема: знакомство с системой программирования Турбо-ассемблер.
- •1) Пересылка данных
- •2) Xor логическое исключающее или
- •3) Команды передачи управления
- •Команды вычитания.
- •Команды умножения.
- •Команда деления
- •Команды преобразования
- •Команды сдвига
- •Задание для самостоятельной работы.
- •Лабораторная работа №4. Тема: перевод чисел из шестнадцатиричной системы исчисления в десятичную и в двоичную.
- •Задание для самостоятельной работы.
- •Лекция №10. Сложные структуры данных. Массивы. Структуры.
- •4) Mov esi,6*2 ; 2 байта – размер элементов
- •Индексная адресация со смещением — режим адресации, при котором полный адрес формируется из двух компонентов:
- •Базовая индексная адресация со смещением — режим адресации, при котором полный адрес формируется максимум из трех компонентов:
- •Структуры
- •Организовать обращение к элементам структуры.
- •Цепочечные команды или команды обработки строк символов
- •Организация обращения к элементам записи.
- •Iotest record
- •Работа с записями
- •1) Для выделения элемента записи необходимо:
- •2) Чтобы поместить измененный элемент на его место в запись необходимо:
- •3. В конце работы файл следует закрыть.
- •4. Признаком ошибки при выполнении функции dos является взведенный флаг с (переноса).
- •2. Создание файла с усечением существующего до нулевой длины.
- •LpFileName — указатель на asciiz-строку с именем (путем) открываемого или создаваемого файла;
- •DwDesiredAccess — тип доступа к файлу:
- •Лекция №6. Работа с сопроцессором. Команды для работы с fpu. Работа с fpu.
- •Лекция №6. Работа с сопроцессором. Команды для работы с fpu. Работа с fpu.
- •Лекция №6. Работа с сопроцессором. Команды для работы с fpu. Работа с fpu.
- •Лабораторная работа №1. Тема: знакомство с системой программирования Турбо-ассемблер.
- •1) Пересылка данных
- •2) Xor логическое исключающее или
- •3) Команды передачи управления
- •Лабораторная работа №2. Тема: Работа с арифметическими командами.
- •Команды сложения
- •Команды вычитания.
- •Команды умножения.
- •Команда деления
- •Команды преобразования
- •Команды сдвига
- •Лабораторная работа №4. Тема: перевод чисел из шестнадцатиричной системы исчисления в десятичную и в двоичную.
- •Директива extrn Режимы Ideal, masm
- •Преимущества и недостатки ]Преимущества
- •Недостатки
- •Блок-схема вывода на экран вещественного числа, которое хранится в регистре st(0) сопроцессора.
- •Трансцендентные операции fpu
- •Функция MessageBox
- •1) Первой известной кодировкой символов была кодировка ascii, и она используется до сих пор. В ascii-кодировке каждый символ занимает 8 бит, или один байт.
- •2.Адресные операнды – задают физическое расположение операнда в памяти с помощью указания двух составляющих адреса: сегмента и смещения. К примеру:
- •5. Структурные операнды используются для доступа к конкретному элементу структуры.
- •6. Записи (аналогично структурному типу) используются для доступа к битовому полю некоторой записи.
- •4) Нельзя использовать сегментный регистр cs в качестве операнда назначения.
- •5) Оператор ptr можно применять и когда требуется принудительно поменять размерность операндов. К примеру, требуется переслать значение 0ffh во второй байт поля flp:
- •Xchg eax,ebx ; обменять содержимое регистров eax и ebx.
- •Xchg al,al ; а эта команда не делает ничего
- •Xchg ax, word ptr [si] ; обменять содержимое регистра ах и слова в памяти по адресу в [si].
Лабораторная работа №4. Тема: перевод чисел из шестнадцатиричной системы исчисления в десятичную и в двоичную.
Программа преобразования двухзначного шестнадцатиричного числа в десятичное изображение на экране с использованием команды xlat. Вход: исходное шестнадцатиричное число, вводится с клавиатуры. Выход: десятичное число на экране.___________________________________________________________
masm
model small
.stack 100h
.data
message db 'Vvedite dve shestnadcatirichnie cifri',13,10,'$'
tabl db 48 dup (0),0,1,2,3,4,5,6,7,8,9,7 dup (0),0ah,0bh,0ch,0dh,0eh,0fh,26 dup (0),0ah,0bh,0ch,0dh,0eh,0fh
;0ah,0bh,0ch,0dh,0eh,0fh,26 dup (0),
;0ah,0bh,0ch,0dh,0eh,0fh
mes2 db '=','$'
otvet1 db 5 dup (0)
.stack 100h
.code
start:
mov AX,@data
mov DS,AX
lea bx,tabl
mov ah,9
mov dx,offset message
int 21h
xor ax,ax
mov ah,1h
int 21h
xlat
mov dl,al
shl dl,4
int 21h
xlat
add al,dl
mov ah,0h
mov cx,ax
xor bx,bx
mov bx,offset otvet1
mov byte ptr [otvet1+6],'$'
mov si,10
mov di,5
lp1: xor dx,dx
div si
xchg ax,dx
add al,'0'
mov byte ptr [otvet1+di],al
xchg ax,dx
dec di
or ax,ax
jne lp1
Vuvod1:
mov dx,offset mes2
mov ah,09h ;Функция Dos вывода сообщения на
int 21h
mov dx,bx
mov ah,09h ;Функция Dos вывода сообщения на
int 21h ;экран
mov AX,4C00h
int 21h
end start
1.Регістри сопроцесору. Регістри даних, регістр станів, регістр керування. Способи округлення дійсних чисел
Регистры сопроцессора
Сопроцессор представляет собой совокупность регистров, каждый из которых имеет свое функциональное назначение.
Сопроцессор (FPU) предназначен для выполнения операций над вещественными числами.
Восемь регистров данных разрядностью 80 бит организованы в стек. Минимальный размер значения, загружаемого в сопр, - 2 байта/
Регистры данных FPU (Floating Point Unit - арифметический стек) могут быть представлены в следующем виде:
Физические номера |
80 бит |
Относительные номера |
|||
1 бит |
15 бит |
64 бит |
|||
Знак |
Порядок |
Мантисса |
|||
0 |
|
|
mm0 |
ST(0) |
|
1 |
|
|
mm1 |
ST(1) |
|
2 |
|
|
mm2 |
ST(2) |
|
3 |
|
|
mm3 |
ST(3) |
|
4 |
|
|
mm4 |
ST(4) |
|
5 |
|
|
mm5 |
ST(5) |
|
6 |
|
|
mm6 |
ST(6 |
|
7 |
|
|
mm7 |
ST(7) |
|
|
|
|
Регистры MMX/3DNow! |
|
Регистры FPU
FPU предоставляет восемь регистров для хранения данных и пять вспомогательных регистров.
Регистры данных (R0 – R7) рассматриваются как стек, вершина которого называется ST(0), а более глубокие элементы — ST(1), ST(2) и так далее до ST(7).
Рис. 13. Регистры FPU
К регистрам R0 – R7 нельзя обращаться напрямую, по именам, но если процессор поддерживает расширение ММХ, то мантиссы, находящиеся в этих регистрах, становятся доступны, как ММ0 – ММ7
Для хранения данных в сопроцессоре предназначены регистры R0-R7. Эти регистры организованы в стек, и доступ к ним производится относительно вершины стека - ST. Номер регистра, соответствующего вершине стека, хранится в регистре состояния (поле TOS). Как и у ЦП, стек сопроцессора растет к регистрам с меньшими адресами. Команды, которые производят запоминание и извлечение из стека, передают данные из текущего регистра ST, а затем производят инкремент поля TOS в регистре состояния. Многие команды сопроцессора допускают неявное обращение к вершине стека, обозначаемой ST или ST(0). Для указания i-го регистра относительно вершины используется обозначение ST(i), где I = 0,:,7. Например, если поле TOS регистра состояния содержит значение 0112 (вершиной стека является регистр R3), то команда FADD ST,ST(2) суммирует содержимое регистров R3 и R5. Стековая организация упрощает программирование подпрограмм, допуская передачу параметров в регистровом стеке сопроцессора.
Младший байт регистра состояния содержит флажки особых случаев сопроцессора: переполнение стека, потеря точности, потеря значащих разрядов, численное переполнение, деление на ноль, денормализация, недействительная операция. Если соответствующий особый случай возник и не был замаскирован (в слове управления), это приведет к генерации центральным процессором особого случая сопроцессора (#16).
Младшее слово регистра управления содержит биты масок особых случаев. Сопроцессор допускает индивидуальное маскирование особых случаев. Если тот или иной особый случай замаскирован, при возникновении соответствующей ситуации сопроцессор выполняет некоторые заранее определенные внутренние действия, которые зачастую приемлемы для большинства применений. Например, если замаскирован особый случай деления на ноль, то выполнение операции 85,32/0 даст результат + .
Старшее слово регистра управления содержит два поля: управление точностью PC (биты 8 и 9) и управление округлением RC (биты 10 и 11). Биты управления точностью можно использовать для понижения точности вычислений. По умолчанию используется расширенная точность (PC = 112), можно также использовать двойную точность (PC = 102) и одинарную точность (PC = 002) по стандарту IEEE-754.
Если результат численной операции не может быть точно представлен в выбранном формате, сопроцессор выполняет округление в соответствии с полем RC (табл. 8.3). По умолчанию RC = 00. В примерах в табл. 7.3 сделана попытка представить числа +2,23 и +2,05 в виде двоичных вещественных чисел с 3-битной дробной частью мантиссы. В этом формате нельзя подобрать точное двоичное значение для этих чисел. Ближайшие к ним представимые числа - +2,00 (+1,000E21) и +2,25 (+1,001E21).
Таблица 8,3
RC |
Режим |
Пример 1 1,000E21 < 2,23E100 < 1,001E21 -1,001E21 < -2,23E100 < -1,000E21 |
Пример 2 1,000E21 < 2,05E100 < 1,001E21 -1,001E21 < -2,05E100 < -1,000E21 |
00 |
Округление к ближайшему (или четному) |
||
01 |
Округление вниз (к ) |
||
10 |
Округление вверх (к + ) |
||
11 |
Округление к нулю (усечение) |
2. Команди пересилки даних FPU. Приклади завантаження в FPU дійсних чисел, та пересилання з FPU в пам’ять дійсних чисел. Приклади використання команди FXCH.
Команды пересылки данных FPU
1)
Команда: |
FLD источник |
Назначение: |
Загрузить вещественное число в стек |
Команда помещает в стек содержимое источника (32-, 64- или 80-битная переменная или ST(n)). Команда FLD ST(0) делает копию вершины стека.
2)
Команда: |
FST приемник |
Назначение: |
Скопировать вещественное число из стека |
Команда: |
FSTP приемник |
Назначение: |
Считать вещественное число из стека |
Копирует ST(0) в приемник (32- или 64-битную переменную или пустой ST(n) в случае FST; 32-, 64- или 80-битную переменную или пустой ST(n) в случае FSTP). FSTP после этого выталкивает число из стека (помечает ST(0) как пустой).
3)
Команда: |
FILD источник |
Назначение: |
Загрузить целое число в стек |
Преобразовывает целое число со знаком из источника (16-, 32- или 64-битная переменная) в вещественный формат и помещает в вершину стека.
4)
Команда: |
FIST приемник |
Назначение: |
Скопировать целое число из стека |
Команда: |
FISTP приемник |
Назначение: |
Считать целое число из стека |
Преобразовывает число из вершины стека в целое со знаком и записывает его в приемник (16- или 32-битная переменная для FIST; 16-, 32- или 64-битная переменная для FISTP). FISTP после этого выталкивает число из стека (помечает ST(0) как пустой).
5)
Команда: |
FXCH приемник |
Назначение: |
Обменять местами два регистра стека |
Обмен местами содержимого регистра ST(0) и приёмника (регистр ST(n)). Если операнд не указан, обменивается содержимое ST(0) и ST(1).
FXCH |
Обмен данными между регистрами стека |
FXCH (EXCHANGE REGISTER) обменивает содержимые текущего ST(0) и первого ST(1) или произвольного ST(i) регистров стека. Команда FXCH допускает два способа кодирования операндов: только с операндом-приемником (FXCH ST(i)) и без операндов (FXCH). Если в команде операнд-приемник не задан, то используется регистр стека ST(1). Команда FXCH проверяет наличие особого случая - "недействительная операция".
3. Арифметичні команди FPU. Приклади використання команди FDIV. Константи FPU. Алгоритм обчислення виразу 10х.
Сопроцессор использует шесть основных типов арифметических команд:
Fxxx |
Используются ST(1) и ST(0). Первый операнд берется из верхушки стека (источник), второй - следующий элемент стека. Результат выполнения команды записывается в стек. |
Fxxx память |
Источник берется из памяти, приемником является верхушка стека ST(0). Указатель стека ST не изменяется, команда действительна только для операндов с одинарной и двойной точностью. |
FIxxx память |
Аналогично предыдущему типу команды, но операндами могут быть 16- или 32-битовые целые числа. |
пр, ист. Fxxx ST, ST(i) |
Для этого типа регистр ST(i) является источником, а ST(0) - верхушка стека - приемником. Указатель стека не изменяется. |
Fxxx ST(i), ST |
Для этого типа регитр ST(0) является источником, а ST(i) - приемником. Указатель стека не изменяется. |
FxxxP ST(i), ST |
Регистр ST(i) - приемник, регистр ST(0) - источник. После выполнения команды источник ST(0) извлекается из стека. |
Строка "xxx" может принимать следующие значения:
ADD Сложение
SUB Вычитание
SUBR Обратное вычитание, уменьшаемое и вычитаемое
меняются местами
MUL Умножение
DIV Деление
DIVR Обратное деление, делимое и делитель меняются местами
Команда: |
FDIV приемник,источник |
Назначение: |
Деление вещественных чисел |
Команда: |
FDIVP приемник,источник |
Назначение: |
Деление с выталкиванием из стека |
Команда: |
FIDIV источник |
Назначение: |
Деление целых чисел |
Выполняет деление приемника на источник и сохраняет результат в приемнике. Команда FDIVP после этого выталкивает ST(0) из стека (помечает ST(0) как пустой и увеличивает ТОР на один). Команды могут принимать следующие формы:
-
FDIV источник, когда источником является 32- или 64-битная переменная, содержащая вещественное число, а приемником — ST(0);
-
FDIV ST(0),ST(n), FDIV ST(n),ST(0), FDIVP ST(n),ST(0), когда источник и приемник заданы явно в виде регистров FPU;
-
FDIV без операндов — эквивалентно FDIV ST(0),ST(1); FDIVP без операндов — эквивалентно FDIVP ST(1),ST(0);
-
FIDIV источник, когда источником является 16- или 32-битная переменная, содержащая целое число, а приемником — ST(0).
Вычислить 10х =y, x=3. (real4.asm)
1)
2) Величину log210 – можно задать как константу с помощью команды FLDL2T.
3) Команда F2XM1 возводит 2 в степень X, но только если X меньше или равен 1/2, то есть команда возводит 2 в степень, равную ST(0), и вычитает 1. Результат сохраняется в ST(0). Значение ST(0) должно лежать в пределах от -0,5 до 0.5, иначе результат не определен.
4) Команда FSCALE умножает ST(0) на два в степени ST(1) и записывает результат в ST(0). Значение ST(1) предварительно округляется в сторону нуля до целого числа.
5) если х=3, то:
Константы FPU
Команда: |
FLD1 |
Назначение: |
Поместить в стек 1,0 |
Команда: |
FLDZ |
Назначение: |
Поместить в стек +0,0 |
Команда: |
FLDPI |
Назначение: |
Поместить в стек число |
Команда: |
FLDL2E |
Назначение: |
Поместить в стек log2(e) |
Команда: |
FLDL2T |
Назначение: |
Поместить в стек log2(10) |
-
Блок-схема розрахунку виразу 10х з використанням сопроцесору. Команда F2XM1. Директива extrn, призначення.
Команда: |
F2XM1 |
Назначение: |
Вычисление 2x-1 |
Команда F2XM1 возводит 2 в степень X, но только если X меньше или равен 1/2, то есть команда возводит 2 в степень, равную ST(0), и вычитает 1. Результат сохраняется в ST(0). Значение ST(0) должно лежать в пределах от -0,5 до 0.5, иначе результат не определен.
ST(0)=2ST(0) -1; -0,5<ST(0)<0,5
29,97=29+0,97/2+0,97/2 =29 *20,97/2 *20,97/2
Директива extrn предназначена для объявления некоторого имени внешним по отношению к данному модулю. Это имя в другом модуле должно быть объявлено в директиве public. Директива public предназначена для объявления некоторого имени, определенного в этом модуле, и видимом в других модулях. Синтаксис этих директив следующий:
extrn имя: тип,..., имя: тип
public имя,... ,имя
Здесь имя - идентификатор, определенный в другом модуле. В качестве идентификатора могут выступать:
-
имена переменных, определенных директивами типа db, dw и т. д.;
-
имена процедур;
-
имена констант, определенных операторами = и equ.
Тип определяет тип идентификатора. Указание типа необходимо, для того, чтобы транслятор правильно сформировал соответствующую машинную команду. Действительные адреса будут вычислены на этапе редактирования, когда будут разрешаться внешние ссылки. Возможные значения типа определяются допустимыми типами объектов для этих директив:
-
если имя - это имя переменной, то тип может принимать значения byte, word, dword, pword, fword, qword и tbyte;
-
если имя - это имя процедуры, то тип может принимать значение near или far;
-
если имя - это имя константы, то тип должен быть abs.