ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Представление целых и вещественных чисел в памяти ЭВМ, арифметические команды ассемблера, использование модуля вычислений с плавающей точкой.В памяти ЭВМ все данные хранятся с использованием двоичной системы счисления, где каждый двоичный разряд (бит) может принимать только значение 0 или 1. Беззнаковые целые числа. Наиболее просто представляются беззнаковые целые числа – на следующем рисунке сверху показано 8-разрядное двоичное число, соответствующее десятичному 155, а снизу – интерпретация его разрядов.
Разряды числа принято нумеровать справа налево (то есть от младшего к старшему) начиная с нуля. Целые числа со знаком. Положительное число хранится в принципе точно так же, как и беззнаковое, только в два раза уменьшается диапазон значений. Дело в том, что старший бит числа теперь служит признаком того, что число отрицательное, и реально число разрядов становится на 1 меньше. Для представления отрицательных чисел недостаточно просто поставить 1 в старший бит - используется более сложный подход – вычисление так называемого дополнительного кода числа. Если число X задано в двоичной системе, то его дополнительный код можно найти следующим простым способом: 1. Инвертировать все биты в числе 2. Прибавить к числу единицу. Если будет перенос за пределы разрядной сетки, игнорировать. Вещественные числа в памяти компьютера представляются в форме с плавающей точкой. Форма с плавающей точкой использует представление вещественного числа R в виде произведения мантиссы m на основание системы счисления р в некоторой целой степени n, которую называют порядком: R = m * р^n; Вариант записи, в которой перед десятичной точкой стоит ровно одна ненулевая цифра, называется нормализованным представлением, а его получение - нормализацией. Для числа 15.73 нормализованным представлением будет 1.573 * 10^1, где 1.573 – мантисса, 1 – показатель степени (иногда еще его называют порядок). Порядок указывает, на какое количество позиций и в каком направлении должна «переплыть», т.е. сместиться десятичная точка в мантиссе. Отсюда название «плавающая точка». В стандарте IEEE 754-1985 описаны 3 формата вещественных чисел.
В состав FPU входят 8 80-разрядных регистров R0-R7. Эти регистры организованы в виде стека, поэтому напрямую к ним обращаются редко – обычно используют относительные имена ST(0) – ST(7) или вообще применяют команды, не требующих указания регистров. Здесь ST(0) – вершина стека (один из 8 регистров), ST(1) – элемент в стеке перед ним и т.д. Типичный пример вычисления выглядит так. В стек помещается операнд из памяти. Затем выполняется операция, где второй операнд указывается в её аргументе. Либо можно второй операнд также поместить в стек и затем выполнить операцию над обоими аргументами в стеке. После выполнения вычислений результат с вершины стека передаётся в память. Fld – поместить в стек вещественное число из памяти, fild – поместить в стек целое число из памяти (преобразовав в вещественное), fst – скопировать число с вершины стека в память, fstp - скопировать число с вершины стека в память и удалить из стека, fist - скопировать число с вершины стека в память в целочисленную ячейку, округлив до целого. Арифметические команды: fadd – сложение, fsub – вычитание, fdiv – деление, fmul - умножение и др. Пример вычисления суммы двух вещественных чисел. include masm32rt.inc .data out_format BYTE "%f", 0 var_a REAL8 1.5 var_b REAL8 2.3 sum REAL8? .code main PROC fld var_a;поместить в стек fadd var_b;сложить fst sum;результат с вершины стека – в память invoke crt_printf, ADDR out_format, sum exit main ENDP end main
Не нашли, что искали? Воспользуйтесь поиском:
|