Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебн пособ по арх и прогр МП.doc
Скачиваний:
64
Добавлен:
10.12.2013
Размер:
1.59 Mб
Скачать

1.4. Преобразование строки ascii-кодов в двоичное и шестнадцатеричное число

В табл.1.2 показаны еще раз ASCII-коды десятичных цифр от 0 до 9.

Таблица 1.2. ASCII-коды десятичных цифр.

ASCII-код

30h

31h

32h

33h

34h

35h

36h

37h

38h

39h

Десятичная цифра

0

1

2

3

4

5

6

7

8

9

Как видно из табл.1.2, цифры от 0 до 9 находятся в интервале от 30h до 39h. Отрицательные числа можно получить простым добавлением ASCII-кода знака «-»), равного 2Dh, как следует из табл.1.1.

1.5. Применение систем счисления в эвм

Итак, b - СС – это «внутренняя» СС ЭВМ, т.к. запоминающие элементы ЭВМ (в микропроцессоре, памяти, портах) могут хранить и передавать по линиям связи только два значения электрического сигнала, которые и называются логическим нулем и логической единицей.

H - СС используется для отображения, например на мониторе, содержимого запоминающих элементов ЭВМ вместо двоичной СС, т.к. h-СС. значительно более компактна (сравним например число 255 в b-СС и h-СС соответственно: 11111111b и FFh) и легко преобразуется в b-СС. Но при вводе информации с устройств ввода (например, с клавиатуры) и выводе (например на монитор), используют так называемую символьную систему представления информации для ПК - это система кодирования ASCII.

При программировании часто возникает задача перевода чисел между двоичной, шестнадцатеричной, десятичной CC и ASCII, т.к.

  • пользователь умеет выполнять арифметические операции в десятичной CC;

  • ЭВМ выполняет математические операции в двоичной CC;

  • результаты выполняемых операций должны быть переведены из двоичной CC в коды ASCII для отображения на экране, также как и коды нажатых клавиш для обработки в ПК часто требуют перевода в двоичную CC;

  • пользователь-профессионал может получить информацию на экране о состоянии аппаратуры (об адресах и содержимом регистров микропроцессора, портов, памяти) в шестнадцатеричных кодах.

1.6. Контрольные вопросы и задания

1. Какое из тождеств верно:

1)86 = 1110110b; 2) 5Ah = 86; 3) ABh = 10101011b; 4) ABh = 1010110b

2. Какая запись числа верна:

1)26 в коде ASCII = 0011 0010 0011 0110; 2) 26 = 1Bh; 3) 1Ah = 11011b

3. Какова запись числа 125 в h-СС:

1) 1111101b 2) 5Ah 3) 80h 4) 1011101b 5) 7Dh

4. Какова запись числа 110010b в десятичной СС:

1)1111101b 2) 50h 3) 50 4) 70 5) 500

5. Какова запись числа 25 в кодах ASCII:

1) 0011 0010b 0011 0101b; 2) 1111101b; 3) 5Ah; 4) 0001 0010b 0001 0101b

6. Какое из тождеств верно :

1) 255 = 11111111b; 2) 51h = 112; 3) ACh = 10101111b; 4) BBh = 11010110b

7. Какая запись числа верна :

1) 26 в коде ASCII = 32h 36h; 2) 26 = 1Bh; 3) 1Ah = 11011b

8. Какова запись числа 127 в шестнадцатеричной СС?:

1) 11111011b 2) BAh 3) 7Eh 4) 10011101b 5) 7Fh

9. Какова запись числа 111101b в десятичной СС?:

1) 1111101b 2) 5Fh 3) 55 4) 61 5) 501

10. Найти по табл.1.1 и выписать h-коды ASCII, а затем перевести в h- и b-коды следующие числа:

1)-12; 2)-32; 3)+35; 4)-127; 5)+12

Тема 2. Представление данных на языке ассемблера и их хранение в памяти пк

2.1. Биты, байты и слова

Минимальной единицей информации в ПК является бит. Бит-это количество информации, содержащееся в одном двоичном разряде. Упрощенно битом называют двоичный разряд. Группа из восьми битов представляет собой байт. Восемь битов обеспечивают основу для двоичной арифметики и для представления символов. Байт может принимать значение от 00000000b = 0, до 11111111b = 255. Структура, состоящая из 2-х последовательно размещенных байт, называется словом и имеет разрядность 16 бит. Значения слова находятся в диапазоне от 0 до 65535. По аналогии 4-х байтовая структура называется двойным словом и имеет разрядность 32 бита.

На языке АССЕМБЛЕРА (далее ASM) эти типы данных определяются программистом при написании исходного текста программы с помощью определенных директив (псевдооператоров). Директивы имеют одинаковый формат и состоят из трех частей (полей). Первая - имя переменной - имя ячейки памяти, присваиваеваемое программистом, вторая - мнемокоды DB, DW или DD - определяют размер данных, а третья указывает само значение (константу).

1) [имя_переменной] DB [значение][, значение] – определяет переменную размером 1 байт и записывает ее значение в память ПК;

2) [имя_переменной] DW [значение][, значение] –определяет переменную размером 2 байта – слово и записывает ее значение в память ПК;

3) [имя_переменной] DD [значение][, значение] – определяет переменную размером 4 байта – двойное слово и записывает ее значение в память ПК;

Например:

var DB 31h; - определяет переменную с именем var размером в 1 байт и записывает в нее значение 31h;

const DW 1000;- определяет переменную с именем const размером в 2 байта (слово) и записывает в нее значение 1000;

Символ «?» только резервирует место в памяти ПК без записи в него каких либо данных.

Например:

abc DB 1,5,? ;определяет массив из трех байт (причем «abc» – имя первого из трех байт) и записывает в него два значения: 1 и 5 соответственно, оставляя последний байт пустым для какой-то последующей записи.

ВНИМАНИЕ! Необходимо проверять, чтобы размер переменной не был меньше чем размер записываемого в нее числа: err DB 300; - ошибка т.к. байт не может принимать значения больше чем 255.

2.2. ASCII код

На языке ASM для определения переменной в виде символа в коде ASCII и записи ее значения только в формате байта используется уже описанный ранее псевдооператор DB, но переменная или строка (массив) должны быть заключен в кавычки. Например:

  • symb DB 'A'; – определяет переменную с именем symb размером в 1 байт и записывает в память код ASCII символа A.

  • str DB 'Привет 2001 году!' - определяет переменную с именем str и записывает в память последовательность символов в форме: Привет 2001 году!

Итак, программы на языке ASM позволяют использовать в виде выражения любые числа, но необходимо указывать в какой системе счисления они введены:

  • числа в десятичной СС – последовательность символов от 0 до 9, которая заканчивается буквой d или просто без буквы;

  • числа в двоичной СС – последовательность символов 0 или 1, которая заканчивается буквой b;

  • числа в шестнадцатеричной СС – последовательность символов от 0 до 9 и букв от A до F, которая заканчивается буквой h, а если число начинается с символа A,B,C,D,E,F, то в последовательности им предшествует 0. Наличие этого нуля позволяет указать транслятору, что вводится число, а не имя (сравним: 0ABh – число, а ABh – имя);

  • символьная последовательность – строка различных символов в кодах ASCII (символы, буквы, цифры), заключенных в кавычки или апострофы, например: mas DB 'АССЕМБЛЕРУ ПРИВЕТ!'