Инструменты пользователя

Инструменты сайта


examination:asm:question14

Вопрос №14. Представление целых чисел и работы с ними на ЯА. Знаковые и беззнаковые числа. Примеры.

Представление целых чисел

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

Двоичные числа

Компьютер сохраняет команды и данные в памяти в виде набора электрических зарядов, каждый из которых соответствует одной ячейке, или биту. Образно говоря, состояние каждой ячейки можно представить как переключатель с двумя состояниями: включено/выключено, или истина/ложь. Поскольку этот переключатель может находиться только в одном из двух состояний (т.е. ячейка может быть или заряжена, или разряжена), в компьютере логично использовать двоичную систему счисления, в которой в качестве базы выбрано число 2. Таким образом, каждый двоичный разряд (или бит) может принимать только два значения — 0 или 1.

При отображении n-разрядного двоичного числа его биты принято нумеровать справа налево от 0 до n-1. Левый крайний бит числа называется старшим, а правый крайний — младшим. На рис. 1.3 показан пример представления 16-разрядного двоичного числа, при этом младший и старший биты обозначены как М и С, соответственно.

Двоичные целые числа могут иметь знак или быть беззнаковыми. Целое число со Целое число со знаком может быть либо положительным либо отрицательным. Беззнаковые числа могут быть только положительными либо равняться нулю. При использовании специальных схем кодирования с помощью двоичных чисел могут быть представлены вещественные числа. А теперь мы начнем наше рассмотрение с простейшего типа двоичных чисел — беззнакового целого.

Беззнаковые целые двоичные числа

Как вы уже знаете, биты двоичного числа принято нумеровать от младшего к старшему. Каждый бит беззнакового целого двоичного числа, имеющий порядковый номер n, соответствует значению числа 2n. На рис. 1.4 показано 8-разрядное двоичное число, а также значения степени двойки, соответствующие его отдельным разрядам. Обратите внимание, что они увеличиваются от младшего разряда к старшему, т.е. справа налево.

Шестнадцатеричные числа

С многоразрядными двоичными числами очень трудно работать, поскольку их невероятно тяжело анализировать. Поэтому при представлении двоичных чисел в ассемблерной программе и отладчике обычно используется шестнадцатеричная форма записи. Каждая цифра в шестнадцатеричном числе представляет собой 4 бита, а 2 шестнадцатеричные цифры вместе составляют 1 байт. Одно шестнадцатеричное число может принимать значения от 0 до 15, поэтому, кроме цифр 0…9, для отображения значений от 10 до 15 используют символы от А до F: А = 10, В = 11, С = 12, D = 13, Е = 14, F = 15.

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

Как мы уже говорили, целые числа со знаком могут быть как положительными, так и отрицательными. Чаще всего знаковый разряд занимает старший бит числа. Если его значение равно 0, число считается положительным, а если 1, то отрицательным. На рис. 1.9 приведен пример положительного и отрицательного двоичных чисел, расположенных в одном байте.

Двоичный дополнительный код

При представлении отрицательных целых чисел используется так называемый двоичный дополнительный код. Числа, представленные в этом коде, обладают свойством аддитивной инверсии, или инверсии относительно сложения. Это означает, что если сложить некоторое положительное число и его дополнительный код, то в результате получится 0. Использование дополнительного кода облегчает проектирование электронных схем арифметико-логического устройства процессора, поскольку в этом случае две основные арифметические операции — сложение и вычитание — могут выполняться с помощью одной и той же электронной схемы сумматора. Таким образом, при выполнении операции вычитания А — В процессор на самом деле складывает число А с числом В, представленным в двоичном дополнительном коде. Чтобы получить двоичный дополнительный код целого числа, необходимо инвертировать значения всех его битов и к полученному в результате числу прибавить 1. Например, для 8-разрядного двоичного числа 00000001 дополнительный код равен 11111111, как показано в табл. 1.12.

Дополнительный код для шестнадцатеричных чисел

Алгоритм получения дополни¬тельного кода для шестнадцатеричных чисел ничем не отличается от рассмотренного выше алгоритма для двоичных чисел: нужно инвертировать все биты шестнадцатеричного числа и к полученному результату прибавить 1. Проще всего инвертировать биты одного шестнадцатеричного разряда, если вычесть его значение из числа 15. Ниже приведено несколько примеров преобразования шестнадцатеричных чисел в дополнительный код:

6A3D–> 95С2 + 1 –> 95СЗ

95СЗ–> 6АЗС + 1 –> 6A3D

21F0–> DE0F + 1 –> DE10

DE10–> 21EF + 1 –> 21F0

examination/asm/question14.txt · Последние изменения: 2014/01/15 08:12 (внешнее изменение)