Курс лекций для студентов заочного факультета самара

Вид материалаКурс лекций

Содержание


3.3.Примеры использования директив в программах типа .EXE и .COM.
4.Архитектура и система команд арифметического сопроцессора
4.1.Форматы чисел сопроцессора
4.1.1.`Целые числа
4.1.2. Вещественные числа
4.1.3.Диапазоны вещественных чисел в х87.
Подобный материал:
1   ...   5   6   7   8   9   10   11   12   13

3.3.Примеры использования директив в программах типа .EXE и .COM.


; Файл с текстом программы hello-1.asm

; Выводит на экран сообщение ‘Hello World!’ и завершается.

; Генерируется исполняемый модуль типа .EXE при помощи вызова ассемблера TASM и редактора TLINK:

; tasm hello-1.asm

; tlink hello-1.obj

.model small ; Модель памяти, используемая для EXE

.stack 100h ; Сегмент стека размером в 256 байт.

.data

message db 'Hello World!',0Dh,0Ah,'$'

.code

start: mov ax, @data ; Настройка сегментного регистра

mov ds,ax ; ds на начало сегмента данных.

mov dx,offset message

mov ah,9

int 21h ; Вызов функции DOS для вывода строки.

mov ax,4C00h

int 21h ; Вызов функции DOS для завершения программы.

end start

; Файл с текстом программы hello-2.asm

; Выводит на экран сообщение ‘Hello World!’ и завершается.

; Генерируется исполняемый модуль типа .COM при помощи вызова ассемблера TASM и редактора TLINK:

; tasm hello-2.asm

; tlink /t hello-2.obj

.model tiny ; Модель памяти, используемая для .COM

.code ; Начало сегмента кодов

org 100h ; Начальное значение программного счетчика­

; внутренней переменной ассемблера, равная

;смещению относительно начала сегмеента - 100h

jmp start ; Переход на начало программы

message db 'Hello World!',0Dh,0Ah,'$' ; Строка для вывода

start: mov ah,9 ; ­Номер функции DOS - в AH

mov dx,offset message ;  Смещение адреса строки - в DX

int 21h ; Вызов системной функции DOS

ret ; Завершение COM- программы

end start ; Конец текста программы.

4.АРХИТЕКТУРА И СИСТЕМА КОМАНД АРИФМЕТИЧЕСКОГО СОПРОЦЕССОРА


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

Первый из семейства – это восьмиразрядный сопроцессор 8087, затем появились шестнадцатиразрядные модели 80287 и 80387. Сопроцессор 80387 - имеет расширенный набор команд по сравнению с моделью 80287 и большее быстродействие. В микропроцессорах 80486 – DX, а затем и во всех последующих моделях существует встроенное устройство для выполнения операций с числами с плавающей точкой (FPU), являющееся одним из модулей основного процессора. Это позволило еще больше увеличить производительность персонального компьютера.

4.1.Форматы чисел сопроцессора


Сопроцессор поддерживает представление чисел в следующих форматах: целые двоичные, целые двоично-десятичные и вещественные двоичные числа.

4.1.1.`Целые числа


Целые двоичные числа могут быть представлены в трех различных форматах:

1. Целое слово - 16 бит (DW);

2. Короткое целое слово - 32 бита (DD);

3. Длинное целое слово - 64 бита (DQ);

Все они представимы в обычном формате целых чисел со знаком.

Двоично-десятичные целые числа представлены в упакованном двоично-десятичном формате размером 80 бит (DT), при этом каждая десятичная цифра кодируется четырьмя двоичными разрядами.


1 бит

7 бит

72 бита

S




d17

........

d1

d0

Знак

Не исп.

4 бита=1 цифра



4.1.2. Вещественные числа


Вещественные числа могут быть представлены тремя различными форматами:

1. Короткое вещественное (одинарная точность) -32 бита (DD);

1 бит

8 бит

23 бита




S

порядок

мантисса

DD

2. Длинное вещественное (двойная точность) - 64 бита (DQ);

