Сист. прогр. Ч1 (Методические указания к выполнению лабораторных работ по СПО), страница 6

2018-01-12СтудИзба

Описание файла

Файл "Сист. прогр. Ч1" внутри архива находится в следующих папках: Методические указания к выполнению лабораторных работ по СПО, сист прогр лабы. Документ из архива "Методические указания к выполнению лабораторных работ по СПО", который расположен в категории "". Всё это находится в предмете "операционные системы" из 7 семестр, которые можно найти в файловом архиве РТУ МИРЭА. Не смотря на прямую связь этого архива с РТУ МИРЭА, его также можно найти и в других разделах. Архив можно найти в разделе "книги и методические указания", в предмете "операционные системы" в общих файлах.

Онлайн просмотр документа "Сист. прогр. Ч1"

Текст 6 страницы из документа "Сист. прогр. Ч1"

OOOOOH 00015H 0016Н CODESG

00020Н 0007FH 0060Н STACKSG

Для ответа на четвертый запрос нажмите. Return, что укажет компоновщику LINK принять остальные параметры по умолчанию. Описание библиотечных средств можно найти в руководстве по DOS.

На данном этапе единственной возможной ошибкой может быть указание неправильных имен файлов. Исправить это можно только перезапуском программы LINK.

ВЫПОЛНЕНИЕ ПРОГРАММЫ

После ассемблирования и компоновки программы можно (наконец-то!) выполнить ее. Если ЕХЕ-файл находится на дисководе В, то выполнить ее можно командой:

B:EXASM1 .EXE или B: EXASM1

DOS предполагает, что файл имеет тип ЕХЕ (или СОМ), и загружает файл для выполнения. Но так как наша программа не вырабатывает видимых результатов, выполним ее трассировкой под отладчиком DEBUG. Введите

DEBUG B:EXASM1.EXE

В результате DOS загрузит программу DEBUG, которая, в свою очередь, загрузит требуемый ЕХЕ-модуль. После этого отладчик выдаст дефис (-) в качестве приглашения. Для просмотра сегмента стека введите

D SS:0

Эту область легко узнать по 12-кратному дублированию константы STACK.SEG.

Для просмотра сегмента кода введите

D СS:0

Сравните машинный код с листингом ассемблера:

1E2BC050B823010525008BD803 ...

Непосредственные операнды, приведенные в листинге ассемблирования как 0123 и 0025, в памяти представлены в виде 2301 и 2500 соответственно. В данном случае листинг ассемблирования не вполне соответствует машинному коду. Все двухбайтовые адреса (слова) и непосредственные операнды в машинном коде хранятся в обратном порядке.

Введите R для, просмотра содержимого регистров и выполните программу с помощью команды Т (трассировка). Обратите внимание на воздействие двух команд PUSH на стек - в вершине стека теперь находится содержимое регистра DS и нулевой адрес.

В процессе пошагового выполнения программы обратите внимание на содержимое регистров. Когда вы дойдете до команды RET, можно ввести Q (Quit - выход) для завершения работы отладчика.

Используя команду DOS DIR, можно проверить наличие ваших файлов на диске:

DIR B:EXASM1>

В результате на экране появится следующие имена файлов: EXASM1 .ВАК. (если для корректировки EXASM1 .ASM использовался редактор EDLIN), EXASM1 .ASM, EXASM1 .OBJ, EXASM1.LST, EXASM1.EXE и EXASM1.CRF. Последовательность этих файлов может быть иной в зависимости от того, что уже находится на диске.

Очевидно, что разработка ряда программ приведет к занятию дискового пространства. Для проверки оставшегося свободного места на диске полезно использовать команду DOS CHKDSK. Для удаления OBJ-, CRF-, ВАК.- и LST-файлов с диска следует использовать команду ERASE (или DEL):

ERASE B:EXASM1.OBJ, ...

Следует оставить (сохранить) АSМ-файл для последующих изменений и ЕХЕ-файл для выполнения.

В следующем разделе представлено определение данных в сегменте данных. Позже будет описана таблица перекрестных ссылок.

4. Определение данных

