Лекции.Орг


Поиск:




Категории:

Астрономия
Биология
География
Другие языки
Интернет
Информатика
История
Культура
Литература
Логика
Математика
Медицина
Механика
Охрана труда
Педагогика
Политика
Право
Психология
Религия
Риторика
Социология
Спорт
Строительство
Технология
Транспорт
Физика
Философия
Финансы
Химия
Экология
Экономика
Электроника

 

 

 

 


Программирование операторов ассемблера




МИНИСТЕРСТВО ОБРАЗОВАНИЯ И НАУКИ РФ

ФГБОУ ВПО

«Воронежский государственный УНИВЕРСИТЕТ

ИНЖЕНЕРНЫХ ТЕХНОЛОГИЙ»

 

ПРОГРАММИРОВАНИЕ С ИСПОЛЬЗОВАНИЕМ

РЕГИСТРОВ МИКРОПРОЦЕССОРА

 

Методические указания и задания к практическим занятиям

И для выполнения РПР

по курсу “Архитектура информационных систем”

 

Для бакалавров, обучающихся

По направлению 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). Регистр флагов не используется на самом деле, как ячейка памяти, вместо этого он служит для контроля за состоянием и управления процессором.

Иначе говоря, другие регистры и память содержат данные, а регистр флагов содержит информацию о соотношении между данными, результатах операций и состоянии процессора в целом.

 





Поделиться с друзьями:


Дата добавления: 2016-11-12; Мы поможем в написании ваших работ!; просмотров: 230 | Нарушение авторских прав


Поиск на сайте:

Лучшие изречения:

Наука — это организованные знания, мудрость — это организованная жизнь. © Иммануил Кант
==> читать все изречения...

2308 - | 2104 -


© 2015-2025 lektsii.org - Контакты - Последнее добавление

Ген: 0.011 с.