МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ
ФГБОУ ВПО
«Воронежский государственный УНИВЕРСИТЕТ
ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ»
ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ
РЕГИСТРОВ МИКРОПРОЦЕССОРА
Методические указания и задания к практическим занятиям
И для выполнения РПР
по курсу “Архитектура информационных систем”
Для бакалавров, обучающихся
По направлению 230400
ВОРОНЕЖ
ПРОГРАММИРОВАНИЕ ОПЕРАТОРОВ АССЕМБЛЕРА
В текстовом редакторе (один из тех редакторов, которые формируют файлы в коде ASCII) введите следующие строки программы:
.MODEL SMALL
.STACK 100h
.DATA
Message DB ‘Привет!’,13,10,’$’
.CODE
mov ax,@Data
mov dx,ax ; установить регистр DS таким
; образом, чтобы он указывал
; на сегмент данных
mov ah,9 ; функция DOS вывода строки
mov dx,OFFSET Message ; ссылка на сообщение Привет!
int 21h ; вывести Привет! на экран
mov ah,4ch ; функция DOS завершения
; программы
int 21h ; завершить программу
END
Набор инструкций процессора представляет собой его язык (язык Ассемблера) и является ориентированной на человека формой набора инструкций процессора (который называется также машинным языком). Ассемблер преобразуется в машинный язык. Он позволяет управлять действиями процессора поэтапно (по операциям) и с максимальной эффективностью. К числу недостатков можно отнести тот факт, что при каждом отдельно взятом действии процессора выполняется совсем немного функций, что отражает ограниченные возможности того, на что в действительности способен процессор. Например, процесс сложения двух длинных целых чисел и сохранения результата в третьем целом значении занимает на языке Си только одну строку:
i = j + k;
а на Ассемблере это потребует шести строк:
mov ax,[j]
mov dx,[j+2]
add ax,[k]
addc dx,[k+2]
mov [i],ax
mov [i+2],dx
Ассемблер позволяет достигать любой части памяти и непосредственно управлять любым устройством ввода-вывода, поскольку программы на Ассемблере могут делать все то, на что способен процессор. С другой стороны, поскольку Ассемблер является языком компьютера, хорошо написанная на Ассемблере программа позволит получить код с наименьшим временем выполнения. Качество выполняемого кода, получаемого в других языках, снижается от того, что приходится выполнять трансляцию с этого языка на машинный язык, а код на языке ассемблера отображается в машинный язык непосредственно, без малейшей потери эффективности.
Процессор может адресоваться к памяти объемом 1 мегабайт (это два в двадцатой степени или 1048576 ячеек памяти, каждая размером 8 битов). Первый байт памяти имеет адрес 0, а последний — адрес 0FFFFFh.
В любой момент программа может считать или изменить содержимое любого из более 1000000 байтов памяти. Например, фрагмент программы:
mov ax,0
mov dx,ax
mov bx,0
mov al,[bx]
загружает содержимое байта по адресу 0 в регистр AL. Здесь не стоит беспокоиться о деталях: на самом деле пространство адресов памяти процессора обеспечивает память для рабочих значений, несколько превышающих 1000000, к которым процессор может получить гибкий, быстрый и оперативный доступ.
Один мегабайт — это память, существенно большая, чем 64 Кб (килобайта, 2 в степени 16 или 65536 байтов). Из одного мегабайта адресного пространства доступно для общего использования только 640 Кб. Остальное адресное пространство предназначено для использования системным программным обеспечением, а также занято памятью, используемой для работы с дисплеем (видеопамять). К тому же, не следует забывать о том, что инструкции, а также данные, хранятся в памяти, поэтому данные и код программы должны помещаться в компьютере в память объемом не более 640 Кб.
В то время как процессор может адресоваться к памяти объемом 1 мегабайт, практически не так просто одновременно получить доступ с более чем 64 Кб памяти. Это связано со специфическим средством, которое называется сегментацией.
Доступ к адресам ввода-вывода можно получить с помощью двух специальных инструкций, IN и OUT, которые больше ни для чего не используются. Например:
out dx,al
посылает содержимое регистра AL в порт ввода-вывода, определяемый регистром DX.
Некоторые устройства ввода-вывода представляют собой устройства с отображаемой памятью. Это означает, что они управляются через обычные адреса памяти, а не адреса ввода-вывода. Особенно это относится к дисплейным адаптерам.
Данное устройство может управляться как с помощью адресов ввода-вывода, так и с помощью адресов отображаемой памяти. Фактически, при работе с дисплейными адаптерами для некоторых функций используются инструкции ввода-вывода, а для других — адреса памяти.
РЕГИСТРЫ
В процессоре имеется несколько быстрых элементов памяти на интегральных схемах, которые называются регистрами. Регистры можно рассматривать, как ячейки памяти, к которым процессор может обращаться быстрее, чем к обычной памяти, но это только часть особенностей регистров. Каждый из регистров имеет уникальную природу и предоставляет определенные возможности, которые другими регистрами или ячейками памяти не поддерживаются.
Регистры разбиваются на четыре категории: регистры флагов,
регистры общего назначения, указатель инструкций и сегментные регистры.
Регистр флагов
Этот 16-разрядный регистр содержит всю необходимую информацию о состоянии процессора 8086 и результатах последних инструкций.
Регистр флагов не считывается и не модифицируется непосредственно. Вместо этого регистр флагов управляется в общем случае с помощью специальных инструкций (таких, как CLD, STI и CMC), а также с помощью арифметических и логических инструкций, модифицирующих отдельные флаги. И наоборот, содержимое отдельных битов регистра флагов влияет на выполнение инструкций (например, JZ, RCR и MOVSB). Регистр флагов не используется на самом деле, как ячейка памяти, вместо этого он служит для контроля за состоянием и управления процессором.
Иначе говоря, другие регистры и память содержат данные, а регистр флагов содержит информацию о соотношении между данными, результатах операций и состоянии процессора в целом.
Статьи к прочтению:
Урок №2. Машинные языки
Похожие статьи:
-
Операторы языка программирования
Лабораторная работа №2. Проектирование программ линейной структуры Цель и порядок работы Цель работы – изучить структуру программы на языке C++,…
-
Многоуровневая схема программирования
Машинный уровень и микропрограммный уровень В ЭВМ любая информация представляется и хранится в виде двоичных слов. В соответствии с этим и отдельные…