- •Тула 2005
- •ЛАБОРАТОРНАЯ РАБОТА №1
- •ОПЕРАЦИОННЫЕ ОБОЛОЧКИ ПЕРСОНАЛЬНЫХ КОМПЬЮТЕРОВ
- •1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ
- •2. ОСНОВНЫЕ ТЕОРЕТИЧЕСКИЕ СВЕДЕНИЯ
- •3. ОБОРУДОВАНИЕ И ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ
- •4. ЗАДАНИЕ НА РАБОТУ
- •5. ПОРЯДОК ВЫПОЛНЕНИЯ РАБОТЫ
- •6. СОДЕРЖАНИЕ И ОФОРМЛЕНИЕ ОТЧЕТА
- •7. КОНТРОЛЬНЫЕ ЗАДАНИЯ
- •8. БИБЛИОГРАФИЧЕСКИЙ СПИСОК
- •1. ЦЕЛЬ И ЗАДАЧИ РАБОТЫ
- •COMMAND /Y /C [диск:путь\]имя_командного_файла [параметры]
- •>C:\BATCH\LX BOOK_1.TXT BOOK_2.TXT BOOK_3.TXT
- •CALL [диск:путь\]имя_командного_файла [параметры]
- •TYPE C:\REPORT.TXT | MORE
- •MORE < C:\REPORT.TXT
- •FOR %%переменная IN (набор) DO команда
- •FOR %%F IN (*.TXT *.LST) DO COPY %%F PRN
- •FOR %%V IN (COPY ERASE) DO %%V *.* C:\BACKUP
- •GOTO [:]метка
- •PAUSE [текст]
- •REM [текст]
- •DIR > FILELIST.TXT
- •process_1 | process_2 | … process_N
- •ECHO Y | process
- •IF EXIST Z:\*.* SET DRIVE=Z: | GOTO FORWARD
- •COPY CON имя_файла
- •ECHO Esc[0;60;"DIR";13p
- •ВЕ команда [аргументы] [переключатели]
- •ВЕ файл ,
- •команда [аргументы] [переключатели]
- •BEEP [/Dn] [/Fm] [/Rp] [/Wq]
- •Таблица 1
- •Таблица частот (в Гц)
- •Нота
- •Октава 2
- •Октава 4
- •Соль
- •DELAY n
- •PRINTCHAR символ n [атрибуты]
- •TASM[.BAT] ONE TWO
- •Start – загрузить в оперативную память драйвер и активизировать электронный диск;
- •Drive Letter – назначить буквенный идентификатор электронному диску (от C: до Z:). Если выбранный идентификатор электронного диска окажется назначенным какому-либо иному устройству памяти, то в процессе активизации драйвера возникнет аварийная ситуация;
- •Start Driver at Boot – активизировать драйвер в процессе загрузки операционной системы;
- •AutoSave – данный элемент управления позволяет определить интервал времени в секундах между процедурами периодического автоматического сохранения образа электронного диска на жесткий магнитный диск. Эта процедура необходима для повышения надежности хранения информации на электронном диске;
- •Disk Label – назначить метку для электронного диска (не более 11 буквенно-цифровых символов);
- •Save Disk Image On Shutdown – определить автоматическое сохранение образа электронного диска на жестком магнитный диске при завершении работы операционной системы. Необходимо отметить, что процедуры сохранения и восстановления содержимого сжатого диска большой емкости (порядка 64 Мбайт и более) требуют значительных затрат времени при старте операционной системы и завершении ее работы;
- •Save Settings – сохранить параметры работы драйвера электронного диска;
- •MASM /la /zi LABRAB, , ,NUL
- •Рис. 2. Схема работы компоновщика с файлами
- •LINK LABRAB,LABRAB;
- •Параметры программы ML имеют следующий смысл:
- •ML /AT LABRAB.ASM /link
- •Система программирования Turbo Assembler является практически полным функциональным аналогом системы программирования Microsoft Assembler. Основными программными компонентами системы программирования Turbo Assembler являются следующие:
- •TASM /zi LABRAB, , ,NUL
- •TLINK /x /t LABRAB
- •2.4. Пример программы на языке Turbo Assembler
- •0005 BA 0000 R mov dx, OFFSET Greet ,
- •Таблица 1
- •Суффиксы машинного кода
- •Суффикс
- •Назначение
- •Будет скорректировано смещение
- •Будут скорректированы смещение и сегмент
- •Будет скорректировано смещение внешнего символа
- •11 0000 B8 0000s mov ax, @DATA
96
В начале протокола присутствуют наименование и версия транслятора, время и дата трансляции программы, идентификатор исходного программного файла. Если в процессе компиляции программы возникнут ошибки или предупреждения, то соответствующие сообщения будут вставлены в протокол трансляции сразу же после строки с ошибкой.
Каждая строка листинга компилятора Microsoft Assembler имеет следующий формат:
<смещение><машинный_код><исходный_код> ,
где смещение – смещение строки относительно начала соответствующего сегмента; машинный_код – результат преобразования исходного кода в машинные команды (или шестнадцатеричный код команды); исходный_код – соответствующая ассемблерная строка исходного файла.
Рассмотрим одну из строк листинга:
0005 BA 0000 R mov dx, OFFSET Greet ,
где 0005 – смещение команды в сегменте кода; BA 0000 R – машинный код команды mov dx, OFFSET Greet, который содержит 3 байта (BA 00 00).
Каждая следующая машинная команда смещается в памяти компьютера на длину предыдущей команды. Например, смещение команды mov ds, ax равно 0003, поскольку длина предыдущей команды mov ax, DATA составляет 3 байта.
В конце машинного кода может присутствовать суффикс – в приведенном примере это суффикс R. Данный суффикс означает, что стоящее перед ним значение (смещение строки символов Greet) будет в дальнейшем скорректировано. Список возможных суффиксов и их назначение приведены в табл. 1.
Таблица 1
|
Суффиксы машинного кода |
Суффикс |
Назначение |
|
|
R/r |
Будет скорректировано смещение |
S/s |
Будет скорректирован сегмент |
SR/sr |
Будут скорректированы смещение и сегмент |
E/e |
Будет скорректировано смещение внешнего символа |
SE/se |
Будут скорректированы смещение и сегмент внешнего символа |
SO/so |
Будет скорректирован сегмент внешнего символа |
+ |
Ассемблерный код продолжается в следующей строке |
Во второй части протокола трансляции присутствуют две таблицы. Первая из них (Segments and Groups) определяет используемые в
97
исходной программе сегменты, а вторая – используемые метки. Первая таблица представляет собой список групп и сегментов. Каждая ее строка содержит следующие данные:
–идентификатор группы и сегмента (Name);
–размер данных в сегменте (Size);
–размер сегмента (Length);
–тип выравнивания сегмента (Align);
–тип объединения одноименных сегментов в группу (Combine);
–класс сегментов (Class).
Приведем пример описания сегмента:
Stack_ 16 Bit 0100 Para Stack
Здесь описывается сегмент стека с идентификатором Stack_. Размер данных в этом сегменте 16 бит, размер сегмента 10016 или 25610 байт, заданы выравнивание сегмента в памяти компьютера по границе параграфа (Para) (один параграф равен 16 байт), тип объединения и класс сегмента Stack.
Все метки во второй таблице (Symbols) перечислены в алфавитном порядке. Для каждой метки указаны ее тип (Type), значение (Value) и атрибут
(Attr).
В конце протокола трансляции указывается количество обнаруженных в программе предупреждений (Warnings) и ошибок (Errors).
2.6. Пример протокола трансляции программы (файла листинга) в системе программирования Turbo Assembler
Структура протокола трансляции программы в системе программирования Turbo Assembler в основном соответствует структуре протокола трансляции в системе программирования Microsoft Assembler. Приведем пример листинга для программы, показанной в п. 2.4.
Turbo Assembler |
Version 4.0 |
19/10/03 12:15:35 |
Page 1 |
|||||
example.asm |
|
|
|
|
|
|
||
1 |
|
|
|
|
; Пример программы |
на языке Турбо Ассемблер |
||
2 |
0000 |
|
|
|
.MODEL small ; Объявление модели памяти |
|||
3 |
|
|
|
|||||
4 |
0000 |
|
|
|
.STACK 100h ; Стек размером 256 байт |
|||
5 |
0000 |
48 |
|
|
.DATA |
Greet DB 'Hello world!',13,10,'$' |
||
6 |
0000 |
65 6C 6C 6F 20 77+ |
||||||
7 |
6F 72 6C 64 21 0D |
0A+ |
|
|
|
|||
8 |
24 |
|
|
|
.CODE |
|
|
|
9 |
000F |
|
|
|
|
|
|
|
10 |
0000 |
B8 |
0000s |
Begin: |
|
Загрузка адреса сегмента в |
||
11 |
0000 |
mov ax, @DATA ; |
||||||
регистр DS |
8E |
D8 |
|
mov ds, ax |
|
|
||
12 |
0003 |
|
|
|
||||
13 |
0005 |
BA 0000r |
mov dx, OFFSET Greet |
|
||||
14 |
0008 |
B4 |
09 |
|
mov ah, 9 |
|
|