Смекни!
smekni.com

Разработка программы на Ассемблере (стр. 6 из 11)

              Для того, чтобы выйти из программы- нажмите клавишу «3», затем «Enter» на вашей клавиатуре.

              2.6. Заключение о результатахпроектируемой задачи

              В ходе выполнения поставленной вкурсовом проекте задачи были приобретены навыки реализации сложных ассемблерныхпрограмм с использованием макросов и процедур. Кроме того, был получен огромныйопыт и умение работы с CMOS (область памяти, где хранятся сведения оконфигурации ПК) на низком уровне, т.е. с использованием прерывания BIOS 11h и 70h порта, а также опытиспользования дополнительных сегментных регистров и регистров модификаторов.

              Реализованная программа может бытьполезна при диагностике оборудования на относительно старых моделях ПК,поскольку в программе используется система команд 8086 процессора, который былвыпущен в 1979 г. корпорацией Intel, и сейчас эта модель процессора являетсяустаревшей. 

Приложение № 1

7.1 СИСТЕМЫ СЧИСЛЕНИЯ

Любое неотрицательное число впозиционной системе счисления (СС) может быть представлено в виде:

          
D = Cn-1*bn-1 + Cn-2*bn-2 + ... + C1*b1+ C0*b0 + C-1*b-1 + C-2*b-2+..,   

где D - десятичный эквивалентчисла, Ci - значение i-го разряда, b - основание системы счисления,b в степениi - вес i-го разряда и n число разрядов целой части числа. В вычислительнойтехнике ниболее распространены: двоичная (BIN), десятичная (DEC),шестнадцатиричная (HEX) и непозиционная двоично-десятичная (BCD) системысчисления. В BCD системе вес каждого разряда равен степени 10, как в десятичнойсистеме, а каждая цифра i-го разряда кодируется 4-мя двоичными цифрами.Восьмиричная СС (OCT) применяется реже. Первые 16 чисел представлены в таблице1.

CC-tabl.gif (6167 bytes)

Двоичное число 10010011 = 1 * 2^7+ 1 * 2^4 + 1 * 2^1 + 1 * 2^0 = 147 (DEC). Для перевода числа из двоичнойсистемы в 16 - ную, его необходимо разбить начиная справа на группы по 4двоичных цифры и каждую группу представить 16 - ной цифрой из таблицы. Дляобратного перевода каждая HEX цифра заменяется четверкой двоичных, незначащиенули слева отб- расываются. Двоично-десятичное число можно записывать идесятичными цифрами, например 1997, и двоичными - 0001 1001 1001 0111. Каждоедесятичное число можно представить в виде BCD, например 19(DEC) = 19(BCD), ноих двоичные представления не равны: 19(DEC) = 10011(BIN), а 19(BCD) = 11001(BIN). Не каждая запись из нулей и единиц имеет двоично-десятичныйэквивалент. Например, 11001001(BIN)  = ?(BCD) = C9(HEX) = 201(DEC), т.к.десятичной цифры 12 = 1100 несуществует!

7.2 МАШИННОЕ ПРЕДСТАВЛЕНИЕ ИНФОРМАЦИИ

Микропроцессоры обрабатываютупорядоченные двоичные наборы. Минимальной единицей информации является одинбит.

bi-by-wo.gif (3994 bytes)   

Далее следуют - тетрада (4 бита),байт ( byte 8 бит), двойное слово (DoubleWord 16 бит) или длинное (LongWord 16бит) и учетверенное слова. Младший бит обычно занимает крайнюю правуюпозицию.

7.3 ЧИСЛА С ФИКСИРОВАННОЙ ТОЧКОЙ

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

Естественным представлениемцелого неотрицательного числа является двоичная система счисления. Кодированиеотрицательных чисел производится тремя наиболее употребительными способами, вкаждом из которых крайний левый бит - знаковый. Отрицательномучислу соответствует единичный бит, а положительному - нулевой. Каждыйспособ оценивается по скорости и затратам на выполнение сложения и изменениязнака числа, т.к. вычитание есть сложение с измененным знаком одного операнда.

  • 1.Прямой код. Изменение знака производится просто, путем инверсии бита знака. Пусть 00001001 = 9, тогда 10001001 = -9. Если при сложении двух чисел в этом коде знаки совпадают, то трудностей нет. Если знаки различаются необходимо найти наибольшее число, вычесть из него меньшее, а результату присвоить знак наибольшего слагаемого.
  • 2.Обратный код, инверсный или дополнительный "до 1". Изменение знака производится просто - инверсией всех бит: 00001001 = 9, а 11110110 = -9. Сложение также выполняется просто, т.к. знаковые биты можно складывать. При переносе единицы из левого (старшего) бита, она должна складываться с правым (младшим). Например: 7 + (-5) = 2.

 

 

   00000111 = 7

   11111010 =-5 (инверсия 00000101 = 5)

1 00000001

          1

   00000010 = 2

Сложение в обратном кодепроисходит быстрее, т.к. не требуется принятие решения, как в предыдущемслучае. Однако суммирование бита переноса требует дополнительных действий.Другим недостатком этого кода является представление нуля двумя способами, т.к.инверсия 0...00 равна 1. ..11 и сумма двух разных по знаку, но равных позначению чисел дает 1...11.Например: (00001001 = 9) + (11110110 = -9) =11111111. Кстати, из этого примера понятно почему код называется дополнительным"до 1". Этих недостатков лишен ---

  • 3.Дополнительный или дополнительный "до 2" код. Число с противоположным знаком находится инверсией исходного и добавлением к результату единицы. Например, найти код числа -9.

 

   00001001 = 9                 11110111 =-9

   11110110 - инверсия          00001000 - инверсия

          1                            1

   11110111 =-9                 00001001 = 9

