Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Алгоритмы переводов из одной системы в другуюСодержание книги
Поиск на нашем сайте Работа ЭВМ заключается, в основном, в исполнении команд - так называются «приказы» программиста процессору на языке Ассемблер (Assembler). Программист должен при составлении программы понимать, как размещаются в памяти двоичные коды (b-коды) операндов и результатов команд, как программа может интерпретировать коды операндов, как представить код числового результата операции для вывода его изображения на экран и т.д. При отладке программ есть возможность «заглянуть» в память и проверить информацию. Для всех этих и других целей необходимо вспомнить информационные и арифметические, а точнее - алгебраические основы построения ЭВМ и освоить несколько новых понятий.
2.1. Понятия системы счисления Системой счисления (далее СС) называется совокупность правил записи чисел. СС подразделяются на позиционные и непозиционные. Позиционные СС используют определенный набор символов некоторого множества - алфавита, определенное сочетание которых образует число. Эти символы называют цифрами. Позиционная система имеет основание. Основанием называется количество символов алфавита. В позиционной СС вес каждой цифры в числе зависит от ее положения - позиции в числе. Номер позиции символа называется разрядом. Например, в числе 505 присутствуют две одинаковые цифры – 5, но левый старший разряд составляют пять сотен, а правый младший разряд -тоже пять, но единиц. Старший разряд целого числа записывается на бумаге и отображается на экране слева, а младший – справа. Младший разряд имеет своим номером 0, следующий, расположенный левее него имеет номер 1 и т.д. Каждое целое число в любой СС по сути есть свернутая форма следующего выражения:
A(q)=an*qn+an-1*qn-1+..+a1*q1+a0*q0, (2.1)
где: a –коэффициент в данном полиноме - цифра (символ) из алфавита CC; q - основание СС; n - номер старшего разряда числа; qi –вес коэффициента i-го разряда числа. Например, трехразрядное десятичное число 505 в соответствии с формулой 2.1 может быть представлено выражением:
5*102+ 0*101+ 5*100=505
Для указания вида СС в конце числа ставиться латинская буква: для двоичной – b десятичной – обычно не ставится или ставится d, для шестнадцатеричной – h (далее в тексте b-коды, d-коды, h-коды соответственно). Для работы с Ассемблером необходимо знание 3-х СС: десятичной, двоичной и шестнадцетиричной. Применение b-кода обусловлено тем, что устройства ЭВМ построены на логических схемах, работа которых описывается законами дискретной математики. Ясно, что алфавит для b-кодов состоит из двух символов: 0 и 1; основание b-кода q равно 2. Для более компактного представления (на бумаге или на экране) информации вместо b-кодов используется h-коды: каждые 4 цифры двоичного кода заменяются ОДНОЙ цифрой шестнадцетиричной СС. h-коды имеет основание, равное 16, и следующий набор цифр: {0, 1, 2,..,9, A, B, C, D, E, F}. Как правило, карта памяти (dump) отлаживаемой программы и содержимое регистров текущей команды в программах-отладчиках выводится на экран в h-кодах. Но арифметические и логические операции в АЛУ выполняются поразрядно (говорят, побитово), поэтому для выявления ошибок программисту надо уметь выполнять операции и интерпретировать их результаты в b-кодах, а ввод с клавиатуры и вывод числовой информации программы на экран для пользователя, конечно, делают в d-кодах.
Список рекомендуемой литературы 1. Архитектура и программирование реального режима микропроцессоров фирмы Intel: учебное пособие /Сост. Т.К.Щемелева; Перм. техн. ун-т. Пермь, 2002. 96 c. – Тема 1. 2. Максимов Н.В. Партыка Т.Л. и др. Архитектура ЭВМ и вычислительных систем. М.: ФОРУМ:ИНФРА-М, 2005,-512 с.§ 1.3.
Контрольные задания: Сосчитать число символов в своей фамилии, имени, отчестве раздельно и использовать полученные три числа в качестве основных исходных данных (сокращенно – Ф, И, О). Преобразовать в b-коды значения Ф, И, О. Выписать из таблицы кодов ASCII Н – коды ASCII первых двух символов своей фамилии на русском и на английском языках. Работа ЭВМ заключается, в основном, в исполнении команд - так называются «приказы» программиста процессору на языке Ассемблер (Assembler). Программист должен при составлении программы понимать, как размещаются в памяти двоичные коды (b-коды) операндов и результатов команд, как программа может интерпретировать коды операндов, как представить код числового результата операции для вывода его изображения на экран и т.д. При отладке программ есть возможность «заглянуть» в память и проверить информацию. Для всех этих и других целей необходимо вспомнить информационные и арифметические, а точнее - алгебраические основы построения ЭВМ и освоить несколько новых понятий.
2.1. Понятия системы счисления Системой счисления (далее СС) называется совокупность правил записи чисел. СС подразделяются на позиционные и непозиционные. Позиционные СС используют определенный набор символов некоторого множества - алфавита, определенное сочетание которых образует число. Эти символы называют цифрами. Позиционная система имеет основание. Основанием называется количество символов алфавита. В позиционной СС вес каждой цифры в числе зависит от ее положения - позиции в числе. Номер позиции символа называется разрядом. Например, в числе 505 присутствуют две одинаковые цифры – 5, но левый старший разряд составляют пять сотен, а правый младший разряд -тоже пять, но единиц. Старший разряд целого числа записывается на бумаге и отображается на экране слева, а младший – справа. Младший разряд имеет своим номером 0, следующий, расположенный левее него имеет номер 1 и т.д. Каждое целое число в любой СС по сути есть свернутая форма следующего выражения:
A(q)=an*qn+an-1*qn-1+..+a1*q1+a0*q0, (2.1)
где: a –коэффициент в данном полиноме - цифра (символ) из алфавита CC; q - основание СС; n - номер старшего разряда числа; qi –вес коэффициента i-го разряда числа. Например, трехразрядное десятичное число 505 в соответствии с формулой 2.1 может быть представлено выражением:
5*102+ 0*101+ 5*100=505
Для указания вида СС в конце числа ставиться латинская буква: для двоичной – b десятичной – обычно не ставится или ставится d, для шестнадцатеричной – h (далее в тексте b-коды, d-коды, h-коды соответственно). Для работы с Ассемблером необходимо знание 3-х СС: десятичной, двоичной и шестнадцетиричной. Применение b-кода обусловлено тем, что устройства ЭВМ построены на логических схемах, работа которых описывается законами дискретной математики. Ясно, что алфавит для b-кодов состоит из двух символов: 0 и 1; основание b-кода q равно 2. Для более компактного представления (на бумаге или на экране) информации вместо b-кодов используется h-коды: каждые 4 цифры двоичного кода заменяются ОДНОЙ цифрой шестнадцетиричной СС. h-коды имеет основание, равное 16, и следующий набор цифр: {0, 1, 2,..,9, A, B, C, D, E, F}. Как правило, карта памяти (dump) отлаживаемой программы и содержимое регистров текущей команды в программах-отладчиках выводится на экран в h-кодах. Но арифметические и логические операции в АЛУ выполняются поразрядно (говорят, побитово), поэтому для выявления ошибок программисту надо уметь выполнять операции и интерпретировать их результаты в b-кодах, а ввод с клавиатуры и вывод числовой информации программы на экран для пользователя, конечно, делают в d-кодах.
Алгоритмы переводов из одной системы в другую Для перевода чисел из одной СС в другую используются точные алгоритмы, основанные на применении формул, например 2.1, и арифметических операций умножения, деления, сложения, изучаемые в курсах ИНФОРМАТИКИ. Рассмотрим переводы из одной СС в другую на примере только ЦЕЛЫХ чисел.
2.2.1. Перевод из b - коды в d-коды: Пусть дано число А в b – коде: А = 011001b. Переведем его в d-код. Чтобы получить число в d-коде, достаточно представить заданное число в развернутой форме (по формуле 2.1) и выполнить все указанные действия:
(011001)2 = 0*25+1*24+1*23+0*22+0*21*1*20 =
0*32+1*16+1*8+0*4+0*2+1*1 = (25)10 2.2.2. Перевод из b - кода в h -код Рассмотрим перевод числа на примере. Пусть дано число 011001b. Для перевода b-кода целого числа в h-коды нужно - разбить его b-код на тетрады (группы по 4 разряда), начиная с младшего целого разряда в сторону старших разрядов; - в старшей тетраде недостающие до полной тетрады разряды заполнить нулями; - заменить 4-х разрядные коды каждой тетрады символами h-кода. Например, число 011001b разбивается на одну полную и одну неполную тетерады: 01|1001b. Дополним нулями старшие разряды неполной тетрады и получим: 0001|1001b. Переведем 0001b и 1001b раздельно в h-коды. Получим 19 h =011001b. 2.2.3. Перевод из d-кода в любую другую СС. Алгоритм перевода следующий. 1) Разделить десятичное число A на основание той СС, в которой нужно представить число. Запомнить частное Ч и остаток О числа А. 2) Если в результата шага 1 частное Ч неравно 0, то принять его за новое делимое и отметить остаток О, который будет очередной значащей цифрой числа, вернуться к шагу 1, на котором в качестве делимого (десятичного числа) участвует полученное на шаге 2 частное. 3) Если в результате шага 1 частное Ч =0, алгоритм прекращается. Выписать остатки в порядке, обратном их получению. Получится двоичный эквивалент исходного числа.
Для примера переведите число 47 в b-код путем деления на 2 по правилам d-кода, так, как учили в курсе информатики. Должны получить 47=101111b.
2.2.4. Перевод из d-кода в b-код.
Однако перевод небольших чисел из d-кода в b-код и обратно просто выполнять и устно, используя метод подбора цифр в разрядах выражения (2.1). Для этого надо помнить, что все цифры b-кода могут принимать одно из двух значений - 0 или 1, то есть надо помнить многочлен типа: …32+16+8+4+2+1, или еще короче, ряд чисел…32,16,8,4,2,1, как последовательность весов нулей или единиц в составе двоичного числа. Тогда перевод будет состоять в том, чтобы правильно определить, будет ли участвовать определенный вес из этого ряда в формирования b-кода или нет. Если будет, то данному весу соответствует цифра «1», если нет – цифра «0». Для правильного перевода сначала надо подобрать наибольший вес «единицы» для переводимого числа. Так, например, для числа 55 вес 32 будет наибольшим, т.к. следующий вес в этом ряду, равный 64, уже превышает число 55. Т.е. при весе 32 цифра b-коды есть 2. Затем надо «заполнить» нулями и единицами места для остальных цифр в указанном выше полинома. Для числа 55 следующий вес 16 также будет нужен, т.е. цифра двоичного числа при этом весе нужна 1, т.к. 32+16=48, что меньше 55. Вес 8 не нужен (цифра двоичного числа равна 0), т.к. 48+8=56, что больше 55.Вес 4, 2, 1 также будут нужны. Таким образом, мы получили двоичное число 110111b, равное 55 в d-коды.
Используя тот же метод, переведем число 111000b в d-коды: 1) Мысленно или письменно расставим веса для всех разрядов двоичного числа. 2) Сложим веса разрядов, которым в числе соответствует «1». Получим 32+16+8=56, т.е. 111000b=56.
|
||
|
Последнее изменение этой страницы: 2017-01-26; просмотров: 404; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.196 (0.01 с.) |