Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Ntjhbz_igjhs.docx
Скачиваний:
22
Добавлен:
17.09.2019
Размер:
82.25 Кб
Скачать

17) Основы языка Ассемблер

- Формат команды АССЕМБЛЕРА. Определение и характеристики полей.

- Создание программ на АССЕМБЛЕРЕ. Назначение программ ассемблирования и компановки.

- Командная строка Турбо Ассемблера. Косвенные командные файлы. Файлы конфигурации.

- Память. Порты. Регистры. Сегменты памяти.

Порядок создания программ на TASM

На этапе ассемблирования исходный код (текст программы) превращается в промежуточную форму, которая называется объектным модулем, а на этапе компоновки один или несколько модулей комбинируются в выполняемую программу. Ассемблирование и компоновку можно выполнять с помощью командной строки.

Полный цикл создания программы состоит из 3-х этапов - редактирования, ассемблирования, компоновка и выполнение.

В результате редактирования создается текстовый файл с исходной программой на ассемблере. Расширение файла должно быть .ASM. Этап ассемблирования - это создание объектного модуля (файла с расширением .OBJ) с помощью программы TASM.EXE. На этапе компоновки с помощью программы TLINK.EXE получается исполняемый модуль - файл с расширением .EXE.

Командная строка TASM

Если вы запустите Турбо Ассемблер, не задав никаких аргументов, например:

TASM

то на экран выведется справочная информация, описывающая множество параметров командной строки и синтаксис для спецификации ассемблируемых файлов.

С помощью параметров командной строки можно задавать имя нескольких ассемблируемых файлов.

Косвенные командные файлы

Турбо Ассемблер позволяет задавать косвенный командный файл, с помощью указания перед его именем символа @. Например:

TASM /DTESTMODE @MYPROJ.TA

Эта команда приводит к тому, что содержимое файла MYPROJ.TA становится частью командной строки (как если бы вы ввели ее содержимое непосредственно). Это позволяет поместить наиболее часто используемые командные строки и списки файлов в отдельный файл. В одной командной строке допускается использовать несколько косвенных командных файлов с обычными аргументами

Файлы конфигурации

Турбо Ассемблер позволяет также поместить наиболее часто используемые параметры в файл конфигурации TASM.CFG в текущем каталоге. Турбо Ассемблер проверяет наличие этого файла и обрабатывает его в командной строке первым.

Содержимое файла конфигурации имеет тот же формат, что и косвенный файл. Этот файл может содержать любую допустимую в командной строке информацию.

Содержимое файла конфигурации обрабатывается до всех других аргументов командной строки. Это позволяет вам отменить любой параметр, заданный в файле конфигурации, просто указав в командной строке параметр, который имеет противоположное действие.

18) Команды логических операций. Сдвиговые команды.

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

бит1

бит2

AND

OR

XOR

0

0

0

0

0

0

1

0

1

1

1

0

0

1

1

1

1

1

1

0

Команды AND, OR и XOR реализуют соответственно операции И, ИЛИ и ИСКЛЮЧАЮЩЕЕ ИЛИ над операндами. Причем действие этих команд проводится над одноименными разрядами операндов. Например, если в регистр AL запишем код 01110101, а в регистр BL запишем код 01011001, то в результате выполнения операции <AND AL, BL> в регистре AL получится число 01010001. При выполнении операции <OR AL, BL> в регистре AL получится число 01111101. При выполнении операции <XOR AL, BL> в регистре AL получится чиcло 00101100.

Все буквы, цифры и символы в ЭВМ кодируются в соответствии со стандартным набором кодов, определяемым таблицей кодов ASCII. Анализируя коды символов можно отметить, что коды прописных букв латинского алфавита имеют в 5-м разряде 0, а в кодах строчных (маленьких) 5-й разряд установлен в 1. Остальные разряды совпадают.

В русском алфавите разница в кодах строчных и прописных букв до буквы “П” также в 5-м разряде, а начиная с буквы “Р” в 4-м, 5-м и 6-м разрядах. Напpимеp, нам необходимо пpеобpазовать заглавную латинскую букву 'A' в строчную 'a'.

Символ “A” - представляется ASCII-кодом 41h или 01000001b, a символ “a” представляется ASCII-кодом 61h или 01100001b. Следовательно, чтобы преобразовать код прописной буквы в код строчной буквы необходимо изменить код 41h в код 61h. Для этого значение 5-го бита должно быть переведено из 0 в 1.

Используя логические команды проводим пpеобpазование кода:

mov AL, 'A' ; Занесем код символа “A” AL := 0100 0001

or AL, 00100000b ; AL = 0110 0001 = “a”

При выполнении команд сдвига флаг CF всегда содержит значение последнего выдвинутого бита.

Существуют следующие команды сдвига:

SHR - Логический (беззнаковый) сдвиг вправо

SHL - Логический (беззнаковый) сдвиг влево

SAR - Арифметический сдвиг вправо с сохранением знака

SAL - Арифметический сдвиг влево с сохранением знака

Крайний бит при сдвиге попадает во флаг CF. Для проверки бита, занесенного во флаг CF используется команда JC (переход, если есть перенос) или JNC (переход, если нет переноса). Покажем пример подсчета единичных бит в байте.

clc; очистка флага CF=0

С10: mov CX, 08

mov AL, 10110011B

shr AL, 1 ;Сдвиг вправо на 1, al=01011011, CF=1

jnc C20

inc BX

C20: dec CX

Loop C10

Первая команда SHR сдвигает содержимое регистра AL вправо на 1 бит. Выдвинутый в результате один бит попадает в флаг CF, а самый левый бит регистра AL заполняется нулем. При этом флаг CF последовательно принимает значения 1, 1, 0 и т.д. Если флаг CF в результате сдвига установлен, то увеличиваем значение счетчика в BX.

Циклический сдвиг представляет собой операцию сдвига, при которой выдвинутый бит занимает освободившийся разряд. Существуют следующие команды циклического сдвига:

ROR <операнд> - циклический сдвиг вправо.

ROL < операнд> - циклический сдвиг влево.

RCR < операнд> - циклический сдвиг вправо с переносом.

RCL < операнд> - циклический сдвиг влево с переносом.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]