Числа в двоично-десятичном формате 


Мы поможем в написании ваших работ!



ЗНАЕТЕ ЛИ ВЫ?

Числа в двоично-десятичном формате



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

                                                  – неупакованный вид;

                      – упакованный вид

Как и в языках высокого уровня (СИ, Паскаль), в Ассемблере в качестве данных могут выступать константы и переменные.

Числовые константы используются для обозначения арифметических операндов и адресов памяти. Для числовых констант в Ассемблере могут использоваться следующие числовые форматы.

Десятичный формат – допускает использование десятичных цифр от 0 до 9 и обозначается последней буквой d, которую можно не указывать, например, 125 или 125d. Ассемблер сам преобразует значения в десятичном формате в объектный шестнадцатеричный код и записывает байты в обратной последовательности.

Шестнадцатеричный формат – допускает использование шестнадцатеричных цифр от 0 до F и обозначается последней буквой h, например 7Dh. Так как ассемблер полагает, что с буквы начинаются идентификаторы, то первым символом шестнадцатеричной константы должна быть цифра от 0 до 9. Например, 0Eh. Ассемблер сам записывает байты в обратной последовательности.

Двоичный формат – допускает использование цифр 0 и 1 и обозначается последней буквой b. Двоичный формат обычно используется для более четкого представления битовых значений в логических командах (AND, OR, XOR).

Восьмеричный формат – допускает использование цифр от 0 до 7 и обозначается последней буквой q или o, например, 253q.

Десятичное 12, шестнадцатеричное 0Сh, восьмеричное 14q и двоичное 1100b генерируют один и тот же код. Отрицательные числа ассемблер сам представляет в виде дополнительного кода.

Примеры:

_bb DB 00001100b; _bb указывает на байт памяти

                 ;с двоичным значением 00001100

_ww_ DW 1234o; _ww указывает на слово памяти

                 ; с восьмеричным значением 1234

_dd_ DD 12345678h;_dd указывает на двойное слово

             ; памяти со значением 12345678h

Вещественные числа задаются с помощью директив DD, DQ и DT.

Примеры:

_dd_ DD 5.65

_dq_ DQ -122.87

_dt_ DT 168.987E-21 

Для инициализации массивов (цепочек) можно использовать следующие строки

My_array DW 0,1,2,3,4,5,6,7,8,9

или

My_array DW 0,1,2,3

     DW 4,5,6,7

     DW 8,9

Данная строка выделяет десять последовательных слов памяти и записывает в них значения 0, 1, 2, 3, 4, 5, 6, 7, 8, 9. Метка My_array определяет смещение начала этой области в сегменте.DATA.

Для инициализации блоков памяти одними и теми же значениями можно использовать оператор DUP. Например,

Block_array   DW 100 DUP (12h)

В тех случаях, когда необходимо выделить память, но не инициализировать ее, используется знак?. Например,

no_init   DD?

massiv    DW 20 DUP (?)

Символьные строки представляют собой набор символов для вывода на экран. Содержимое строки отмечается одиночными кавычками, например, ‘pc’ или двойными кавычками (“pc”). Ассемблер переводит символьные строки в объектный код в обычном формате текущей кодовой страницы. Символьная строка определяется только директивой DB, в которой указывается более двух символов в нормальной последовательности слева направо. Символьная строка должна заканчиваться символом ‘\0’ (для системы MS-DOS строка заканчивается символом ‘$’). Для перевода строки могут использоваться символы 13 (возврат каретки 0Dh) и 10 (перевод строки 0Ah).

Stroka DB ‘Привет’,13,10,0

При записи символьных констант следует помнить, что символьная константа, определенная как DB ‘12’, представляет собой символы ASCII и генерирует шестнадцатеричный код 3132h, а числовая константа, определенная как DB 12, представляет двоичное число и генерирует шестнадцатеричный код 0Сh.

В кодовой странице ASCII (UNICODE) символы цифр ‘0’… ‘9’ соответствуют значениям кодов 30h…39h соответственно. Используя это, можно легко переводить числа, вводимые с клавиатуры, в эквивалент их целочисленного значения.

 



Поделиться:


Последнее изменение этой страницы: 2020-12-09; просмотров: 252; Нарушение авторского права страницы; Мы поможем в написании вашей работы!

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.144.9.141 (0.005 с.)