Загрузка...

Вывод информации на устройство печати


Устройство печати (принтер) это очень полезное устройство. Вам может не только потребоваться распечатать текст программы, но и передать на принтер выводимую информацию. Следующая версия программы выводит информацию вместо экрана на принтер:

Ваша вторая программа на Турбо Ассемблере


Теперь вы готовы к тому, чтобы ввести и запустить программу, которая действительно чтото делает. Вернитесь в текстовый редактор и введите следующую программу REVERSE.ASM: DOSSEG .MODEL SMALL .STACK 100h .DATA

Запуск программы REVERSE.ASM


Для запуска программы REVERSE.ASM вы должны сначала ассемблировать ее: TASM reverse а затем ввести: TLINK reverse

Работа с командной строкой Турбо Ассемблера


Данная глава посвящена ознакомлению вас с необязательными параметрами командной строки Турбо Ассемблера. Мы опишем каждый параметр командной строки, которые вы можете использовать для того, чтобы изменить поведение Ассемблера, и покажем, как и где используются командные файлы. Наконец, мы опишем также файл конфигурации.

Параметр /B


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

Параметр /H или /?


Функция: Выводит на экран дисплея справочную информацию. Синтаксис: /H или /? Примечания: Параметр /H указывает Турбо Ассемблеру, что на экран дисплея нужно вывести справочную информацию, описывающую синтаксис командной строки. Эта справочная информация включает в себя список параметров, а также различные задаваемые имена файлов. Параметр /? делает то же самое.

Параметр /L


Функция: Генерирует файл листинга. Синтаксис: /L Примечания: Параметр /L указывает, что вы хотите создать файл листинга, даже если вы его не задаете в командной строке явно. Файл листинга имеет то же имя, что и исходный файл, и расширение .LST.

Синтаксис: /ML


Примечания: Параметр /ML указывает Турбо Ассемблеру, что во всех идентификаторах нужно различать буквы разного регистра (строчные и прописные). Обычно строчные и прописные буквы рассматриваются, как эквивалентные, поэтому имена ABCxyz, ABCXYZ и abcxyz обозначают один и тот же идентификатор. Если вы задаете параметр /ML, то эти три идентификатора будут считаться различными. Тем не менее, даже после Читать далее

Параметр Q


Функция: Подавляет записи .OBJ, не требующиеся при компоновке. Синтаксис: /Q Примечание: Данный параметр удаляет из получаемого в результате файла (файлов) .OBJ записи об авторских правах и зависимости файлов. Этот параметр не следует указывать, если вы используете утилиту MAKE или аналогичные программы, которые при работе учитывают эти записи.

Параметр /V


Синтаксис: /V Примечания: Параметр /V используется в целях совместимости. Он не приводит ни к каким действиям и не оказывает влияния на ассемблирование. Параметр /W

TASM /W TEST1


Следующий оператор в программе TEST1.ASM выведет предупреждающее сообщение, которое не появится на экране, если не указан параметр /W: mov bx,ABC ; предупреждение о неэффективности кода ABC = 1 При задании командной строки:

Параметр /ZD


Функция: Разрешает включение в объектные файлы информации о номерах строк. Синтаксис: /ZD Примечания: Параметр /ZD приводит к тому, что Турбо Ассемблер будет помещать в объектные файлы информацию о номерах строк. Это позволяет автономному отладчику фирмы Borland (Турбо отладчику) выводить на экран текущее место в исходном коде, но не позволяет ему осуществлять доступ к элементам данных.

Природа языка Ассемблера


Как мы уже говорили ранее, язык Ассемблера это «родной» язык компьютера, Чтобы понять, что это означает, нужно сначала разобраться, что же представляет собой сам компьютер. Затем мы расскажем вам о том, что делает язык Ассемблера уникальным среди других языков программирования.

Архитектура компьютера


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

Язык Ассемблера


Как мы уже сказали, процессор управляет деятельностью всех пяти подсистем компьютера: сложением значений, перемещением их из памяти на устройство вывода, и т.д. Однако здесь возникает вопрос, откуда процессор знает, какие именно операции нужно выполнять? То есть, компьютер обладает всеми необходимыми нам свойствами, но у него нет сценария, по которому он может работать.

Возможности процессора 8086


