adfun.ru
| |
BIGLIB |
| большущая библиотека (9812 книг), можно не только прочитать но и скачать бесплатно |
|
| |
ФАНТАСТИКА |
| фентези,
фантастика, фантастические повести |
|
| |
ФИЛОСОФИЯ |
книги, которые заставляют
задуматься над окружающим тебя миром.
|
|
| |
МЕДИЦИНА |
медицинские книги,
методички,
народные лечебники |
|
| |
КУЛИНАРИЯ |
рецепты
тортов, консервирование,
все о спиртных
напитках. |
|
| |
СТИХИ |
| стихи популярных
и не очень авторов |
|
| |
ТВОРЧЕСТВО |
| народное творчество,
стихи, песни и т.д. |
|
| |
ЮМОР |
| анекдоты, приколы,
смешные истории |
|
| |
ЭРОТИКА |
| эротические рассказы,
книги о технике секса,
кама-сутра и др. |
|
|
| |
 |
19 10011 23 13
20 10100 24 14
21 10101 25 15
22 10110 26 16
23 10111 27 17
24 11000 30 18
25 11001 31 19
26 11010 32 1A
. . . .
. . . .
256 1000000000 400 100
. . . .
. . . .
4096 1000000000000 10000 1000
. . . .
. . . .
65536 1000000000000000 200000 10000
-----------------------------------------------------------------
Например, перепишем последнюю инструкцию с операндами в дво-
ичном представлении:
mov cx,1100100b ; установить счетчик в
; значение 100
Двоичные значения размером в слово и двойное слово еще труд-
нее читать и использовать.
Если вы еще не знакомы с этими представлениями, мы настоя-
тельно рекомендуем вам раздобыть хорошую книгу на эту тему, так
как двоичная, восьмеричная и шестнадцатиричная запись - это один
из основных элементов в программировании на Ассемблере.
Два из этих представлений, восьмеричное и шестнадцатиричное,
не только хорошо соответствуют двоичной природе компьютера, но и
довольно компактны.
В восьмеричном представлении, или представлении с основанием
8, используются цифры от 0 до 7 (3 бита на цифру). На Рис. 5.5
показано, каким образом биты двоичного значения 001100100b можно
объединить в группы по три бита, чтобы образовать восьмеричное
значение 144o.
Двоичное 001 100 100
| | | | | |
------- ------- -------
| | |
--------- | ---------
| | |
v v v
Восьмиричное 1 4 4
Рис. 5.5 Преобразование двоичного значения 001100100 (деся-
тичное 100) в восьмеричное значение 144.
В итоге можно видеть, что восьмеричное число втрое короче
его двоичного эквивалента. В восьмеричном виде последний пример
принимает вид:
mov cx,144o ; установить счетчик в значение 100
Заметим, что суффикс o указывает на восьмеричную запись.
Можно также использовать суффикс q, который не так просто спутать
с нулем. Однако программисты, работающие на IBM PC, почти всегда
используют шестнадцатиричное (с основанием 16) представление, а
не восьмеричное.
Каждая шестнадцатиричная цифра может принимать одно из 16
значений. Перечислим их в шестнадцатиричном представлении:
0 1 2 3 4 5 6 7 8 9 A B C D E F 10 ...
После цифры 9 следуют шесть дополнительных шестнадцатиричных
цифр A - F. (Можно также использовать строчные буквы a - f.) Хотя
использование букв в качестве цифр может показаться странным, у
вас не выбора, так как вам нужно 16 цифр, а обычных цифр только
10. На Рис. 5.6 показано, как можно разбить на группы биты двоич-
ного числа 01100100b (100 в десятичном виде), чтобы образовать
шестнадцатиричное значение 64h.
Двоичное 0110 0100
| | | |
-------- --------
| |
--------- ---------
| |
v v
Шестнадцатиричное 6 4
Рис. 5.6 Преобразование двоичного значения 001100100 (деся-
тичное 100) в шестнадцатиричное значение 64.
Как показано на Рис. 4.6, в шестнадцатиричном представлении
значения имеют вид "4 бита на цифру". В итоге шестнадцатиричные
значения имеет длину, равную только 1/4 длины их двоичных эквива-
лентов. Фактически, смещение другого значения размером в слово
можно выразить с помощью четырех шестнадцатиричных цифр. В шест-
надцатиричном виде последний пример принимает вид:
mov cx,64h ; установить счетчик в значение 100
Шестнадцатиричные числа обозначаются суффиксом h. Кроме то-
го, шестнадцатиричные числа должны начинаться с одной из цифр
0-9, так как шестнадцатиричное число типа BAD4h может ошибочно
интерпретироваться, как метка. Приведем пример, к котором исполь-
зуется как число 0BAD4h, так и метка BAD4h:
.
.
.
.DATA
BAD4h DW 0 ; метка BAD4h
.
.
.
.CODE
mov ax,0BAD4h ; загрузить в AX
; шестнадцатиричную
; константу (первый 0
; показывает, что это
; константа
.
.
.
mov ax,BAD4h ; загрузить AX из
; переменной в памяти
; BAD4h (отсутствие
; 0 в качестве первого
; символа показывает,
; что это метка
.
.
.
В общем случае постоянным числовым значением может быть
только операнд, начинающийся с цифр 0-9.
Числа с плавающей точкой могут обозначаться двумя способами.
Во-первых, вы можете задавать значение с плавающей точкой в виде
"мантисса/экспонента", например:
1.1
-12.45
1.0E12
252.123E-6
Турбо Ассемблер преобразует форму "мантисса/экспонента" в
двоичный вид, при котором соблюдается формат с плавающей точкой.
Если хотите, вы можете задавать значения с плавающей точкой не-
посредственно в формате IEEE или двоичном формате фирмы
Microsoft, задав число в шестнадцатиричном виде и поместив к кон-
це его суффикс r.
Вещественные числа могут использоваться только в директивах
DD, DQ и DT (которые мы обсудим позднее). Если вы выберите ис-
пользование суффикса r, то вы должны точно определить максималь-
ное число шестнадцатиричных цифр для инициализируемого типа дан-
ных (плюс предшествующий ноль, если это необходимо). Например:
DD 40000000r ; 2.0 (длина в точности равна 8)
DD 0C014CCCCCCCCCCCr ; -5.2 (длина 16, плюс предшест-
; вующий ноль)
DT 4037D529AE9E86000000r ; 1.2E17 (ровно 20 бит)
В общем случае значительно проще использовать форму "мантис-
са/экспонента".
Чтобы показать, что число является десятичным, в качестве
суффикса можно использовать букву d. Зачем же нужен этот суффикс,
если по умолчанию Турбо Ассемблер и так предполагает, что все
числа являются десятичными? Как вы можете догадаться, ответ сос-
тоит в том, что числа кроме десятичного могут иметь и другие
представления. Для этого служит директива .RADIX, о которой мы
потом кратко расскажем.
Наконец, могут использоваться символьные константы, при этом
символы заключаются в одиночные или двойные кавычки. Значением
символа является его значение кода ASCII. Например, все следующие
строки загружаются в регистр AL символ A:
mov al,65
mov al,41h
mov al,'A'
mov al,"A"
Где можно использовать значения в различном описанном выше
представлении? Двоичные, восьмиричные, десятичные и шестнадцати-
ричные значения могут использоваться там же, где можно использо-
вать константы, например:
mov ax,1001b
add cx,5bh
sub [Count],177o
and al,1
mov al,'A'
Значения с плавающей точкой могут использоваться только в
директивах DD, DQ и DT. Двоично-десятичные значения (BCD) можно
использовать только в в директиве DT.
|
adfun.ru
|
|
|
|