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) всегда содержит смещение в памяти, по которому хранится следующая выполняемая инструкция. Когда выполняется одна инструкция, указатель инструкций перемещается таким образом, чтобы указывать на адрес памяти, где хранится следующая инструкция. Обычно следующей выполняемой инструкцией является инструкция, хранимая по следующему адресу памяти, но некоторые инструкции, такие, как вызовы или переходы, могут привести к Читать далее

Сегментные регистры


Теперь мы подошли к наиболее необычному аспекту процессора 8086 сегментации памяти. Основной предпосылкой сегментации является следующее: процессор 8086 может адресоваться к 1 мегабайту памяти. Для адресации ко всем ячейкам адресного пространства в 1 мегабайт необходимы 20разрядные сегментные регистры. Однако процессор 8086 использует только 16разрядные указатели на ячейки памяти. Вспомним, например, что для ссылки на память Читать далее

Регистры


Регистр CS Регистр CS указывает на начало блока памяти объемом 64К, или сегмент кода, в котором находится следующая выполняемая инструкция. Следующая инструкция, которую нужно выполнить, находится по смещению, определяемому в сегменте кода регистром IP, то есть на нее указывает адрес (в форме «сегмент:смещение») CS:IP. Процессор 8086 никогда не может извлечь инструкцию из сегмента, отличного от Читать далее

Регистр SS


Регистр SS указывает на начало сегмента стека, которые представляет собой блок памяти объемом 64К, в котором находится стек. Все инструкции, которые неявно используют регистр SP (включая занесение в стек, извлечение из стека, вызовы и возвраты управления), работают с сегментом стека, так как только регистр SP может использоваться для адресации памяти в сегменте стека.

Набор инструкций процессора 8086


Для программиста ключевым ресурсом процессора 8086 является набор инструкций. Как мы уже обсуждали ранее, набор инструкций включает в себя все действия, которые программист может заставить выполнить процессор 8086. Полный набор инструкций Турбо Ассемблера приведен в Таблице 4.1.

Компьютеры IBM PC и XT


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

Устройства ввода и вывода


Во всех компьютерах IBM PC имеется клавиатура, дисплейный адаптер и монитор, а также дисковод на гибком диске. Часто также имеются такие устройство, как модемы, принтеры, «мышь» и жесткие диски. Каждое из этих устройств управляется с помощью весьма сложной последовательности обращений к портам вводавывода или памяти (или к тому и другому). Например, выбор нового видеорежима на Читать далее

Системное программное обеспечение для семейства IBM PC


Системное программное обеспечение это такое программное обеспечение, которое служит для управления и используется в качестве промежуточного уровня между прикладным программным обеспечением (например, Турбо Ассемблером или Quattro) и аппаратным обеспечением вашего компьютера (см. Рис. 4.9).

Операционная система DOS


Операционная система DOS (известная также, как PCDOS или MSDOS) это программа, которая управляет вашим компьютером с момента считывания им диска после включения питания и пока вы его не выключите. DOS занимает часть из 640К доступной оперативной памяти, но это малая плата за те трудности, с которыми пришлось бы столкнуться при ее отсутствии. DOS выводит на Читать далее

Получение символов с клавиатуры


Ввод информации с клавиатуры один из основных способов взаимодействия с компьютером IBM PC. DOS обеспечивает ряд функций, с помощью которых программа на ассемблере может обрабатывать нажатия клавиш. Мы обсудим только часть из них.

Вывод символов на экран


Если нажатия клавиш означают взаимодействие пользователя с программным обеспечением, то экран является дополнением. IBM PC оснащаются дисплеями различных типов, начиная от цветного текстового до графического с высоким разрешением, но в данный момент мы рассмотрим только вывод символов.