По современным стандартам процессор 8086 обладает скромными возможностями. Кроме того, процессор 8086 был разработан десять лет назад, и 10 лет технологической эволюции внесли много нового в область проектирования микросхем. Тем не менее, процессор 8086 продолжает играть важную роль. Одной из причин этого является все возрастающее количество персональных компьютеров IВM PC и совместимых с ними компьютеров. Читать далее

Память


Процессор 8086 может адресоваться к памяти объемом 1 мегабайт (это два в двадцатой степени или 1048576 ячеек памяти, каждая размером 8 бит). Первый байт памяти имеет адрес 0, а последний адрес 0FFFFFh (см. Рис. 4.2). Адрес 0FFFFFh это шестнадцатеричная форма (по основанию 16) записи, о чем говорит суффикс h. В десятичном виде (по основанию 10) Читать далее

Ввод и вывод


Процессор 8086 поддерживает устройства ввода-вывода двумя способами: с помощью инструкций ввода-вывода и через адреса памяти. Некоторые устройство ввода вывода управляются с помощью портов, которые представляют собой специальные адреса ввода-вывода в отдельном от 1 мегабайта адресном пространстве в 64К (см. Рис. 4.3).

Регистры


В процессоре 8086 имеется несколько быстрых элементов памяти на интегральных схемах, которые называются регистрами. Регистры можно рассматривать, как ячейки памяти, к которым процессор 8086 может обращаться быстрее, чем к обычной памяти, но это только часть особенностей регистров. Каждый из регистров имеет уникальную природу и предоставляет определенные возможности, которые другими регистрами или ячейками памяти не поддерживаются.

Регистр флагов


Этот 16разрядный (16битовый) регистр содержит всю необходимую информацию о состоянии процессора 8086 и результатах последних инструкций (см. Рис. 4.5). 15 0 | | | | | O | D | T | S | Z | | A | P | P | | C | Битовые флаги:

Регистры общего назначения


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

Регистр AX


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

Регистр BX


Регистр BX может использоваться для ссылки на ячейку памяти (указатель). Более подробно мы рассмотрим это в Главе 5 «Основные элементы программы на Ассемблере». Если говорить кратко, то 16битовое значение, записанное в BX, может использоваться в качестве части адреса ячейки памяти, к которой производится доступ. Например, следующий код загружает в AL содержимое адреса памяти 9:

Регистр CX


Специализация регистра CX использование в качестве счетчика. Предположим, мы хотим 10 раз повторить выполнение блока инструкций. Это можно сделать следующим образом: mov cx,10 Begin:

Регистр DX


Регистр DX это единственный регистр, которые может использоваться в качестве указателя адреса вводавывода в инструкциях IN и OUT. Фактически, кроме использования регистра DX нет другого способа адресоваться к портам вводавывода с 256 по 65535. Например, в следующем фрагменте программы в порт 1000 записывается значение 62: mov al,62 mov dx,1000 out dx,al

Регистр SI


Как и регистр BX, регистр SI может использоваться, как указатель на ячейку памяти. Например: mov ax,0 mov ds,ax mov si,20 mov al,[si]

Регистр DI


Регистр DI очень похож на регистр SI в том плане, что его можно использовать в качестве указателя ячейки памяти. При использовании его в строковых инструкциях он имеет также особые свойства. Например: mov ax,0 mov ds,ax mov di,1024

Регистр BP


Как и регистры BX, SI и DI, регистр BP также может использоваться в качестве указателя на ячейку памяти, но здесь есть некоторые отличия. Регистры BX, SI и DI обычно ссылаются на память относительно сегментного регистра DS (или, в случае использования в строковых инструкциях регистра DI, относительно сегментного регистра ES), а регистр BP адресуется к памяти Читать далее

Регистр SP


Регистр SP называется также указателем стека. Это «наименее общий» из регистров общего назначения, поскольку он практически всегда используется для специальной цели обеспечения стека. Стек это область памяти, в которой можно сохранять значения и из которой они могут затем извлекаться по дисциплине «последнийпришелпервыйушел» (FIFO). То есть последнее сохраненное в стеке значение будет первым значением, которое вы Читать далее

Указатель инструкций


Указатель инструкций (регистр IP) всегда содержит смещение в памяти, по которому хранится следующая выполняемая инструкция. Когда выполняется одна инструкция, указатель инструкций перемещается таким образом, чтобы указывать на адрес памяти, где хранится следующая инструкция. Обычно следующей выполняемой инструкцией является инструкция, хранимая по следующему адресу памяти, но некоторые инструкции, такие, как вызовы или переходы, могут привести к Читать далее