85803

ПРИНЦИПЫ ОРГАНИЗАЦИИ ВВОДА ДАННЫХ ИЗ КОМАНДНОЙ СТРОКИ

Лабораторная работа

Информатика, кибернетика и программирование

Содержимое PSP отражает этапы развития операционной системы. При реализации некоторых новых моментов к PSP добавляются новые поля. В результате там имеются элементы, которые служат различным целям и ориентированы к различным методам. Среди них есть и устаревшие, которые уже не используются.

Русский

2015-03-30

80.5 KB

0 чел.

Лабораторная работа № 2

ПРИНЦИПЫ ОРГАНИЗАЦИИ ВВОДА ДАННЫХ ИЗ КОМАНДНОЙ СТРОКИ

1. Цель работы: освоение принципов передачи параметров посредством командной строки и построение файлов типа EXE.

2. Префикс сегмента программы (PSP)

Когда программа загружается для выполнения, ей выделяется вся область от самого  младшего свободного адреса до конца наличной рабочей памяти. (Затем программа может освободить часть этой области.) Эта область называется сегментом программы. Она всегда начинается с границы параграфа (т.е. ее начальный адрес кратен 16). Первые 256 байтов с начала сегмента программы называются его префиксом (PSP). ДОС-16 помещает в PSP весьма разнородную информацию. Часть этой информации - системная, а другая предназначена для программы. Программа загружается со смещением 256 байтов от начала сегмента программы, непосредственно после PSP. Прежде чем передать ей управление, ДОС-16 записывает в некоторые из сегментных регистров адрес PSP, так что программа имеет непосредственный доступ к информации в нем. Для программ в формате СОМ адрес PSP содержится во всех сегментных регистрах. Для программ в формате ЕХЕ адрес PSP записывается в DS и ES. Программа может сохранить этот адрес, чтобы использовать позднее, но в этом нет необходимости - его можно получить всегда при помощи системной функции 62Н.

Содержимое PSP отражает этапы развития операционной системы. При реализации некоторых новых моментов к PSP добавляются новые поля. В результате там имеются элементы, которые служат различным целям и ориентированы к различным методам. Среди них есть и устаревшие, которые уже не используются. Содержимое PSP показано в табл. 1.

Поле 1 содержит код инструкции INT 20H (CD 20). Прерывание 20Н - один из способов завершить выполнение программы (см. прерывание 20Н). Следовательно, программа может завершиться инструкцией для перехода к началу PSP (CS должен содержать сегментный адрес PSP). Эта возможность выглядит совершенно бессмысленной при наличии системной функции для завершения 4СН, не говоря о том, что программа сама может выполнить инструкцию INT 20H. На самом деле INT 20H в начале PSP имеет другое предназначение - повышает надежность при выполнении программ с нерешенными внешними связями. Если программа выполнит, переход к адресу, который не определен при связывающем редактировании, это приведет к ее завершению. так как редактор связей дает значение 0 всем таким адресам, т.е. осуществлен переход к началу PSP.


Содержание PSP

Таблица 2.12

Поле

Смещение

Длина

Содержание