1 бит

11 бит

52 бита




S

порядок

Мантисса

DQ

3. Временное вещественное (расширенная точность) - 80 бит (DT);

1 бит

15 бит

64 бита




S

Порядок

мантисса

DT


1) S- поле знака: равно нулю, если число положительное и равно 1, если число отрицательное;

Для представления нуля используются нулевой порядок и нулевая мантисса, следовательно существует два нуля: положительный и отрицательный. Обычно этот факт скрыт от программиста - в командах сравнения оба пуля считаются одним числом.

2) Поле мантиссы.

В сопроцессоре принята “научная нотация“ представления чисел. При этом предполагается, что поле мантиссы представимо в виде Х.ХХ...Х, где старший бит, находящийся слева от точки должен быть не равен нулю. Для двоичной системы счисления это означает, что старший бит должен быть равен единице. Следовательно, его можно не хранить, что и сделано в форматах одинарной и двойной точности для расширения диапазона представления чисел. В формате с расширенной точностью старший бит хранится явно, так как дополнительная точность не требуется, а вычисления происходят быстрее.

3) Поле порядка. Порядок - это степень числа два, на которое надо умножить мантиссу.

Для представления отрицательных порядков в поле порядка хранится сумма истинного порядка и смещение. Для одинарной точности смещение равно 127. Для двойной точности смещение равно 1023. Для расширенной точности смещение равно 16383.

Если поле порядка составляет 8 бит как в формате с одинарной точностью, то максимальное значение порядка составляет 28-1 = 255 , то есть диапазон хранимых порядков рассчитывается следующим образом:

255 - 127 = 128 – максимальный порядок;

0 - 127 = -127 – минимальный порядок.

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

Так как во всех форматах чисел минимальное и максимальное значения порядков зарезервированы для обработки особых случаев, то реальный диапазон порядка нормализованных чисел меньше на два для всех форматов чисел, то есть для чисел с одинарной точностью максимальный порядок равен 127 ,а минимальный порядок равен 126.

Формат чисел с двойной точностью позволяет получить произведение двух чисел с одинарной точностью без потери точности.

Формат чисел с расширенной точностью предназначен для представления промежуточных результатов при работе с числами в формате с двойной точностью. Существует три причины выбора 80 – разрядного представления чисел в формате с расширенной точностью:

Исследования показали, что для самых сложных для вычислений математических функций не происходит потери точности при получении окончательных результатов в формате чисел с двойной точностью, если размер мантиссы составляет не менее 64 бит, при этом порядок составляет 15 бит и общий минимальный размер двоичного числа составляет 80 бит;

Для того чтобы использовать более привычное 16-байтное представление чисел с расширенной точностью (128 бит) требуются более сложные схемы процессора или при тех же схемах будет меньшая производительность процессора;

Цель формата расширенной точности - защита промежуточных результатов. Если взять удобный 16-байтный формат, то может случиться, что все вычисления будут производиться в нем и тогда надо расширять точность для промежуточных результатов и так далее.

4.1.3.Диапазоны вещественных чисел в х87.


Внутреннее представление нормализованных чисел:

Min число < 0




Max число < 0

знак

порядок

мантисса




знак

Порядок

Мантисса

1

1...10

11...1




1

0…01

00…0




+1













+1







Min число > 0




Max число < 0

Знак

порядок

мантисса




знак

порядок

Мантисса

0

0...01

00...0




0

1…10

11…1




+1













+1







Единица подразумевается в старшем разряде мантиссы для чисел в формате с одинарной и двойной точностью. Дивпазоны представлеения десятичных чисел в двоичных вещественных форматах:

а) с одинарной точностью:

-3.37*1038 / -1.17*10-37

+1.17*10-37 / +3.37*1038

б) с двойной точностью:

-1.67*10308 / -2.23*10-307

+2.23*10-307 / +1.67*10308

в) с расширенной точностью:

-1.2*104932 / -3.37*10-4931

+3.37*10-4931 / +1.2*104932