Цель: ознакомить с методами определения констант и рабочих полей в ассемблерной программе.

ВВЕДЕНИЕ

Сегмент данных предназначен для определения констант, рабочих полей и областей для ввода-вывода. В соответствии с имеющимися директивами в ассемблере разрешено определение данных различной длины: например, директива DB определяет байт, а директива DW определяет слово. Элемент данных может содержать непосредственное значение или константу, определенную как символьная строка или как числовое значение.

Другой способ определения константы - непосредственное
значение, т.е. значение, указанное прямо в ассемблерной команде,
например

MOV AL,20H

В этом случае шестнадцатеричное число 20 становится частью машинного объектного кода. Непосредственное значение ограничено одним байтом или одним словом, но там, где его можно применять, оно более эффективно, чем использование константы.

ДИРЕКТИВЫ ОПРЕДЕЛЕНИЯ ДАННЫХ

Ассемблер обеспечивает два способа определения данных: во-первых, через указание длины данных и, во-вторых, по их содержимому. Рассмотрим основной формат определения данных:

[имя] Dn выражение

  • Имя элемента данных не обязательно (это указывается квадратными скобками), но если в программе имеются ссылки на некоторый элемент, то это делается посредством имени. Для определения элементов данных имеются следующие директивы: DB (байт), DW (слово), DD (двойное слово), DQ (учетверенное слово) и DT (десять байт).

  • Выражение может содержать константу, например

FLD1 DB 25,

или знак вопроса для неопределенного значения, например
FLDB DB ?

Выражение может содержать несколько констант, разделенных запятыми и ограниченных только длиной строки:

FLD3 DB 11, 12, 13, 14, 15, 16, ...

Ассемблер определяет эти константы в виде последовательности смежных байтов. Ссылка по имени FLD3 указывает на первую константу, 11, по FLD3 + 1 - на вторую12 (FLD3 можно представить как FLD3 + 0). Например, команда

MOV AL,FLD3+3

загружает в регистр AL значение 14 (0ЕН). Выражение допускает
также повторение константы в следующем формате:

[имя] Dn число-повторений DUP (выражение) ...

Следующие три примера иллюстрируют повторение:

DW 10 DUP(?) ;Десять неопределенных слов

DB 5 DUP(14) ;Пять байт, содержащих 0ЕН

DB 3 DUP(4 DUP(8)) ;Двенадцать восьмерок

В третьем примере сначала генерируются четыре копии десятичной 8 (8888), затем это значение повторяется три раза, давая в результате двенадцать восьмерок.

Выражение может содержать символьную строку или числовую константу.

Символьная строка используется для описания данных, таких, как, например, имена людей или заголовки страниц. Содержимое строки отмечается одиночными кавычками, например ‘P’, или двойными кавычками – “PC”. Ассемблер переводит символьные строки в объектный код в обычном формате ASCII.

Символьная строка определяется только директивой DB, в которой указывается более двух символов в нормальной последовательности слева направо. Директива DB представляет единственно возможный формат для определения символьных данных.

Числовые константы применяются для арифметических значений и для адресов памяти. Для описания числовой константы кавычки не ставятся. Ассемблер преобразует все числовые константы в шестнадцатеричные и записывает байты в объектном коде в обратной последовательности - справа налево.

Page 60,132

TITLE EXDEF (EXE)

0000 DATASG SEGMENT PARA ‘Data’

; Определение байта DB

0000 ?? FLD1DB DB ? ; Не инициализировано

0001 50 65 72 73 6F 6E FLD2DB DB ‘Personal Computer’;Символьная строка

61 6C 20 43 6F 6D

70 75 74 65 72

0012 20 FLD3DB DB 32 ; Десятичная константа

0013 20 FLD4DB DB 20H ; Шест. константа

0014 20 FLD5DB DB 01011001B ; Двоичная константа

0015 01 4A 41 4E 02 46 FLD6DB DB 01,’JAN’,02,’FEB’,03,’MAR’

45 42 03 4D 41 52 ; Таблица

0021 33 32 36 35 34 FLD7DB DB ‘32654’ ;Символьное число