(10

(16)

1

0

0

2

Инструкция INT 20H (завершение программы)

2

2

2

2

Размер памяти в блоках по 16 байтов (параграфах)

3

4

4

1

Резервировано

4

5

5

5

Дальний переход (CALL сегмент: смещение).

Второй байт (смещение) содержит количество свободных байтов в сегменте.

5

10

А

4

Адрес завершения (вектор 22H)

6

14

Е

4

Адрес обработки Ctrl-Break (вектор 23H)

7

18

12

4

Адрес обработки ошибок (вектор 24H)

8

22

16

22

Используется операционной системой ДОС

9

44

2

Адрес окружения (только сегмент, смещение - 0)

10

46

34

Рабочая область ДОС

11

80

50

3

Инструкции INT 21H и RET FAR

12

83

53

2

Резервировано

13

85

55

7

Префикс первого FCB

Н

92

9

Первый FCB

15

101

65

7

Префикс второго FCB

16

108

9

Второй FCB

17

128

80

1

Длина параметров командной стpoки

18

129

81

127

Параметры командной стpoки

19

128

80

128

DTA (no умолчанию)

Поле 2 содержит размер наличной оперативной памяти в блоках по 16 байтов (параграфах). Точнее, поле содержит сегментный адрес последнего параграфа памяти. Это значение использует программа CHKDSK в своем отчете. Нужно иметь в виду, что в некоторых случаях это значение может не совпадать с действительным количеством памяти. Например, некоторые виртуальные (RAM) диски используют старшие адреса памяти и изменяют информацию о последнем адресе, которой располагает ДОС. Поэтому может существовать разница между полем 2 PSP и значением, полученным прерыванием 12Н BIOS, которое извлекает информацию о наличной памяти (см. п. 3.8.2).

Поле 4 дает возможность выполнять некоторые уже существующие программы, которые используют другой метод обращения к системным функциям. При этом методе номер функции записывается в CL вместо АН, остальные параметры задаются в соответствии с описанием функции, и выполняется CALL (в текущем сегменте программы) к началу поля 4. Поскольку поле содержит инструкцию FAR CALL к ДОС (к диспетчеру системных функций), требуемая функция выполняется, после чего управление возвращается Программе. При использовании этого механизма содержание АХ всегда теряется. Поскольку новые программы используют непосредственно инструкцию INT 21H, а старые программы, применяющие этот метод, почти не встречаются, практически поле 4 не представляет интерес как средство для выполнения системных функций. С другой стороны, второе слово поля содержит полезную информацию, которую можно использовать для совершенно других целей. При формировании адресной части инструкции FAR CALL, ДОС выбирает такую комбинацию сегментного адреса и смещения, чтобы смещение несло в себе определенную информацию о сегменте программы, в котором загружена программа (это возможно, так как один и тот же адрес можно задать различными комбинациями сегментного адреса и смещения, например A00:0100 и А010:0000). Если сегмент программы больше 64 Кбайтов, смещение (второе слово в поле) равно FEEEH (64 Кбайта минус размер PSP и минус 16 байтов) Однако если сегмент программы меньше 64 Кбайтов, смещение равно его точному размеру (снова минус PSP и минус 16 байтов). Следовательно, поле можно использовать как индикатор, располагает ли программа сегментом длиной не менее 64 Кбайтов. Если он меньше, поле содержит его размер.

Поля 5, 6 и 7 содержат векторы трех адресных прерываний ДОС, какими они были до запуска программы. Это INT 22H (адрес завершения), int 23H (прерывание программы при помощи Ctrl-Break) и INT 24H (обработка критических ошибок). Программа может изменять свободно эти векторы - при ее завершении ДОС-16 восстанавливает их предыдущее содержание из PSP. Например, программа может ввести собственную обработку Ctrl-Break, но после ее завершения будет восстановлена стандартная обработка (командным процессором COMMAND). Если, однако, программа изменит некоторое из этих полей в PSP, изменение останется и после ее завершения. Например, можно создать резидентную программу, заменяющую стандартную обработку критических ошибок в COMMAND. При нормальных обстоятельствах, однако, в этом особого смысла нет. Трудно даже представить ситуацию, в которой программе будет необходимо знать значения этих полей.

Поле 9 содержит адрес окружения программы. Указан только адрес сегмента - смещение равно нулю.

Поле 11 содержит инструкции INT 21Н и RET FAR, что дает возможность выполнять косвенно обслуживающие функции ДОС-16. Для использования этой возможности программа должна подготовить все необходимое для выполнения нужной системной функции (номер функции в АН и т.д.) и затем осуществить дальний переход к PSP+50H.

Поля 13, 14, 15 и 16 помогают программам, которые используют для работы с файлами метод FCB. Основная идея - облегчить обработку параметров из командной строки программы. Предполагается, что эти параметры представляют собой имена файлов, которые обрабатываются программой - это действительно наиболее часто встречающийся случай. Речь идет о первых двух параметрах. ДОС использует их как имена файлов и конструирует с их помощью два неоткрытых FCB в PSP. Если они нужны программе, она может их открыть и использовать, без необходимости декодировать параметры в командной строке и конструировать собственные FCB.

При использовании этой возможности необходимо иметь в виду некоторые возможные осложнения. Прежде всего, два FCB перекрываются как друг с другом, так и с DTA в PSP. Если используется только первый из них и изменится адрес DTA, все в порядке. В противном случае один или оба FCB нужно переместить из PSP, до их открытия. Кроме того, напомним, что метод FCB не допускает имя пути в файловой спецификации, а только имя диска и им* файла. Если некоторый из параметров содержит и путь, соответствующий FC0 будет заполнен неправильно. Для описания FCB см. п. 2.2.5.

ПРИМЕЧАНИЕ. Когда программа получает управление, значение А* показывает содержат ли первые два параметра командной строки действ»* тельные имена дисков. Если AL-FFH, первый параметр содержит правильное имя диска (в противном случае AL-OOH). Аналогичным образом AH дает информацию о втором параметре.

Поля 17 и 18 обеспечивают доступ программы ко всем параметрам командной строки. Поле 17 содержит общую длину цепочки параметров ( от  0 до 127), а поле 18 содержит эту цепочку с символом CR – 0Dh в конце. Здесь не содержится ни имя программы , ни параметры для переназначения стандартного входа или выхода7 Имя программы в формате устройство:путь:имя программного файла содержится в окружении программы после его последней переменной. Параметры переназначения недоступны для пользовательской программы.

Эти два поля перекрываются полем 19 – DTA, поэтому их нужно обработать до возможного разрушения в результате дисковых операций.

Поле 19 используется как DTA(область обмена с диском) по умолчанию.

Адрес PSP можно получить функцией 62h прерывания 21h, которая возвращает адрес СЕГМЕНТ:СМЕЩЕНИЕ (ES:BX).

3. Задание на лабораторную работу и требования к отчету

В ходе выполнения лабораторной работы необходимо разработать программу, осуществляющую ввод и обработку цифровых данных по заданной формуле. Ввод исходных данных осуществляется из командной строки в формате: /<имя параметра>=<значение>. Необходимо учитывать, что пользователь может задать параметры в любом порядке, например: “ /a=5 /b=10 /d=15 “ или “ /d=15 /b=10 /a=5 “, т.е. программа должна уметь анализировать имена параметров и корректно заполнять их содержимое. В программе должен осуществляться контроль за корректностью ввода данных, т.е. контроль на достаточность параметров, принадлежностью к заданным диапазонам вводимых значений, и правильностью выполнения преобразования - контроль за переполнением разрядной сетки в арифметических операциях. При возникновении ошибок должны выводиться соответствующие сообщения. Текст и формат сообщений придумать самостоятельно.

При выполнении лабораторной работы в программе разрешается использовать функции BIOS и DOS.

Программа должна быть написана для реального режима работы микропроцессора с использованием инструкций процессоров 8086 – 80286. Тип загружаемого файла – EXE. Текст программы должен содержать комментарии и должен быть построен по принципу структурного программирования. Т.е. должны присутствовать процедуры ввода данных, перевода данных из числового формата в строковый и наоборот, а также процедуры математической обработки, которые могут быть использованы в других лабораторных работах. Обратите внимание, в последующих лабораторных работах использование функций DOS может быть запрещено.

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

Варианты представлены в табл. 1. Номер варианта берется в соответствии с порядковым номером в журнале по проведению лабораторных работ.

Таблица 1

Вариант

Размер данных

Знаковые данные

Вариант преобразования

1

Байт

нет

(A*B-C)/D

2

Байт

нет

A/C-C*B

3

Байт

нет

(A+B)*C/D

4

Байт

нет

C*2/(A-B)

5

Байт

да

D*A/(A+B)

6

Байт

да

(A v B)*D/(C-1)

7

Байт

да

(A-1)*2/(C*2+B)

8

Байт

да

D*4/((A-C)*(B-1)

9

Байт

нет

B*(A+B)/(C-D-1)

10

Байт

нет

(C&D)xor(A&B)*D/(A+B)

11

Байт

нет

((C*4) xor B)/(A*D)

12

Байт

нет

(C-10*2/(D+B-A)

13

Слово

да

(A*B-C)/D

14

Слово

да

A/C-C*B

15

слово

да

(A+B)*C/D

16

слово

да

C*2/(A-B)

17

слово

нет

D*A/(A+B)

18

слово

нет

(A v B)*D/(C-1)

19

слово

нет

(A-1)*2/(C*2+B)

20

слово

нет

D*4/((A-C)*(B-1)

21

слово

да

B*(A+B)/(C-D-1)

22

слово

да

(C&D)xor(A&B)*D/(A+B)

23

слово

да

((C*4) xor B)/(A*D)

24

слово

да

(C-10*2/(D+B-A)

Литература

  1.  П. Абель. Язык ассемблера для IBM PC и программирования. - М. Высшая школа, 1992.

Л. Скэнлон. Персональные ЭВМ IBM PC и XT Программирование на языке ассемблера. М. Радио и связь, 1992.

Н. Войников. Системное программирование для Правец-16. София Техника 1990

В. Кулаков. Программирование на аппаратном уровне. Специальный справочник. СПб Питер 2000.

В. Юров С. Хорошенко. Assembler учебный курс. СПб Питер 1999.


 

А также другие работы, которые могут Вас заинтересовать

27827. Сущность территориальных финансов и их структура 19.44 KB
  Возникновение и развитие территориальных финансов связано с двумя обстоятельствами: конкретные расходы целесообразно осуществлять на конкретном уровне управления; развитие территориальных финансов связано с федеральным принципом построения государства. Так на уровне территорий легче определить оптимальное соотношение между налогами на доходы и имущество; проще оптимизировать социальные расходы по конкретным получателям помощи. Расходы территориальных бюджетов делятся на: обязательные и дискреционные. Обязательные расходы территорий это те...
27828. Состав и назначение схемы территориального планирования субъекта РФ 14.68 KB
  На картах показываются административные границы земли лесного фонда земли ООПТ границы земель обороны и безопасности границы земель с х назначения территории объектов культурного наследия границы зон с особыми условиями использования территории границы территорий подверженных риску возникновения ЧС и т. Чертеж отражающий современное состояние использования территории – опорный каркас отражает состояние в котором территория находится сейчас На опорном плане должны быть: границы административные ранжированные по численности населения...
27829. Понятие инвестиционного климата и регулирование инвестиций в регионе РФ 24.84 KB
  Государственное регулирование инвестиционной деятельности Государство для выполнения своих функций регулирования экономики использует как экономические косвенные так и административные прямые методы воздействия на инвестиционную деятельность и экономику страны путем издания и корректировки соответствующих законодательных актов и постановлений а также путем проведения определенной экономической в том числе и инвестиционной политики. Сущность форм и методов государственного регулирования инвестиционной деятельности осуществляемой в...
27830. Основные требования к устройствам АПВ и расчет их параметров. Схемы устройств на переменном и выпрямительном оперативном токе в установках высокого напряжения 177.5 KB
  Основные требования к устройствам АПВ и расчет их параметров. Применение АПВ обязательно для всех ЛЭП всех напряжений на шинах ПС. Основные требования к устройству АПВ и расчет их параметров. АПВ бывают трёх и однофазные.
27831. Дифференциальное реле с торможением: принцип действия, устройство дифференциаль 173 KB
  Дифференциальное реле с торможением: принцип действия устройство дифференциального реле с магнитным торможением на принципе сравнения абсолютных значений двух электрических величин. Использование в схемах ДЗ реле с торможением. 1 – уставка тока срабатывания реле обычного. 2 – ток небаланса реле в зависимости от тока внешнего КЗ.
27832. Дифференциальное реле с механическим торможением. Применение и устройство насыщенного трансформатора тока в дифференциальной защите 86 KB
  Дифференциальное реле с механическим торможением. Система сочетает принцип БНТ и принципы реле с торможением: большинству току небаланса соответствует автоматически больший ток торможения в тормозных обмотках. При КЗ в зоне К2 – реле действует но остается тормозной момент что снижает чувствительность. Rмг мало а коэффициент трансформации велик поэтому ток не баланса по прежнему плохо трансформируется в рабочую обмотку и реле КА загрублено.
27833. Фильтры симметричных составляющих токов и напряжений в релейной защите 95 KB
  Фильтры бывают: RL, RC и трансформаторные. Бывают простые и комбинированные, ток на выходе пропорционален всем составляющим.
27834. Трансформаторы тока в схемах релейной защиты 162.5 KB
  F1 – F2 = Fном I1ω1 – I2ω2 = Iномω1 разделив на ω2: I`1 – I2 = I`ном следовательно I`1 = I2 I`ном Если ТТ идеальный Iном = 0 I`1 = I2 – это хорошо но не возможно сделать без Iном т. Для идеального ТТ nт = nв Векторная диаграмма для ТТ Угол γ определяется потерями в стали трансформатора Е2 – опережает Ф на 90 I2 – отстает от Е2 на угол φ который определяется R и Х нагрузки и вторичной обмотки z2 и zн Угол δ – угловая погрешность ТТ ΔI – токовая...
27835. Расчет выдержек времени МТЗ 76 KB
  Основным пусковым органом МТЗ с независимой выдержкой времени является реле РТ40 а МТЗ с ограниченной выдержкой времени – РТ80. Реле РТ80 Сложное большое реле которое совмещает в себе токовое времени и указательное реле. Соответственно защита на этом реле имеет преимущества. В этом реле РТ80 есть два элемента: индукционный элемент эл.