- •Федеральное агентство по образованию
- •В.Н. ЛОКТЮХИН
- •Рязань 2008
- •Печатается по решению редакционно-издательского совета Государственного образовательного учреждения высшего профессионального образования «Рязанский государственный университет имени С.А. Есенина» в соответствии с планом изданий на 2008 год.
- •ВВЕДЕНИЕ
- •1.1. Системы счисления, применяемые в ЭВМ
- •1. Двоичная система счисления
- •2. Шестнадцатеричная система счисления
- •1.5. Кодирование алфавитно-цифровой информации
- •Представление чисел в ЭВМ
- •Форматы (формы представления) числовых данных в МП
- •3. Представление многобайтовых двоичных чисел
- •4. Представление чисел с плавающей точкой (ПТ)
- •1.7.2. Сложение двоичных чисел в ЭВМ
- •Рис. 2.2. Формат регистра признаков
- •2.1.2. Модели доступа к памяти в реальном и защищенном режимах работы процессора, поддержка многозадачности
- •Формат команды и способ адресации как элементы программной архитектуры и ассемблера
- •3. ОСНОВЫ РАЗРАБОТКИ И ОТЛАДКИ ПРОГРАММ НА ЯЗЫКЕ АССЕМБЛЕРА IBM PC
- •В таблице 3.1 приведены примеры записи в программах директив ассемблера tasm.exe фирмы Borland.
- •Таблица 3.1
- •Примеры записи директив ассемблера tasm
- •Пример 3.4
- •Пример 3.5
- •.MODEL
- •3.3.1. Разновидности программного обеспечения для разработки программ на языке ассемблера
- •3.3.3. Порядок ввода и отладки программы (пример 3.4) с исполняемым com-модулем
- •Создание исполняемого модуля
- •Порядок разработки программы
- •Пример 3.6
- •Ассемблирование
- •Создание исполняемого модуля
- •Выполнение и отладка программы
- •3.8. Программирование обработки цепочек данных
- •ПРИЛОЖЕНИЯ
- •Приложение 1
- •Варианты заданий к практическим занятиям по представлению данных и выполнению арифметико-логических операций в ЭВМ
- •Приложение 2
- •Приложение 3
- •Приложение 4
- •Приложение 6
- •Таблица сложения 16-ричных цифр (символов)
- •Приложение 8
- •Базовая система команд МП 80Х86 (или 8086)
- •ОГЛАВЛЕНИЕ
- •ВВЕДЕНИЕ………………………...………...……………………......
- •Системы счисления, применяемые в ЭВМ……...………………
- •Перевод из десятичной в q-ичную систему счисления.....……
- •Перевод из q-ичной в десятичную систему счисления….....…
- •ПРИНЦИПЫ ДОСТУПА К ПАМЯТИ. ФОРМАТЫ КОМАНД И РЕЖИМЫ АДРЕСАЦИИ В МП 80Х86…………………...….....
- •Регистры и модели доступа к памяти. Поддержка многозадачности в защищенном режиме работы МП………..
- •Приложение 1. Варианты практических заданий по представлению данных и выполнению арифметико-логических операций в ЭВМ..
- •Приложение 5. Варианты заданий по обработке цепочек…………..
- •Приложение 6. Таблица сложения 16-ричных цифр (символов)……
- •Приложение 7. Темы практических занятий и лабораторных работ
- •Приложение 8. Базовая система команд МП 80х86 (или 8086)….....
- •архитектура
- •Книга 2
3.2. Разработка программ на языке ассемблера для генерирования исполняемых соm-модулей
Далее приведены два примера 3.4 и 3.5, иллюстрирующие разработку программ на языке ассемблера микропроцессора 80х86 для генерирования на их основе исполняемых модулей с расширением .соm. Каждая из этих программ вычисляет выражение (2.1).
В приведенных программах директива .MODEL tiny задает модель памяти как один сегмент кодов размером 64 Кбайт. Для его задания используется упрощенная сегментная директива .CODE. Отметим, что при генерировании исполняемого модуля типа .соm программа и данные в памяти задаются в одном кодовом сегменте, а типа .ехе – в отдельных сегментах: кода и данных.
Пример 3.4
;Программа вычисления выражения M = K + N – R + 120H ;для исполняемого модуля типа .com
;Операнды-слова k, r, m размещены в памяти, начиная с адреса 500h,
;n – в регистре DX |
|
||
|
.MODEL |
tiny |
;Программа и данные размещены |
|
|
|
;в сегменте кодов объемом 64 KБ |
|
.CODE |
|
;Начало кодового сегмента |
;Размещение данных с адреса 500h |
|||
|
org |
500h |
|
k |
dw |
+60h |
|
r |
dw |
-10h |
|
m |
dw |
0 |
|
;Команды программы с адреса 100h |
|||
|
org |
100h |
;Метка начала программы |
|
begin: |
|
|
|
mov |
ax,r |
; аx ← r |
|
sub |
dx,ax |
; dx ← dx – r |
|
mov |
ax,k |
; ax ← k |
|
add |
ax,dx |
; ax ← ax + dx |
|
add |
ax,120h |
; ax ← ax +120 |
|
mov |
m,ax |
;Передать результат m в память |
|
mov |
ah,4ch |
;Функция DOS выхода |
|
int |
21h |
;из программы |
|
END |
begin |
;Конец программы |
56
В программах для указания начального адреса данных 500h используется директива org 500h. Операнды в формате байта или слова задаются после org 500h с помощью директив db или dw соответственно. Директива END begin указывает транслятору на конец программы.
Пример 3.5
;Программа вычисления выражения M = K – R + N + 120H
;для исполняемого модуля типа .com для случая базовой адресации ;данных, когда K, R, N, M размещены в памяти с адреса 500h
|
.MODEL |
tiny |
;Программа и данные размещены в |
|
|
|
;сегменте кодов размером 64 Kбайт |
|
.CODE |
|
;Начало кодового сегмента |
;Размещение данных с адреса 500h |
|||
|
org |
500h |
|
k |
dw |
+4h |
|
r |
dw |
-1h |
|
n |
dw |
+2h |
|
m |
dw |
0 |
|
;Команды программы с адреса 100h |
|||
|
org |
100h |
;Метка начала программы |
|
begin: |
|
|
|
mov |
bx,offset k |
;Загрузить в bx адрес операнда k |
|
mov |
ax,[bx] |
;Загрузить в ax операнд k |
|
sub |
ax,[bx+2] |
;Получить в ax разность k – r |
|
add |
ax,[bx+4] |
;ax ← ax + n |
|
add |
ax,120h |
;ax ← ax + 120h |
|
mov |
[bx+6],ax |
;Загрузить результат m в память |
|
mov |
ah,4ch |
;Функция DOS выхода |
|
int |
21h |
;из программы |
|
END |
begin |
;Конец программы |
Комментарии к программе (пример 3.4)
1. Порядок разработки программы на языке ассемблера рассмотрен в п. 2.5. При выполнении его четвертого этапа составляется программа вычисления заданного выражения на языке ассемблера как исходная форма для автоматического получения машинных кодов команд путем ее трансляции (ассемблирования). Для упрощения разработки программы (пример 3.4) целесообразно воспользоваться последовательностью команд МП, представленной в алгоритме (рис. 2.12) вычисления выражения 2.2. При этом необходимо приведенные в мнемониках ко-
57
