Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
сп экзамен (Автосохраненный).docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
427.44 Кб
Скачать

23 Представление данных в ibm pc: Целые числа

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

Целые числа без знака

Как определить, какое целое число представляет тот или иной битовый набор? Возможны разные способы. Например, можно считать, что представляемое число равно количеству единиц в битовым наборе ("единичная" система счисления). Такой способ позволяет представить всего k различных целых чисел от 0 до k–1, где k — длина набора. Очевидно, что этот способ неэкономный — одному и тому же числу могут соответствовать несколько различных наборов. Количество всевозможных битовых наборов длины k равно 2 k, поэтому выгоднее различным наборам поставить в соответствие различные числа. Это позволит представить 2k различных чисел. Обычно рассматривают диапазон целых чисел [ N, N+2k). При N=0 имеем представление беззнаковых (неотрицательных) чисел от 0 до 2k–1.

Целые числа со знаком

Для представления знаковых целых чисел используются три способа:

  1. прямой код;

  2. обратный код;

  3. дополнительный код.

Все три способа используют самый левый (старший) разряд битового набора длины k для кодирования знака числа: знак “плюс” кодируется нулем, а “минус” — единицей. Остальные k-1 разрядов (называемые мантиссой или цифровой частью) используются для представления абсолютной величины числа.

24 Программные пакеты masm и tasm общие функции и различие

Самый популярный транслятор ассемблера времен MS-DOS, созданный фирмой Borland, и полностью совместимый с MASM'ом вплоть до версий 6.x и поддерживающий свой собственный режим IDEAL с большим количеством улучшений и расширений. TASM до сих пор используется для обучения программированию на ассемблере под архитектуру x86.

Удобство программирования, скромные системные требования и высокая скорость трансляции обеспечивали TASM'у лидерство на протяжении всего существования MS-DOS. Но с появлением Windows популярность TASM'а стала таять буквально на глазах. Не сумев (или не захотев) добиться совместимости с заголовочными файлами и библиотеками, входящими в комплект SDK/DDK, фирма Borland решила поставлять свой собственный порт, причем далеко не идеальный. К тому же штатный линкер tlink/tlink32 не поддерживает возможности создания драйверов, а формат выходных файлов (Microsoft OMF, IBM OMF, Phar Lap), не поддерживается текущими версиями линкера от Microsoft (впрочем, 16-битные версии это умеют). В довершение ко всему, формат отладочной информации несовместим с CodeView и реально поддерживается только TurboDebugger'ом и soft-ice.

MASM

Продукт жизнедеятельности ранней компании Microsoft, которой тот был нужен для создания MS-DOS, а позднее и для Windows 9x/NT. После выхода версии 6.13 продукт на некоторое время тормознул в развитии, но потом здравый смысл взял вверх и последняя версия (на момент написания этих строк - 6.13.8204) поддерживает уникод, все SSE/SSEII/SEEIII расширения (объявляемые двумя директивами .686/.XMM), а также архитектуру AMD x86-64. Платформа Intel IA64 не поддерживается, но Microsoft поставляет Intel-ассемблер IAS.EXE.

Аббревиатура MASM расшифровывается отнюдь не как Microsoft Assembler, а как Macro Assembler, то есть Ассемблер с поддержкой Макросов, покрывающих своими возможностями широкий круг задач: повторения однотипных операций с параметризацией (шаблоны), циклические макросы, условное ассемблирование и т.д., по сравнению с которым препроцессор языка Си выглядит жалкой подделкой. Имеется даже зачаточная поддержка основных парадигм ООП, впрочем, так и не получившая большого распространения, поскольку ассемблер и ООП концептуально несовместимы. Многие пишут даже без макросов на чистом ассемблере, считая свой путь идеологически наиболее правильным. Но о вкусах не спорят.

25) компоновка объектных модулей и отладка программы Ассемблер

Компоновка объектного файла выполняется с помощью программы компоновщика (редактора связей) ее основное назначение - подсоединение к файлу с основной программой файлов с подпрограммами и настройка связей между ними. Однако компоновать необходимо даже простейшие программы, не содержащие подпрограмм. Дело в том, что у компоновщика есть и вторая функция - изменение формата объектного файла и преобразование его в выполнимый файл, который может быть загружен в оперативную память и выполнен. Файл с программой компоновщика обычно имеет имя LINK.EXE

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

При использовании пакета Borland следует взять "турбо-дебаггер" TD.EXE, при трансляции и компоновке программы с помощью пакета Microsoft - отладчик Codeview (файл CV.EXE).

В данном практикуме будет предполагаться, что предложенные примеры выполняются с помощью пакета TASM (транслятор TASM.EXE, компоновщик TLINK.EXE, отладчик TD.EXE).

