Полезное:
Как сделать разговор полезным и приятным
Как сделать объемную звезду своими руками
Как сделать то, что делать не хочется?
Как сделать погремушку
Как сделать так чтобы женщины сами знакомились с вами
Как сделать идею коммерческой
Как сделать хорошую растяжку ног?
Как сделать наш разум здоровым?
Как сделать, чтобы люди обманывали меньше
Вопрос 4. Как сделать так, чтобы вас уважали и ценили?
Как сделать лучше себе и другим людям
Как сделать свидание интересным?
Категории:
АрхитектураАстрономияБиологияГеографияГеологияИнформатикаИскусствоИсторияКулинарияКультураМаркетингМатематикаМедицинаМенеджментОхрана трудаПравоПроизводствоПсихологияРелигияСоциологияСпортТехникаФизикаФилософияХимияЭкологияЭкономикаЭлектроника
|
Передача параметров в стекеПараметры помещаются в стек сразу перед вызовом процедуры. Именно этот метод используют языки высокого уровня, такие как С и Pascal. Для чтения параметров из стека обычно используют не команду POP, а регистр ВР, в который помещают адрес вершины стека после входа в процедуру: push parameter1; поместить параметр в стек push parameter2 call procedure add sp,4; освободить стек от параметров [...] procedure proc near push bp mov bp,sp (команды, которые могут использовать стек) mov ax,[bp+4]; считать параметр 2. ; Его адрес в сегменте стека ВР + 4, потому что при выполнении ; команды CALL в стек поместили адрес возврата - 2 байта для процедуры ; типа NEAR (или 4 - для FAR), а потом еще и ВР - 2 байта mov bx,[bp+6]; считать параметр 1 (остальные команды) рор bp ret procedure endp Параметры в стеке, адрес возврата и старое значение ВР вместе называются активационной записью функции. Проблемы Задача распределения регистров является NP-полной. Обычно количество переменных в программе значительно превосходит количество доступных физических регистров, поэтому некоторые переменные приходится хранить в локальном стеке. Обращения к памяти можно минимизировать, если хранить там наименее часто используемые переменные, однако определить, какие переменные используются наименее часто, не всегда легко. Также стоит отметить, что некоторые регистры часто имеют системное назначение и их использование ограничено.
17. Предложение языка ассемблера: директивы. Директивы являются указаниями Ассемблеру о том, как проводить ассемблирование. Директив м.б. великое множество. В 1-ом приближении мы рассмотрим лишь несколько практически обязательных директивы (мнемоники директив везде - условные, в конкретных Ассемблерах те же по смыслу директивы могут иметь другие мнемоники).
18. Предложения языка ассемблера: команды. Операнды команд.
19. Предложения языка ассемблера: коментарии. Комментарии - любой текст, который игнорируется Ассемблером. Комментарии располагаются в конце предложения и отделяются от текста предложения, обрабатываемого Ассемблером, каким-либо специальным символом (в некоторых языках - пробелом). Всегда предусматривается возможность строк, содержащих только комментарий, обычно такие строки содержат специальный символ в 1-й позиции.
20. Представление данных в IBM PC: алфавитно-цифровые данные Любая информация (числа, команды, алфавитно-цифровые записи и т. п.) представляется в компьютере в виде двоичных кодов. Отдельные элементы двоичного кода, принимающие значения 0 или 1, называются разрядами или битами. В старых компьютерах, рассчитанных на вычислительные задачи, минимальной единицей информации, доступной для обработки, была ячейка. Количество разрядов в ячейке было ориентировано на представление чисел и было различным в разных компьютерах (24 бита, 48 бит и т.д.). Однако такой большой размер ячеек был неудобен для представления символов, поскольку для представления символьной информации достаточно 5-8 байт. Это дает возможность представить от 32 до 256 символов. Поэтому минимальной единицей информации, обрабатываемой в современном компьютере, является байт, состоящий из восьми двоичных разрядов (битов). Каждый байт, расположенный в памяти компьютера, имеет свой адрес, который определяет его местонахождение и задается соответствующим кодом. Адреса памяти начинаются с нуля для первого байта и последовательно возрастают на единицу для каждого последующего. Производными единицами от байта являются килобайт (210 байт) – сокращение Кбайт или Кб, мегабайт (220 байт) – сокращение Мбайт или Мб, гигабайт (230 байт) – сокращение Гбайт или Гб и терабайт (240 байт) – сокращение Тбайт или Тб. Для представления чисел используются один или несколько последовательно расположенных байтов. Группы байтов образуют двоичные слова, которые, в свою очередь, могут быть как фиксированной, так и переменной длины. Форматы данных фиксированной длины (полуслово, слово и двойное слово) состоят соответственно из одного, двух и четырех последовательно расположенных байтов. Обращение к этим данным производится по адресу крайнего левого байта формата, который для слова должен быть кратен числу 2, а для двойного слова – числу 4. Формат данных переменной длины состоит из группы последовательно расположенных байтов от 1 до 256. Адресация таких данных производится, как и в форматах фиксированной длины, по адресу самого левого байта. В зависимости от характера информации используются форматы представления данных как фиксированной, так и переменной длины. Так, в форматах данных фиксированной длины обычно представляются двоичные числа, команды и некоторые логические данные, а в форматах данных переменной длины – десятичные числа, алфавитно-цифровая и некоторая логическая информация. В современных компьютерах применяются две формы представления чисел: с фиксированной точкой (запятой) и с плавающей точкой (запятой). Эти формы, кроме того, называются соответственно естественной и полулогарифмической. При представлении чисел с фиксированной точкой положение точки фиксируется в определенном месте относительно разрядов числа. В первых компьютерах точка фиксировалась перед старшим разрядом числа, поэтому представленные числа по абсолютной величине были меньше единицы. В современных компьютерах точку фиксируют справа от самого младшего разряда и поэтому могут быть представлены только целые числа. При этом используются два варианта представления целых чисел: со знаком и без знака. Для числа со знаком крайний слева разряд отводится под знак числа. В этом разряде записывается нуль для положительных чисел и единица – для отрицательных чисел. Числа без знака занимают все разряды числа, т.е. числа могут быть только положительными. Нумерация разрядов числа обычно ведется справа налево. В компьютерах числа с фиксированной точкой имеют три основных формата – один байт (полуслово), 16-разрядное слово (короткий формат) и 32-разрядное двойное слово (длинный формат). 21 Представление данных в IBM PC: Вещественные данные Число с плавающей запятой (или число с плавающей точкой) — форма представления вещественных (действительных) чисел, в которой число хранится в форме мантиссы и показателя степени. При этом число с плавающей запятой имеет фиксированную относительную точность и изменяющуюся абсолютную. Используемое наиболее часто представление утверждено в стандарте IEEE 754. Реализация математических операций с числами с плавающей запятой в вычислительных системах может быть как аппаратная, так и программная. Число́ одина́рной то́чности (англ. single precision, single) — широко распространенный компьютерный формат представления вещественных чисел, занимающий в памяти 32 бита (4 байта). Как правило, под ним понимают формат числа с плавающей запятой стандарта IEEE 754. Числа одинарной точности с плавающей запятой обеспечивают относительную точность 7-8 десятичных цифр в диапазоне от 10^{-38} до примерно 10^{38}. В современных компьютерах вычисления с числами с плавающей запятой поддерживаются аппаратным сопроцессором (FPU — англ. floating point unit). Однако во многих вычислительных архитектурах нет аппаратной поддержки чисел с плавающей запятой и тогда работа с ними осуществляется программно. Число́ двойно́й то́чности (Double precision, Double) — компьютерный формат представления числа с плавающей запятой, занимающий в памяти 64 бита, или 8 байт. Как правило, обозначает числа с плавающей запятой стандарта IEEE 754. Числа с плавающей запятой (двойной/одинарной/четверной точности) поддерживаются сопроцессором (в 80386 выполнен как отдельный модуль, начиная с 80486 является встроенным в главный процессор. Сопроцессор, хотя он сейчас и является частью главного процессора, принято называть FPU — Floating Point Unit, буквально Модуль Плавающей Запятой). В компьютерах, которые имеют 64-разрядные числа с плавающей запятой, большинство чисел хранятся в двойной точности, поскольку использование чисел одинарной точности обеспечивает почти такую же производительность. Но все вычисления в FPU осуществляются в 80-битном (расширенном, extended) представлении. Одним из первых языков программирования, позволявшим использовать числа одинарной и двойной точности с плавающей запятой, был Фортран. Числа двойной точности с плавающей запятой обеспечивают точность в 15—17 десятичных цифр и масштабы в диапазоне примерно от 10−308 до 10308 22 Представление данных в IBM PC: Двоично-десятичных чисел двоично-десятичный формат (binary-coded decimal, BCD), используемый в ряде прикладных областей. В таком формате выдают данные некоторые измерительные приборы; он же используется КМОП-часами реального времени компьютеров IBM PC для хранения информации о текущем времени. В МП 86 предусмотрен ряд команд для обработки таких чисел. Двоично-десятичный формат существует в двух разновидностях: упакованный и распакованный. В первом случае в байте записывается двухразрядное десятичное число от 00 до 99. Каждая цифра числа занимает половину байта и хранится в двоичной форме. Из рис. 4 можно заметить, что для записи в байт десятичного числа в двоично-десятичном формате достаточно сопроводить записываемое десятичное число символом h.
Рис. 4 Упакованный двоично-десятичный формат В машинном слове или в 16-разрядном регистре можно хранить в двоично-десятичном формате четырехразрядные десятичные числа от 0000 до 9999 (рис.5).
Рис. 5 Запись десятичного числа 9604 в слове Распакованный формат отличается от упакованного тем, что в каждом байте записывается лишь одна десятичная цифра (по-прежнему в двоичной форме). В этом случае в слове можно записать десятичные числа от 00 до 99 (см. рис. 6)
Рис. 6 Запись десятичного числа 98 в распакованном виде При хранении десятичных чисел в аппаратуре обычно используется более экономный упакованный формат; умножение и деление выполняются только с распакованными числами, операции же сложения и вычитания применимы и к тем, и к другим. 23 Представление данных в IBM PC: Целые числа Для представления чисел в ЭВМ обычно используют битовые наборы — последовательности нулей и единиц фиксированной длины. Организовать обработку наборов фиксированной длины технически легче, чем наборов переменной длины. Позиция в битовом наборе называется разрядом. В ЭВМ разрядом называют также часть регистра (или ячейки памяти), хранящую один бит.
|