Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Распределение часов по семестрам и видам занятийСтр 1 из 12Следующая ⇒
Распределение часов по семестрам и видам занятий Дисциплина «Системное программное обеспечение» изучается в 5 семестре. Самостоятельная работа (112 часов) студентов заключается в подготовке к лабораторным работам (76 часов) и подготовке к аттестациям и зачету (36 часов).
Теоретический материал К лабораторной работе № 1. Основные команды UNIX Команды по работе с текстом В операционной системе UNIX большинство информации хранится в текстовом виде. Поэтому команды по обработке текстовой информации играют очень важную роль в этой операционной системе. echo Познакомимся еще с одной командой, аналог котоpой имеется в DOS-системах. Это команда echo (эхо). Она имеет фоpмат: echo [-n] [arg ...]Команда echo выводит на устройство стандартного вывода заданные ей аргументы, разделяя их пробелами и завершая их символом новой строки (\n). Эта команда удобна для формирования диагностических сообщений в командных файлах и для передачи известных данных в программном канале. С помощью следующей команды можно довольно пpосто создать пустой файл: echo > имя_файла. Возможен параметр -n — не выводить завеpшaющий символ перевода строки. Интеpпpетатоp команд имеет встроенную команду echo, которая имеет синтаксические различия с внешней командой echo. Следует знать, что пользователям, работающим с оболочкой, будет доступна встроенная команда echo, если они не укажут /bin/echo. Рассмотрим примеры использования этой команды: Вывод сообщения «Hello, world» на экpан: [user@localhost ~]$ echo "Hello, world."Hello, world.[user@localhost ~]$Вывод сообщения без завеpшающего символа новой стpоки: [user@localhost ~]$ echo -n "Hello, world."Hello, world.[user@localhost test]$Вывод сообщения в файл file1: [user@localhost ~]$ echo "Hello, world." > file1Добавление сообщения к содеpжимому файла file1: [user@localhost ~]$ echo "Hello, world." >> file1Вывод имен файлов текущего каталога в алфавитном поpядке: [user@localhost ~]$ echo *Вывод списка файлов с именами, соответствующих шаблону. Вывести имена файлов с pасшиpением .txt: [user@localhost ~]$ echo *.txtcat Рассмотpим еще одну команду, котоpая может быть полезна пpи pаботе с файлами. Это команда cat (аналог команды TYPE для DOS-систем). Команда cat имеет следующий фоpмат: cat [-benstuv] [-] [file1 [file2 ...]]Она по очеpеди читает указанные, как аpгументы файлы и выводит их содеpжимое на стандаpтное устpойство вывода. Поименованный файл или файлы выводятся последовательно один за дpугим без пpомежутков. Если файл достаточно длинный, то можно пpиостановить вывод с помощью комбинации клавиш Ctrl-S. Для пpодолжения вывода нажмите любую клавишу. Окончание ввода производится комбинацией Ctrl-D. Операнды обрабатываются в порядке их pазмещения в командной строке. Если не указан ни один файл или указана опция (-), команда читает данные со стандаpтного устpойства ввода. Можно использовать следующие опции: -n Нумеpовать стpоки начиная с 1. -b Подразумевает опцию -n, но не нумеpует пустые стpоки. -e Подразумевает опцию -v и отображает знак доллара ($) в конце каждой строки (визуализация символа пеpевода стpоки). -s Пpи наличии идущих подpяд пустых стpок выводить только одну. -t Подразумевает опцию -v. Выводит cимволы табуляции как ^I. -u Вывод не буферизуется, то есть символы из входного файла записываются в стандаpтный вывод без задеpжки, как только они были пpочитаны. По умолчанию вывод буфеpизуется, то есть символы могут накапливаться в пpомежуточном буфеpе. -v Отображение непечатных символов. Упpавляющие символы выводятся в виде ^X (CRTL+X), символ DEL (восьмеричное 0177) как ^?. Символы не входящие в стандаpтный ASCII-набоp (напpимеp, символы киpиллицы с набоpом стаpших pазpядов) выводятся как «M-x», где x — опpеделяемый младшими семи битами символ. Рассмотрим примеры использования команды: Файл file выводится на устройство стандартного вывода: [user@localhost ~]$ cat fileСцепление (слияние) файлов file1 и file2, после чего они помещаются в файл file3: [user@localhost ~]$ cat file1 file2 > file3Пpисоединение файла file1 к концу файла file2: [user@localhost ~]$ cat file1 >> file2Вывод содеpжимого файла с нумеpацией стpок, но без нумеpации пустых стpок: [user@localhost ~]$ cat -b file11 Number 12 Number 23 Number 34 Number 45 Number 5Нумеpация всех стpок: [user@localhost ~]$ cat -n file11 Number 12 Number 23 Number 34 Number 4567 Number 5less Команда less используется для просмотра файлов, размер которых превышает размер экрана. Пользователю предоставляется интерактивынй интерфейс, в котором текст можно пролистывать, производить по нему поиск и т.п.. Имя просматриваемого файла необходимо указать в качестве аргумента программы: Управлять программой less просто: страницы перелистываются пробелом, а когда читать надоест, надо нажать q (Quit). Перелистывать страницы можно и клавишами Page Up/Page Down, для сдвига на одну строку вперед можно применять Enter или стрелку вниз, а на одну строку назад — стрелку вверх. Переход на начало и конец текста выполняется по командам g и G соответственно (Go). Полный список того, что можно делать с текстом в less, выводится по команде h (help). Для поиска и подсветки интересующего понятия можно воспользоваться командой /, после которой необходимо ввести интересующий термин — по нажатию клавиши Enter, курсор перейдёт к первому упоминанию термина, который будет выделен серым цветом. Последующие нажатия / и Enter приведут к продолжению поиска слова по документу. Программа less используется в качестве основы команды man — при просмотре страниц руководств. head Команда выводит на экран первые несколько строк файла. По умолчанию выводится первые 10 строк. Имя выводимого файла указывается в качестве аргумента программы, и если оно не задано, производится чтение информации со стандартного входа. С помощью параметра -n можно задать число строк от начала файлы, которые будут выведены на экран. Например: [user@localhost ~]$ head -n 4 /etc/inittab# /etc/inittab: init(8) configuration. # The default runlevel.id:5:initdefault:tail Команда выводит на экран последние несколько строк файла. По умолчанию выводятся последние 10 строк. Имя выводимого файла указывается в качестве аргумента программы, и если оно не задано, производится чтение информации со стандартного входа. С помощью параметра -n можно задать число строк от конца файла, которые будут выведены на экран. Например: [user@localhost ~]$ tail -n 5 /var/log/dmesgloop: loaded (max 8 devices)squashfs: version 3.1 (2006/08/19) Phillip LougherRegistering unionfs 1.4unionfs: debugging is not enableddevice-mapper: ioctl: 4.7.0-ioctl (2006-06-24) initialised: [email protected]Таким способом удобно просматривать последние записи системных журналов. Другим важным параметром команды является -f: команда ожидает изменения в конце фала и отображает их на экране. Часто это используется при просмотре постоянно увеличивающихся файлов. Для завершения команды нажмите Ctrl-C. cut Команда позволяет выводить указанные столбцы или записи из одного или нескольких файлов. Столбцом называется именно столбец — символы с одной и той же позицией в строке, записи же разделяюся символами табуляции. И столбцы и записи задаются указанием их порядкового номера в строке. Можно использовать следующие опции: -cсписок вывод столбцов, указанных агрументом список; -fсписок вывод полей, указанных агрументом список; -dсимвол устанавливает заданный символ в качестве разделителя полей при использовании параметра -f. Если в качестве разделителя используется небуквенный символ (например, пробел), он должен быть заключён в кавычки. Примеры работы программы: Выделение первых семи столбцов файла: [user@localhost ~]$ cat phones.txt1234567 Борис Петрович5557845 Анна Иоановна...[user@localhost ~]$ cut -c1-7 phones.txt12345675557845...Получение списка групп пользователей, зарегистрированных в системе: [user@localhost ~]$ cut -f1 -d: /etc/grouprootbindaemonsysadm...paste Команда paste объединяет два текстовых файла в один. В получившемся файле исходные строки располагаются в соседних столбцах, разделённые символом табуляции (или любым другим символом, указанным через параметр -d). Часто применяется совместно с программой cut. sort Команда sort сортирует строки, входящие во все исходные файлы, и выдает результат на стандартный вывод. Если имена файлов не указаны, или в качестве файла указан «-», исходная информация поступает со стандартного ввода. Команда имеет формат: sort [-c] [-r] [файл ...]При упорядочении используется один или несколько ключей сортировки, выделяемых из каждой вводимой строки. По умолчанию ключ сортировки один — вся строка, а порядок является лексикографическим, соответствующим принятой кодировке символов. Основные опции команды: -c Вместо сортировки файла проверяет, отсортирован ли он. Если файл не отсортирован, команда возвращает 1 и выводит соответствующее сообщение. -r Заменить результат сравнения на противоположный. Рассмотрим примеры использования команды: Отсортировать файл с фамилиями: [user@localhost ~]$ cat f.txtPetrovIvanovSidorovAbramov[user@localhost ~]$ sort f.txtAbramovIvanovPetrovSidorovОтсортировать список файлов в обратном порядке: [user@localhost ~]$ ls / | sort -rvarusrtmpsyssrvsbinroot...uniq Команда uniq построчно анализирует файл и в случае, если он содержит в себе повторяющиеся строки, выбрасывает дубликаты. Команда имеет следующий формат: uniq [-c] [исходный_файл]Если имя исходного файла не указано, команда читает данные со стандартного ввода. В качестве параметра может быть указано -c, тогда рядом с каждой строкой будет выведено число повторений этой строки. Рассмотрим примеры использования команды: Получим имена всех пользователей, работающих в системе в настоящий момент: [user@localhost ~]$ who | cut -f1 -d' 'rootrootivanmaria[user@localhost ~]$ who | cut -f1 -d' ' | uniqrootivanmariaОднако такой результат будет не всегда: [user@localhost ~]$ who | cut -f1 -d' 'rootivanrootmaria[user@localhost ~]$ who | cut -f1 -d' ' | uniqrootivanrootmariaЭто происходит потому, что команда uniq сравнивает строки последовательно. Для того, чтобы избежать дублирования, результат можно сперва сортировать: [user@localhost ~]$ who | cut -f1 -d' ' | sort | uniqivanmariarooticonv Команда iconv предназначена для перекодирования текстовых файлов из одной кодировки в другую и имеет следующий формат: iconv [-l] -f исходная_кодировка -t конечная_кодировка [исходный_файл]Если имя исходного файла не указано, команда читает данные со стандартного ввода. Имя кодировки — исходной или конечной должно соответствовать кодировке в файле, список доступных кодировок можно получить, если запустить команду iconv с параметром -l. wc Эта команда предназначена для подсчёта количества строк, символов и слов в указанных файлах. Команда имеет слудующий формат: wc [-clmw] file ...Можно использовать следующие опции: -c Вывод только количества байт. -l Вывод только количества строк. -m Вывод только количества символов. Отличается от числа байт при многобайтной кодировке. -w Вывод только количества слов. Рассмотрим примеры использования команды: Подсчёт числа слов в документе: [user@localhost test]$ wc -w lectures.txt568 lectures.txtЧисло файлов в каталоге: [user@localhost test]$ ls / | wc -l15Полная статистика по группе xml-файлов (число строк, число слов, число байт): [user@localhost test]$ cat *.xml | wc 16138 253680dd dd — команда блочного копирования файлов. Она имеет следующий формат: dd if=исходный_файл of=конечный_файл bs=размер_блока count=число_блоков skip=число_блолов seek=число_блоковПрограмма используется при копировании частей одного файла в другой, часто применяется при работе с устройствами. Рассмотрим параметры, принимаемые командой: if= Задаёт имя файла (или устройства), откуда будут копироваться данные. of= Задаёт имя файла (или устройства), куда будут копироваться данные. bs= Задаёт размер блока копирования в байтах. Можно применять модификаторы размера: «K» — килобайты, «M» — мегабайты и т.п. count= Задаёт число копируемых блоков. Если этот параметр не задан, копируется всеь исходный файл. skip= Число блоков в исходном файле, которое будет пропущено до чтения. seek= Число блоков в файле назначения, которое будет пропущено до записи. Рассмотрим примеры использования команды: Копирование загрузочного сектора жёсткого диска в файл bootsect: [root@localhost test]# dd if=/dev/hda of=bootsect bs=512 count=11+0 входных записей1+0 выходных записей512 bytes (512 B) copied, 9e-05 seconds, 5,7 MB/sКопирование файла размером до двух мегабайт на простой гибкий диск и обратно: [user@localhost test]$ dd if=arch.tar.bz2 of=/dev/fd0 bs=11788990+0 входных записей1788990+0 выходных записей[user@localhost test]$ dd if=/dev/fd0 of=arch2.tar.bz2 bs=1 count=17889901788990+0 входных записей1788990+0 выходных записейК лабораторной работе № 2 Способы адресации Способы адресации подробно расписаны в [4-5].
К лабораторной работе № 3 Обработка прерываний Функции прерывания с примерами рассмотрены в [4-5].
К лабораторной работе № 4 Распределение памяти Общие положения Любая программа обычно состоит из подпрограмм. Для удобства отладки больших по объему подпрограмм их обычно оформляют как самостоятельные модули (файлы), т.е. в виде внешних подпрограмм. Каждый такой модуль ассемблируется отдельно и генерирует собственный уникальный объектный модуль. Программа компоновщик затем объединяет объектные модули в один объединенный выполняемый модуль.
Способы компоновки программ Рассмотрим три способа компоновки программ. Первый способ, когда директивы EXTRN и PUBLIC используются для меток. Пример программы состоит из основной программы и подпрограммы.
Текст основной программы Title UMN (EXE) ; основная программа Extrn SubUmn:Far ; объявление внешней процедуры
StackSg Segment PARA STACK 'Stack' DW 64 DUP(?) StackSg ENDS
DataSg Segment PARA 'Data' Kol DW 0140H Price DW 2500H DataSg ENDS CodeSg Segment PARA 'Code' Begin Proc FAR Assume CS:CodeSg, DS:DataSg, SS:StackSg Push DS Sub AX, AX Push AX Mov AX, DataSg Mov DS, AX Mov AX, Price Mov BX, Kol Call SubUmn ; вызов процедуры Ret Begin ENDP CodeSg ENDS END Begin
Текст внешней подпрограммы Title SubUmn ; внешняя подпрограмма CodeSg Segment PARA 'Code' SubUmn Proc FAR Assume CS:CodeSg Public SubUmn ; открытие доступа к подпрограмме Mul BX ; умножается содержимое AX и BX Ret ; результат заносится в DX:AX SubUmn ENDP CodeSg ENDS END SubUmn
Карта компоновки отражает организацию программы в памяти.
Здесь имеются два кодовых сегмента для каждого ассемблирования с разными стартовыми адресами.
Второй способ, когда директивы PUBLIC используют при описании кодовых сегментов. В этом случае в директиву Segment вносится оператор Public.
CodeSg Segment PARA PUBLIC 'Code'
При этом карта компоновки будет выглядеть следующим образом:
Здесь только один кодовый сегмент. Тот факт, что оба сегмента имеют одни и те же имя, класс и атрибут, заставил компоновщика объединить два логических кодовых сегмента в один физический кодовый сегмент.
Третий случай, когда присутствуют общие данные для основной программы и подпрограммы. Это предполагает возможность обработки в одном модуле данных, определенных в другом модуле. Пусть области Price и Kol определялись в основной программе, а загрузка значений из этих областей в регистры производились в подпрограмме. Тогда в тексте основной программы кроме объявления внешней подпрограммы (сразу за ним) добавится строка Public Kol, Price; команды Mov AX, Price Mov BX, Kol из основной программы перепишутся в подпрограмму (перед командой умножения). Кроме того, в подпрограмме перед описанием кодового сегмента необходимо описать имена переменных как внешние: EXTRN Kol:Word, Price:Word
Порядок отладки Пусть текст основной программы записан в файле PR1.ASM, текст внешней подпрограммы - в файле PR2.ASM. Используем программу MASM для получения двух объектных модулей: PR1.OBJ и PR2.OBJ. Затем компоновщиком объединяем два объектных модуля в один выполняемый. Для этого на запросы компоновщика необходимо ответить следующим образом:
Object modules [.OBJ] : PR1 + PR2 Run file [.EXE] : PR (или любое другое имя)
Компоновщик устанавливает соответствие между адресами в объектных модулях.
Более подробно см. [4-5].
К лабораторной работе № 5 Препроцессоры Макроопределения Макрокоманда представляет собой текстовую подстановку, в ходе выполнения которой каждый идентификатор определенного вида заменяется на цепочку символов из некоторого хранилища данных. Процесс выполнения макрокоманды называется макрогенерацией, а цепочка символов, получаемая в результате выполнения макрокоманды, — макрорасширением. Процесс выполнения макрокоманд заключается в последовательном просмотре текста исходной программы, обнаружении в нем определенных идентификаторов и их замене на соответствующие строки символов. Причем выполняется именно текстовая замена одной цепочки символов (идентификатора) на другую цепочку символов (строку). Такая замена называется макроподстановкой. Для того чтобы указать, какие идентификаторы на какие строки необходимо заменять, служат макроопределения. Макроопределения представляют собой последовательность операторов на языке Ассемблера, которые могут несколько раз появиться в программе. Тем самым они очень похожи на подпрограммы. Макроопределения присутствуют непосредственно в тексте исходной программы. Они выделяются специальными ключевыми словами либо разделителями, которые не могут встречаться нигде больше в тексте программы. В процессе обработки все макроопределения полностью исключаются из текста входной программы, а содержащаяся в них информация запоминается для обработки при выполнении макрокоманд.
Например, пусть необходимо сложить содержимое двух ячеек памяти размером в слово, используя макроопределение: ; макроопределение для сложения двух значений ADD_WORDS MACRO TERM1, TERM2, SUM MOV AX, TERM1 ADD AX, TERM2 MOV SUM, AX ENDM Тогда в программе можно использовать оператор: ADD_WORDS PRICE, TAX, COST Вместо этого оператора Ассемблер после трансляции вставит в программу следующие команды: MOV AX, PRICE ADD AX, TAX MOV COST, AX Макроопределения при написании программы на языке ассемблера не включаются ни в один сегмент. Их описывают перед сегментами после заголовка. Структура программы, содержащей макроопределения, может иметь следующий вид:
К лабораторной работе № 6 К лабораторной работе /№ 7 Файловая система Примеры по программированию операций над файлами Пример 1. Создание файла. В текущем каталоге диска создать файл с именем MYFILE.001.
;Определения cr equ 0Dh ;Возврат каретки lf equ 0Ah ;Перевод строки text segment 'code' assume CS:text, DS:data myproc proc mov AX, data mov DS,AX ;Создадим файл mov AH,3Ch ;Функция создания файла mov CX,0 ;Без атрибутов mov DX, offset filename ;Адрес имени файла int 21h mov handle, AX ;Сохраним дескриптор файла ;Закроем файл (нет необходимости, если файл не надо читать повторно) mov AH,3Eh ;Функция закрытия mov BX,handle ;Дескриптор int 21h ;Завершим программу outprog: mov AX,4C00h ;Функция завершения, код int 2lh ;завершения = 0 myproc endp text ends
data segment handle dw ? ;Ячейка для дескриптора filename db 'MYFILE.001',0 ;Имя файла в формате ASCIIZ data ends
stack segment para stack 'STACK' db 128 dup (?) stack ends end myproc
Пример 2. Запись строки в файл. ;Основные фрагменты программы ;Создадим файл ... ;Запишем строку в файл mov AH,40h ;Функция записи mov BX, handle ;Дескриптор mov CX, stringln ;Длина строки mov DX, offset string ;Адрес строки int 21h ;Закроем файл ... ;Завершим программу ... ;Поля данных string db 'Текстовая строка',cr,lf ;Строка для записи в файл stringln equ $-str1ng ;Ее длина handle dw ? ;Ячейка для дескриптора
Пример 3. Чтение файла. Прочитать содержимое файла MYFILE.001 в память и вывести его на экран. Предполагается, что размер файла не более 80 байт. ;Определения stdout equ 1 ;Дескриптор стандартного вывода ;Основные фрагменты программы ;Откроем файл mov AH,3Dh ;Функция открытия файла mov AL,2 ;Доступ для чтения/записи mov DX, offset filename ;Адрес имени файла int 21h mov handle,AX ;Получили дескриптор ;Попытаемся прочитать 80 байт mov AH,3Fh ;Функция чтения mov BX,handle ;Дескриптор mov CX,80 ;Столько читать mov DX, offset bufin ;Сюда int 21h mov CX,AX ;Столько реально прочитали ;Выведем прочитанное на экран mov AH,4Dh ;Функция записи mov BX, stdout ;Дескриптор стандартного вывода mov DX, offset bufin ;Отсюда выводить (СХ байт) int 21h ;Завершим программу ... ;Поля данных bufin db 80 dup (' ') ;Буфер ввода handle dw ? ;Ячейка для дескриптора filename db 'MYFILE.001',0 ;Имя файла Пример 4. Изменение атрибутов файла. Установить у файла MYFILE.001 атрибут "только для чтения". ;Основные фрагменты программы ;Установим атрибут "только для чтения" mov AH,43h ;Функция работы с атрибутами mov AL,1 ;Установка атрибутов mov CX,1 ;"Только для чтения" mov DX, offset filename ;Адрес имени файла int 21h
Пример 5. Прямой доступ к файлу. Прочитать 8 байт из созданного ранее файла MYFILE.001, начиная с байта 5, вывести их на экран. ;Определения stdout equ 1 ;Дескриптор стандартного вывода ;Основные фрагменты программы ;Откроем файл ... ;Установим указатель mov AH,42h ;Функция установки указателя mov AL,0 ;От начала файла mov BX, handle ;Дескриптор mov CX,0 ;Старшая половина указателя mov DX,5 ;Младшая половина указателя int 21h ;Прочитаем 8 байт данных с помощью функции 3Fh ... ;Выведем прочитанное на экран с помощью функции 40h ... ;Завершим программу ... ;Поля данных bufin db 80 dup (' ') ;Буфер ввода handle dw ? ;Ячейка для дескриптора filename db 'MYFILE.001',0 ;Имя файла в формате ASCIIZ
Пример 6. Добавление данных к файлу. Добавить символьную строку к концу символьного файла. ;Основные фрагменты программы ;Откроем файл с указанным именем функцией 3Dh и сохраним ;полученный дескриптор в ячейке handle ... ;Установим указатель на конец файла mov AH,42h ;Функция установки указателя mov AL,02 ;От конца файла mov BX, handle ;Дескриптор mov CX,0 ;Старшая половина указателя mov DX,0 ;Младшая половина указателя int 21h ;Допишем новую строку mov AH,40h ;Функция записи mov BX, handle ;Дескриптор mov CX, stringln ;Длина строки mov DX, offset string ;Адрес строки int 21h ;Завершим программу ... ;Поля данных string db 'Новая строка',cr,lf ;Строка для записи в файл stringln equ $-str1ng ;Ее длина handle dw ? ;Ячейка для дескриптора filename db 'MYFILE.001',0 ;Имя файла в формате ASCIIZ
Пример 7. Изменение характеристик файла. Изменить дату и время создания файла MYFILE.001. ;Основные фрагменты программы
;Откроем файл с указанным именем функцией 3Dh и сохраним ;полученный дескриптор в ячейке handle ... ;Изменим дату и время создания файла mov AH,57h ;Функция даты/времени mov AL,1 ;Установить дату/время mov BX, handle ;Дескриптор файла mov CX,0 ;Очистим CX or CX, sec ;Добавим секунды or CX, min ;Добавим минуты or CX, hour ;Добавим часы xor DX, DX ;Очистим DX or DX, day ;Добавим день or DX, mon ;Добавим месяц or DX, year ;Добавим год int 21h ;Завершим программу ... ;Поля данных filename db 'MYFILE.001',0 ;Имя файла handle dw ? ;Ячейка для дескриптора sec dw 6/2 ;6 секунд min dw 15*32 ;15 минут hour dw 16*2048 ;16 часов day dw 25 ;25 число mon dw 3*32 ;март year dw 13*512 ;13 лет от 1980 года
Пример 8. Переименование файла. Переименовать файл MYFILE.001, находящийся в текущем каталоге, дав ему имя NEWNAME.DAT. ;Основные фрагменты программы ;Настроим сегментный регистр ES на наш сегмент данных push DS pop ES ;Переименуем файл mov AH,56h ;Функция переименования mov DX, offset oldname ;Адрес старого имени mov DI, offset newname ;Адрес нового имени int 21h ;Завершим программу ... ;Поля данных oldname db 'MYFILE.001',0 ;Старое имя файла newname db 'NEWNAME.DAT',0 ;Новое имя файла
Пример 9. Пересылка файла в другой каталог на том же диске. Переслать файл NEWNAME.DAT из текущего каталога в нижележащий каталог NEWDIR, изменив при этом имя файла на NEWNAME.LEX. ;Основные фрагменты программы ;Настроим сегментный регистр ES на наш сегмент данных ... ;Переименуем файл ... ;Завершим программу ... ;Поля данных oldname db 'NEWNAME.DAT',0 ;Старое имя файла newname db 'NEWDIR\NEWNAME.LEX',0 ;Новое имя файла
Пример 10. Создание и удаление каталогов. Создать в текущем каталоге подкаталог NEWDIR. Удалить из текущего каталога подкаталог OLDDIR (обязательно пустой). ;Основные фрагменты программы ;Создадим новый каталог mov AH,39h ;Функция создания каталога mov DX, offset newname ;Адрес нового имени int 21h ;Удалим ненужный каталог mov AH,3Ah ;Функция удаления каталога mov DX, offset oldname ;Адрес старого имени int 21h
;Завершим программу ... ;Поля данных oldname db 'OLDDIR',0 ;Старый каталог newname db 'NEWDIR',0 ;Новый каталог
Пример 11. Смена диска. Сделать текущим диск А. ;Основные фрагменты программы ;Сделаем текущим диск А mov AH,0Eh ;Функция смены диска mov DL,0 ;Код диска А (А=0, В=1, С=2 и т.д.) int 21h ;Завершим программу
Распределение часов по семестрам и видам занятий Дисциплина «Системное программное обеспечение» изучается в 5 семестре. Самостоятельная работа (112 часов) студентов заключается в подготовке к лабораторным работам (76 часов) и подготовке к аттестациям и зачету (36 часов).
Теоретический материал |
Последнее изменение этой страницы: 2019-05-07; Просмотров: 199; Нарушение авторского права страницы