26)подготовка исходного файла и его трансляция

Подготовка исходного текста программы выполняется с помощью любого текстового редактора. Файл с исходным текстом должен иметь расширение ASM. При выборе редактора для подготовки исходного текста программы следует иметь в виду, что многие текстовые процессоры (например, Microsoft Word) добавляют в выходной файл служебную информацию о формате (размер страниц, типы используемых шрифтов и др.). Поэтому следует воспользоваться редактором, выводящим в выходной файл "чистый текст", без каких-либо управляющих символов. К таким редакторам относятся, например, программа Блокнот.

Трансляция исходного текста программы состоит в преобразовании предложений исходного языка в коды машинных команд и выполняется с помощью транслятора с языка ассемблера (т. е. с помощью программы ассемблера). Можно воспользоваться пакетами TASM корпорации Borland или Microsoft MASM. Трансляторы различных разработчиков имеют некоторые различия, в основном в части описания макросредств. Однако входной язык (т. е. мнемоника машинных команд и других операторов и правила написания предложений ассемблера) для всех ассемблеров одинаков. В результате трансляции образуется объектный файл с расширением .OBJ.

27)Бит (bit) - двоичный разряд.  Байт (byte) - последовательность из 8 бит.  Слово (word) - последовательность из двух байт (16 бит).  Двойное слово (double word) - последовательность из четырех байт (32 бита).

Сегмент данных содержит три знаковых числа в формате слова и два символьных кода. Получить: сумму чисел в формате двойного слова, произведение первого и второго числа, беззнаковое частное от деления старшего байта первого числа на старший байт второго числа. Создать новую символьную строку, где каждый исходный символ будет повторен дважды. Результаты разместить в другом сегменте данных. 

Сегментная адресация памяти — схема логической адресации памяти компьютера в архитектуре x86. Линейный адрес конкретной ячейки памяти, который в некоторых режимах работы процессора будет совпадать с физическим адресом, делится на две части: сегмент и смещениеСегментом называется условно выделенная область адресного пространства определённого размера, а смещением — адрес ячейки памяти относительно начала сегмента. Базой сегментаназывается линейный адрес (адрес относительно всего объёма памяти), который указывает на начало сегмента в адресном пространстве. В результате получаетсясегментный (логический) адрес, который соответствует линейному адресу база сегмента+смещение и который выставляется процессором на шину адреса.

Селектором называется число (в x86 — 16-битное), однозначно определяющее сегмент. Селектор загружается в сегментные регистры.

В реальном режиме процессора всё адресное пространство делится на одинаковые сегменты размером от 16 байт до 65536 байт. Начало каждого последующего сегмента (так называемая База сегмента) смещена относительно базы предыдущего на минимальный размер сегмента, то есть на 16 байт (т. н. параграф). Таким образом, сегменты могут частично перекрывать друг друга. (Например, байт 17 сегмента 2 — это также и байт   сегмента 3, и байт  сегмента 1.)

Селектор 16-разрядный и задаёт номер сегмента. Учитывая, что сегменты следуют друг за другом с постоянным интервалом в 24=16 байт, очень легко выяснить линейный адрес сегмента, умножая его на 16.

м

28)Система команд Мп Команды сложения и вычисления

Микропроцессор (МП) КР580ВМ80А (в дальнейшем К580) выполняет команды из некоторого фиксированного набора, называемого системой команд [23].

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

Сложение

Для сложения двух чисел предназначена команда ADD. Она работает как с числами со знаком, так и с числами без знака (это особенность дополнительного кода).

Операнды должны иметь одинаковый размер (нельзя складывать 16- и 8-битное значение). Результат помещается на место первого операнда. В общем, эти правила справедливы для большинства команд.

После выполнения команды изменяются флаги, по которым можно определить характеристики результата:

  • Флаг CF устанавливается, если при сложении произошёл перенос из старшего разряда. Для беззнаковых чисел это будет означать, что произошло переполнение и результат получился некорректным.

  • Флаг OF обозначает переполнение для чисел со знаком.

  • Флаг SF равен знаковому биту результата (естественно, для чисел со знаком, а для беззнаковых он равен старшему биту и особо смысла не имеет).

  • Флаг ZF устанавливается, если результат равен 0.

  • Флаг PF — признак чётности, равен 1, если результат содержит нечётное число единиц.

Примеры:

add ax,5 ;AX = AX + 5

add dx,cx ;DX = DX + CX

add dx,cl ;Ошибка: разный размер операндов.

Вычитание

Вычитание выполняется с помощью команды SUB. Результат также помещается на место первого операнда и опять же выставляются флаги. Единственная разница в том, что происходит вычитание, а не сложение.

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

Примеры:

sub si,dx ;SI = SI - DX

neg ax ;AX = -AX