- •Для специальности
- •230105.51 (2203) Программное обеспечение вычислительной техники и автоматизированных систем
- •Рецензенты: о.В. Фаллер, преподаватель Колледжа МосГу;
- •Содержание
- •7.8. Организация программных комплексов 56
- •7.8. Организация программных комплексов 53
- •1.2. Запуск операционной системы
- •1.3. Координация действий при работе эвм
- •Пояснительная записка
- •1. Общие вопросы теории операционных систем
- •1.1. Классификация программного обеспечения
- •1.4. Понятие файловой системы
- •1.5. Схема отыскания кластеров файла на диске в файловой системе fat16
- •2. Командный язык для управления системой
- •2.1. Особенности командного языка
- •2.2. Организация пакетной обработки информации
- •2.2.1. Формальные параметры командных файлов
- •2.2.2. Дополнительные возможности пакетной обработки. Утилита be
- •3. Конфигурирование ядра ос на примере ms dos
- •3.1. Файл config.Sys
- •3.2. Управление распределением оперативной памяти в реальном режиме работы процессора
- •3.3. Файл автозагрузки autoexec.Bat
- •4. Типы программ
- •5. Системный сервис ms dos
- •6. Организация программных комплексов
- •6.1. Код возврата программы
- •6.2. Программный хвост
- •6.3. Окружение программы
- •6.4. Запуск одной программы из другой
- •6.5. Макрокоманды
- •Пример использования макрокоманды:
- •6.6. Создание процедур и передача параметров
- •6.7. Межсегментный вызов процедур
- •6.8. Модульный принцип построения программ
- •7. Ос Windows. Особенности работы
- •7.1. Работа с файловой системой. Ms Visual Basic ver 6.0
- •7.2. Api Интерфейс Windows на примере Visual Basic ver 6.0
- •7.3. Работа с буфером обмена
- •7.4. Работа со шрифтами
- •7.5. Работа с клавиатурой и мышью
- •7.6. Ole Технология
- •7.7. Работа с мультимедиа
- •7.8. Организация программных комплексов
- •7.9. Sdi и mdi программы
- •8. Разработка справочных систем для Windows 32x
- •8.1. Формат справки WinHelp
- •8.2. Подготовка справочного файла с помощью программы Windows Help Designer
- •8.3. Подключение справочной системы к программе
- •8.4. Разработка справочных систем в формате html
- •8.4.1. Создание тем справочной службы
- •8.4.2. Создание проекта справочной службы
- •8.4.3. Формирование оглавления
- •8.4.4. Задание поисковых индексов
- •8.5. Подключение справочных файлов к программам на Visual Basic
- •9. Общая архитектура операционных систем
- •9.1. Архитектура ос
- •9.2. Ядро и вспомогательные модули ос
- •9.3. Ядро в привилегированном режиме
- •9.4. Многослойная структура ос
- •9.5. Аппаратная зависимость и переносимость ос
- •9.6. Типовые средства аппаратной поддержки ос
- •9.7. Машинно-зависимые компоненты ос
- •9.8. Переносимость операционной системы
- •9.9. Концепция микроядерной архитектуры
- •9.10. Преимущества и недостатки микроядерной архитектуры
- •9.11. Совместимость и множественные прикладные среды
- •9.12. Двоичная совместимость и совместимость исходных текстов
- •9.13. Трансляция библиотек
- •9.14. Способы реализации прикладных программных сред
- •Приложение. Некоторые функции системного сервиса msdos. Прерывание 21h Организация ввода с клавиатуры
- •Организация вывода
- •Файлы и каталоги
- •Запуск одной программы из другой
- •Литература
- •Для специальности
- •230105.51 (2203) Программное обеспечение вычислительной техники
6.4. Запуск одной программы из другой
Для запуска дочерней программы служит функция 4Bh, прерывания 21h.
AH=4Bh
AL=0
ES:BX=адрес блока параметров
DS:DX=адрес имени программы в формате ASCIIZ формате
Ошибка CF=1
Блок параметров занимает 7 слов:
Первое слово – адрес нового сегмента окружения
Два слова – адрес хвоста программы. Четыре слова – в настоящее время не используются.
Пример. Блок параметров и новое окружение программы.
parmblk dw envseg
dd cmdtail
4 dw dup(0)
cmdtail db 9,’ FILE.TXT’,0Dh
envseg segment ‘ENVIR’
db ‘WORK=c:\tem\t.dat’,0
db 0
envseg ends
Предварительно, перед запуском новой программы, нужно освободить лишнюю память с помощью функции 4Ah. Данная функция требует указания размера памяти, который занимает родительская программа. Для реального определения размера программы в формате ЕХЕ ее замыкают фиктивным сегментом и применяют команду sub для вычитания из адреса фиктивного сегмента адреса начала программы.
AH=4Ah
BX=блок в параграфах
ES=сегментный адрес модифицируемого блока
Ошибка CF=1
Пример запуска программы.
;EXE program
codesg segment 'CODE'
assume CS: codesg,DS:
datasg,SS: stacksg
begin:
mov AX,datasg
mov DS,AX
;----------------------------
mov AX,fict ;адрес
;фиктивного сегмента
mov BX,ES ;адрес PSP
;программы
sub AX,BX ;размер
;программы
;----------------------------
mov BX,AX ;освобождение
;памяти
mov AH,4Ah
int 21h
;----------------------------
push DS :ES -> DS
pop ES
mov AH,4Bh
mov AL,0
mov BX,offset parmblk
mov DX,offset procname
int 21h ;запуск дочерней
;программы
jc errex
jmp fin
;-----------------------------
errex: ;ошибка запуска
mov AH,09h
mov DX,offset mes
int 21h
fin:
mov AX,4C00h
int 21h
codesg ends
datasg segment 'DATA'
parmblk dw 7 dup (0)
;дочерняя программа
procname db 'proc.exe',0
mes db 'Error !!!',10,13,'$'
;-------------------------
datasg ends
stacksg segment stack 'STACK'
dw 128 dup (0)
stacksg ends
;фиктивный сегмент
fict segment 'FICT'
fict ends
end begin
6.5. Макрокоманды
Макрокоманды позволяют автоматизировать частое обращение к командам, набор которых одинаковый, но выполняются они с различными данными. Формат макрокоманды ассемблера имеет вид:
name macro p1,p2,…,pi
;команды
endm
p1,p2,…,pi – формальные параметры команды.
Вызов макроса
name n1,n2,…,ni
n1,n2,…,ni – фактические значения для команды.
Пример использования макрокоманды:
codesg segment 'code'
assume cs:codesg,ss: codesg,ds: codesg
org 100h
getmes macro off ;вывод произвольного сообщения
mov ah,09h
mov dx,off
int 21h
endm
begin:
mov dx,offset mes
getmes dx ;обращение к команде
mov AX,4c00h
int 21h
bufer db 128 dup(0)
mes db 'Hello World !!!',0ah,0dh,'$'
codesg ends
end begin