0026 0A [00] FLD8DB DB 10 DUP(0) ; Десять нулей

;Определение слова DW

0030 FFF0 FLD1DW DW 0FFF0H ; Шест. константа

0032 0059 FLD2DW DW 01011001H ; Двоичная константа

0034 0021 R FLD3DW DW

0036 0003 0004 0007 FLD4DW DW 3,4,7,8,9 ; Пять констант

0008 0009

0040 05 [0000] FLD5DW DW 5 DUP (0) ; Пять нулей

;Определение двойного слова DD

004A ???????? FLD1DD DD ? ; Не инициализировано

004E 43 50 00 00 FLD2DD DD ‘PC’ ;Символьная строка

0052 3C 7F 00 00 FLD3DD DD 32572 ; Десятичное значение

0056 11 00 00 00 FLD4DD DD FLD3DB-FLD2DB ;Разность адресов

005A 0E 00 00 00 31 00 FLD5DD DD 14,49 ; Две константы

00 00

;Определение учетверенного слова DQ

0062 ???????????????? FLD1DQ DQ ? ; Не инициализировано

006A 47 4D 00 00 00 00 FLD2Q DQ 04D47H ; Шест. константа

00 00

0072 3C 7F 00 00 00 00 FLD3DQ DQ 32572 ; Десятичная константа

00 00

;Определение десяти байт DT

007A ????????????????? FLD1DT DT ? ; Не инициализировано

??

0084 43 50 00 00 00 00 FLD2DT DT ‘PC’ ;Символьная строка

00 00 00 00

008E DATASG ENDS

END

Segments and Groups

N a m e Size Align Combine Class

DATASG………………………………… 008E PARA NONE ‘DATA’

Symbols:

N a m e Type Value Attr

FLD1DB………………….L BYTE 0000 DATASG

FLD1DD………………….L DWORD 004A DATASG

FLD1DQ………………….L QWORD 0062 DATASG

FLD1DT………………….L TBYTE 007A DATASG

FLD1DW ……………….L WORD 0030 DATASG

FLD2DB………………….L BYTE 0001 DATASG

FLD2DD………………….L DWORD 004E DATASG

FLD2DQ………………….L QWORD 006A DATASG

FLD2DT………………….L TBYTE 0084 DATASG

FLD2DW ……………….L WORD 0032 DATASG

FLD3DB………………….L BYTE 0012 DATASG

FLD3DD………………….L DWORD 0052 DATASG

FLD3DQ………………….L QWORD 0072 DATASG

FLD3DW ……………….L WORD 0034 DATASG

FLD4DB………………….L BYTE 0013 DATASG

FLD4DD………………….L DWORD 0056 DATASG

FLD4DW ……………….L WORD 0036 DATASG

FLD5DB………………….L BYTE 0014 DATASG

FLD5DD………………….L DWORD 005A DATASG

FLD5DW ……………….L WORD 0040 DATASG Length=0005

FLD6DB………………….L BYTE 0015 DATASG

FLD7DB………………….L BYTE 0021 DATASG

FLD8DB………………….L BYTE 0026 DATASG Length=000A

Рис.4.1. Определение символьных строк и числовых величин



Десятичный формат. Десятичный формат допускает десятичные цифры от 0 до 9 и обозначается последней буквой D, которую можно не указывать, например 125 или 125D. Несмотря на то, что ассемблер позволяет кодирование в десятичном формате, он преобразует эти значения в шестнадцатеричный объектный код. Например, десятичное число 125 преобразуется в 7DH.

Шестнадцатеричный формат. Шестнадцатеричный формат допускает цифры от 0 до F и обозначается в конце буквой Н. Так как ассемблер полагает, что с буквы начинаются идентификаторы, то первой цифрой шестнадцатеричной константы должна быть цифра от 0 до 9. Например, 2ЕН или 0FFFH ассемблер преобразует соответственно в 2Е и FF0F (байты во втором случае записываются в объектный код в обратной последовательности).