Проблемы двух нулей нет. +0= 00000000, -0 = 11111111 + 1 = 00000000 (перенос из старшего бита неучитывается).Сложение производится по обычным для неотрицательных чиселправилам.

 

   00001001 = 9

   11110111 =-9

1 00000000

Из этого примера видно, что вкаждом разряде двух равных по модулю чисел складываются две единицы, что иопределило название способа. Этот метод применяется наиболее часто, и когдаговорят о дополнительном коде, то имеется в виду дополнительный "до2-х" код.

7.4 ДИАПАЗОН ЦЕЛЫХ ЧИСЕЛ С ФИКСИРОВАННОЙ ТОЧКОЙ

Беззнаковые числа: 0 <= D <= 2^n - 1. n - число разрядов

   Байт: 0     -   255   (DEC)  Слово: 0     - 65535

         00..0 - 11..1   (BIN)         00..0 - 11..1

         0     -    FF   (HEX)         0     - FFFF

 

Числа со знаком:-2^(n-1) <= D <= +2^(n-1)-1. n - число

   разрядов.

   Байт: -128  -  +127   (DEC)  Слово: -32768-+32767

         10..0 - 01..1   (BIN)         10..0 - 01..1

         80    -    7F   (HEX)         8000  - 7FFF

7.5 ЧИСЛА С ПЛАВАЮЩЕЙ ТОЧКОЙ (ВЕЩЕСТВЕННЫЕ)

Вещественные числа хранятся ииспользуются в ЭВМ в показательной форме, т.е. в виде двухсоставляющих: мантиссы и порядка. Различия в способах такогопредставления чисел заключаются в количестве байтов отводимых под порядок имантиссу и небольших отличиях в форме их хранения. Например в четырехбайтовомформате под мантиссу отводится 3 байта и один байт для хранения порядка (КВ - короткийвещественный формат).

D = ±M * 2^(E-127)

Последовательность расположениябайтов

float-f.gif (2211 bytes)

в различных ЭВМ может бытьразной. D - десятичный эквивалент числа  , M - нормализованная мантисса, Е- смещенный порядок, SM - бит знака мантиссы.

7.6 ДИАПАЗОН ПРЕДСТАВЛЕНИЯ ВЕЩЕСТВЕННЫХ ЧИСЕЛ

У нормализованной мантиссы перваязначащая цифра (единица) мысленно находится слева от запятой, а справарасполагаются 23 разряда - 1,xx..xx. Поэтому Mmax = 1,111..11 = 1 +1/2 +1/4+1/8 +...= 2, а Mmin= 1,000..00 = 1 для положительных чисел (SM=0) и -1 и -2 дляотрицательных, (SM=1). Порядок числа Emax = 11111110 = 254, а Emin = 00000001 =1. Теперь нетрудно определить диапазон представления положительных чисел от+Dmax = Mmax * 2^(254-127) = 3,4 * 10^38 до +Dmin = Mmin * 2^(1-127) = 1,17 *10^(-38). Точность определяется числом достоверных десятичных цифр. При 23двоичных разрядах мантиссы 2^23 примерно равно 10^7, т.е. достоверными являютсятолько 6-7 значащих десятичных знаков, а не 38. Необходимо отметить, чтозначения порядка 11111111 и 00000000 по международному стандарту IEEE754 и 854 предназначены для кодирования денормализованных чисел,отрицательной и положительной бесконечностей, неопределенности и, такназываемых Не-чисел.

7.7 ДВОИЧНО-ДЕСЯТИЧНЫЙ КОД

Двоично-десятичный код (ДДК) илиBinary Coded Decimal (BCD) может быть упакованным, когда водном байте хранятся две десятичные цифры, либо неупакованным- по одной цифре в байте.Упакованное число 1996 представляется в виде двухбайтов: 0001 1001 и 1001 0110. Для знака числа отводится дополнительный байт,например в формате (ДД) девять байтов отводится для размещения 18-ти цифр, а встаршем бите десятого байта находится знак числа.

7.8 БУКВЕННО-ЦИФРОВОЙ КОД

Для вывода информации наустройства отображения, например дисплей или принтер, а также для ввода илипередачи данных используются буквенно-цифровые коды. Буквы, цифры,математические символы, знаки препинания, символы для рисования линий, управляющиесимволы и некоторые другие кодируются однобайтовыми числами. Существуетнесколько разновидностей таких кодов, например: ASCII, КОИ-7, КОИ-8,альтернативный код ГОСТ, основной код ГОСТ и другие. ASCII и 7-ми битовый коддля обмена информацией (КОИ-7) отображают первые 128 символов и входят в составостальных кодировок. Дополнительные символы и русский алфавит входят ввосьмибитовые расширенные коды (КОИ-8, альтернативный и основной). Общее числосимволов в этих кодах равно 256. Таблица некоторых кодов приведена ниже.Следует отметить, что нулевой код (NULL) не кодирует цифру ноль и вообще никакне отображается.