Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
2017 ЛАБ-1.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
596.48 Кб
Скачать

2.2.2.1Передача параметрів у пакетний файл при його виконанні

Виклик будь-якої консольної команди, пакетного файлу або прикладної прграми в консолі виконується уведенням приблизно такої послідовності слів (командного рядка):

Ім'я_пакета слово_1 слово_2 слово_3 ...

ОС уміє «розібрати» командний рядок на окремі слова-параметри. Тоді ім'я_пакета – це буде параметр командного рядка номер 0, слово_1 – параметром номер 1, слово_2 – параметром номер 2 і т.д.

Всі ці параметри можна передати усередину пакета при його виконанні. Щоб це стало можливим, у рядках пакетнику потрібно, де потрібно, використовувати імена-підстановки %1, %2, %3 і т.д. Тоді, скрізь, де буде написане %1, замість нього буде підставлене слово_1, замість %2 - слово_2 і т.д. І виходить, що пакетник буде використати передані йому параметри у своїй роботі. Це перетворює пакетний файл із «жорстко запрограмованого» в універсальний, котрим можна обробляти різні файли, передаючи їхні імена як параметри при виклику з командного рядка. Це дуже зручно й вигідно.

У пакетнику buіldc.bat це використовується повною мірою . Переглядаючи його текст (див. рядки 2, 3, 4, 7, 9,12) ви в цих рядках скрізь побачите %1. У кожне таке місце при виконанні підставляється ім'я (тільки ім'я!) вихідного файлу асемблерної програми, у нашому випадку prog. До речі, у рядку 23 видно, чому файл вихідного тексту при виклику не треба задавати як prog.asm, а варто вказувати тільки як prog. Пакетник підставляє потрібні розширення усюди, де потрібно, вони прописані в ньому явно.

2.2.2.2Відкоментований текст пакетного файлу buіldc.Bat

Припустимо, що пакетний файл викликався командою

buildc prog. Це означає, що замість «%1» усюди буде підставлено «prog».

№ рядка пакета

Рядок пакетного файлу

Коментар

1

@echo off

@ - Відключити у даній команді (тільки у ній!) ехо-вивід. Сама команда echo off відключає ехо вивід усіх наступних команд пакету.

2

if exist %1.obj del %1.obj

Якщо існує файл prog.obj, видалити файл prog.obj

3

if exist %1.exe del %1.exe

Якщо існує файл prog.exe, видалити файл prog.exe

4

\masm32\bin\ml /c /coff %1.asm

Викликати компілятор ml.exe (.exe уявляється, хоча не введено). Ключ /c – «тільки компілювати», ключ /coff – «створювати об’єктний файл формату COFF». Компілювати файл prog.asm.

5

if errorlevel 1 goto errasm

Якщо попередня команда закінчилась з помилкою (errorlevel=1), перейти на мітку errasm.

6

if not exist rsrc.obj goto nores

Якщо НЕ існує об’єктного ресурсного файлу rsrc.obj, перейти на мітку nores. Всі ваші навчальні програми НЕ БУДУТЬ використовувати ресурсні файли, тому рядки 7-10 данной таблицы ніколи не будуть виконуватись.

7

\masm32\bin\Link /SUBSYSTEM:CONSOLE /OPT:NOREF %1.obj rsrc.obj

Рядок не виконується, див. рядок 6. (Взагалі тут викликається компоновник Link для обробки двох об’єктних файлів – prog.obj та rsrc.obj)

8

if errorlevel 1 goto errlink

Рядок не виконується, див. рядок 6. (це умовний перехід на errlink, якщо лінкер в рядку 7 відпрацював би з помилкою)

9

dir %1.*

Рядок не виконується, див. рядок 6. (показати в поточному каталозі всі файли з іменами «prog»)

10

goto TheEnd

Рядок не виконується, див. рядок 6. (безумовний перехід на мітку TheEnd)

11

:nores

Мітка переходу з рядка 6.

12

\masm32\bin\Link /SUBSYSTEM:CONSOLE /OPT: REF %1.obj

Виклик компоновника Link.exe (.exe уявляється, хоча не введено). Ключ /SUBSYSTEM:CONSOLE означає «створювати ехе-модуль для програми з консольним виконанням». Ключ /OPT:REF – «включати в ехе-модуль тільки ті процедури з бібліот, на як в програмі є посилання». Компоновку виконувати для об’єкт­ного файлу prog.obj.

13

if errorlevel 1 goto errlink

Якщо попередня команда закінчилась з помилкою (errorlevel=1), перейти на мітку errlink

14

dir %1.*

показати в поточному каталозі інформацію про всі файли з іменами «prog»

15

goto TheEnd

Перейти до мітки TheEnd

16

:errlink

Мітка переходу з рядків 8 та 13. Тут оброблюється ситуація «компоновка була з помилкою».

17

echo _

Вивести на екран «_».

18

echo Link error

Вивести на екран текст «Link error».

19

goto TheEnd

Перейти до мітки TheEnd

20

:errasm

Мітка переходу з рядка 5. Тут оброблюється ситуація «асемблювання (тобто компіляція) було з помилкою».

21

echo _

Вивести на екран «_».

22

echo Assembly Error

Вивести на екран текст «Assembly Error».

23

goto TheEnd

Перейти до мітки TheEnd

24

:TheEnd

Мітка кінця пакету. На неї багато переходів згори пакету.

25

pause

Вивести на екран текст «Нажмите любую клавишу для продолжения» і чекати натискання, після чого завершити пакет.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]