Двоичный формат. Двоичный формат допускает двоичные цифры 0 и 1 и обозначается в конце буквой В. Двоичный формат обычно используется для более четкого представления битовых значений в логических командах AND, OR, XOR и TEST. Десятичное 12, шестнадцатиричное С и двоичное 1100В генерируют один и тот же код: шестнадцатеричное 0СH или двоичное 00001100 в зависимости от того, как вы рассматриваете содержимое байта.

Восьмиричный формат. Восьмиричный формат допускает восьмиричные цифры от 0 до 7 и обозначается последней буквой Q или О, например 253Q. На сегодня восьмиричный формат используется весьма редко.

Десятичный формат с плавающей точкой. Этот формат поддерживается только ассемблером MASM.

При записи символьных и числовых констант следует помнить, что,например, символьная константа, определенная как DB ‘12’, представляет символы ASCII и генерирует 3132Н, а числовая константа, определенная как DB 12, представляет двоичное число и генерирует 0СН.

ДИРЕКТИВА ОПРЕДЕЛЕНИЯ БАЙТА (DB)

Из различных директив, определяющих элементы данных, чаще используется директива DB (определить байт). Символьное выражение в директиве DB может содержать строку символов любой длины. Объектный код показывает символы кода ASCII для каждого байта. Шестнадцатеричное значение 20 представляет символ пробела.

Числовое выражение в директиве DB может содержать одну однобайтовую константу или более. Один байт выражается двумя шестнадцатеричными цифрами. Наибольшее положительное шестнадцатеричное число в одном байте - это 7F, все "большие" числа от 80 до FF представляют отрицательные значения. В десятичном счислении эти пределы выражаются числами +127 и -128.

Директива DW определяет элементы, которые имеют длину в одно слово (два байта). Символьное выражение в DW ограничено двумя символами, которые ассемблер представляет в объектном коде так, что, например, ‘PC’ становится ‘СР’. Для определения символьных строк директива DW имеет ограниченное применение.

Числовое выражение в DW может содержать одну или более двухбайтовую константу. Два байта представляются четырьмя шестнадцатеричными цифрами. Наибольшее положительное шестнадцатеричное число в двух байтах - это 7FFF; все "большие" числа от 8000 до FFFF представляют отрицательные значения. В десятичном исчислении эти пределы выражаются числами + 32767 и -32768.

Для форматов директив DW, DD и DQ ассемблер преобразует константы в шестнадцатеричный объектный код, но записывает его в обратной последовательности. Таким образом, десятичное значение 12345 преобразуется в 3039Н, но записывается в объектном коде как 3930.

ДИРЕКТИВА ОПРЕДЕЛЕНИЯ ДВОЙНОГО СЛОВА (DD)

Директива DD определяет элементы, которые имеют длину в два слова (четыре байта). Числовое. выражение может содержать одну константу или более, каждая, из которых имеет максимально четыре байта (восемь шестнадцатеричных цифр). Наибольшее положительное шестнадцатеричное число в четырех байтах - это 7FFFFFFF; все "большие" числа от 80000000 до FFFFFFFF представляют отрицательные значения. В десятичном исчислении эти пределы выражаются числами +2147483647 и -2147483648.

Ассемблер преобразует все числовые константы в директиве DD в шестнадцатеричное представление, но записывает объектный код в обратной последовательности. Таким образом, десятичное значение 12345 преобразуется в 00003039Н, но записывается в объектном коде как 39300000.

Символьное выражение директивы DD ограничено двумя символами. Ассемблер преобразует символы и выравнивает их слева в четырехбайтовом двойном слове.

ДИРЕКТИВА ОПРЕДЕЛЕНИЯ ПОЛЯ ИЗ ЧЕТЫРЕХ СЛОВ (DQ)

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

1152921504606846976

Ассемблер преобразует все числовые константы в директиве DQ в шестнадцатеричные представления, но записывает объектные коды в обратной последовательности, как и в директивах DD и DW.

Обработка ассемблером символьных строк в директиве DQ аналогична обработке директив DO и DW.

ДИРЕКТИВА ОПРЕДЕЛЕНИЯ ДЕСЯТИ БАЙТ (DT)

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5224
Авторов
на СтудИзбе
426
Средний доход
с одного платного файла
Обучение Подробнее