Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
прогр.docx
Скачиваний:
23
Добавлен:
21.12.2018
Размер:
2.58 Mб
Скачать

1) Первой известной кодировкой символов была кодировка ascii, и она используется до сих пор. В ascii-кодировке каждый символ занимает 8 бит, или один байт.

2) Международная организация по стандартизации ISO (International Standards Organization) создала новый стандарт кодировки символов, названный Latin-1, который содержал европейские символы, не вошедшие в набор ASCII.

3) Microsoft расширила Latin-1 и назвала этот стандарт ANSI. ANSI 8-битная кодировка, которая может представлять только 256 уникальных символов.

4) Microsoft в сотрудничестве с Apple Computer, Inc., и IBM создала некоммерческий консорциум Unicode, целью которого стало определение нового стандарта на кодировку символов для международных наборов символов. Работа, проделанная в Unicode, была объединена с работой, которая велась в ISO, и их результатом работы стал стандарт Unicode для кодировки символов. Unicode является 16-разрядным стандартом, что обеспечивает 65 536 уникальных символов - более чем достаточно для представления всех языков мира.

5) Родной кодировкой для Windows является Unicode, но она поддерживает и ANSI. ОС представляет имена объектов, пути и имена файлов в виде 16-битных символов Unicode. Она также использует Unicode для хранения данных в реестре.

Если программа сохраняет текст Jerry с использованием ANSI, то он будет выглядеть в памяти как:

0×4А 0×65 0×72 0×72 0×79.

Если программа сохраняет этот же текст с использованием Unicode, то он будет выглядеть как:

0×00 0х4А 0×00 0×65 0×00 0×72 0×00 0×72 0×00 0×79.

При присваивании однобайтовой переменной некоторого символа, то эта переменная будет равна коду символа в кодировке ANSI. При инициализации символа можно использовать и кавычки и апострофы - без разницы.

.data

Char1 db 'W'

Char2 db 'Й'

db "r"

Тоже самое:

.data

Char1 db 57h

Char2 db 0C9h

db 72h

Объявлять строки можно и следующим образом:

String db "ASM"

Тоже самое:

String db 'A'

Db "S"

Db "M"

Тоже самое:

String db 41h

Db 53h

Db 4Dh

Тоже самое:

String db 41h, 53h, 4Dh

При передаче строк функциям в качестве параметров надо чтобы в конце строки был 0, для того чтобы функция смогла найти конец строки.

String db "ASM",0h

Msg db "First ASSEMBLER program",0h

Ttl db 'Hello, World!!!!',0h

Заполнение данными.

Если нужно описать много одинаковых переменных, например 30 переменных, то это можно сделать так:

db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; 30 раз

Но можно это сделать с помощью директивы DUP.

db 30 DUP (0) ; тот же результат

в скобках указываем, чем надо заполнять, можно использовать символы в кавычках. Обязательно чтобы размер в скобках совпадал с директивой.

Примеры:

Dd 10 DUP ("в") 00 00 00 A2 00 00 00 A2 00 00 00 A2 00 00 00 A2 00 00 00 A2 00 00 00 A2 00 00 00 A2 00 00 00 A2 00 00 00 A2 00 00 00 A2

Dw 45h DUP (0DF23h) ; 69 повторений DF23

Dd 100b DUP (12345678h) ; 4 повторения 12345678h 12345678h 12345678h 12345678h

Операнды языка Ассемблер

Операнды – это объекты (некоторые значения, регистры или ячейки памяти), на которые действуют инструкции или директивы, либо это объекты, которые определяют или уточняют действие инструкций или директив.

Классификация операндов:

1. Постоянные или непосредственные операнды – число, строка, имя или выражение, имеющие некоторое фиксированное значение. Имя не должно быть перемещаемым, то есть зависеть от адреса загрузки программы в память. Оно может быть определено операторами equ или =.

num equ 5

imd = num-2

mov al,num ; эквивалентно mov al,5: 5 здесь непосредственный операнд

add [si],imd ; imd=3 – непосредственный операнд

mov al,5 ; 5 – непосредственный операнд