Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.73/11: Рейтинг темы: голосов - 11, средняя оценка - 4.73
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 162
1

[Emu8086] Запуск из программы другой программы

31.05.2014, 06:29. Просмотров 2066. Ответов 5
Метки нет (Все метки)

Доброе утро, форумчане!
Задача следующая:
Есть Emu8086. Нужно написать программу, которая запускает другую программу (/путь/name.exe).
В Ассемблере мало чего понимаю...
Не прошу писать код программы (хотя было б неплохо какой-нибудь пример) . А просто алгоритм построения данной программы и какие регистры следует использовать.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
31.05.2014, 06:29
Ответы с готовыми решениями:

Запуск внешней программы из другой программы
День добрый! Мне нужно запустить exeшник Hello world программы при компиляции другой программы....

Запуск из программы другой программы с параметрами
Исходные данные: 1)ОС Linux ubuntu, xubuntu; 2)Есть некоторая простенькая написанная программка;...

Запуск программы только из другой программы
Здравствуйте уважаемые программисты, сегодня столкнулся с проблемой, естественно первым делом...

Запуск программы из другой программы
Всем добрый день. Помогите пожалуйста с проблемой - нужно реализовать запуск программы из другой...

5
1766 / 744 / 153
Регистрация: 03.06.2009
Сообщений: 5,136
31.05.2014, 08:35 2
Лучший ответ Сообщение было отмечено Dutenass как решение

Решение

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
.model small
.data
msg1    db 13,10,'Trying execute second.exe$'
msg2    db 13,10,'Error$'
msg3    db 13,10,'First terminating. Press any key$'
fn  db 'second.exe',0   ;Имя запускаемого файла
param   db 10,' bufer.txt',13   ;командная строка
; === Exec Parameter Block (EPB) для функции 4Bh ===
env dw 0            ;Сегмент среды (окружения DOS) для загружаемой программы
cmd_of  dw offset param     ;Смещение командной строки +
cmd_seg dw @data        ;+ сегмент командной строки
fcb1    dd 0            ;FCB (не используется)
fcb2    dd 0            ;FCB (не используется)
Len dw $-env  ;Длина EPB
dsize=$-msg1        ;размер сегмента данных
 
.stack 256
.code
start:
    mov ah,4ah      ;функция изменения размера блока памяти
    mov bx,((csize/16)+1)+256/16+((dsize/16)+1)+256/16;новый размер программы с учетом всех сегментов
    int 21h     ;ограничиваем блок данных нашей программы
    mov ax,@data    ;Настраиваем сегментные регистры
    mov ds,ax
    mov es,ax
    mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg1     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ax,4b00h        ;Функция EXEC (EXECute - загрузка и запуск программы)
    lea dx,fn       ;Имя файла для запуска
    lea bx,env      ; --- Готовим EPB ---
    int 21h         ;запуск
    jb er           ;если ошибка - переход
ex: mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg3     ;выводимое сообщение
    int 21h         ;выводим на экран
    mov ah,1        ;Ожидаем нажатия любой клавиши
    int 21h
    mov ax,4c00h        ;закончить программу
    int 21h
er: mov ah,9        ;функция вывода сообщения на экран
    lea dx,msg2     ;выводимое сообщение
    int 21h         ;выводим на экран
    jmp ex          ;выход
csize=$-start           ;размер сегмента кода
end start
Путь к программе допиливайте сами.
1
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 162
31.05.2014, 18:36  [ТС] 3
alexcoder, теперь пожалуйста объясните, почему программа не компилируется?)
Какие нужно параметры задать, если он пишет, что неверные...

Кликните здесь для просмотра всего текста
(21) Second operand is undefined variable(?), no zero before hex number(?)
(21) Wrong parameters: MOV bx,((csize/16)+1)+256/16+((dsize/16)+1)+256/16
(15) Illegal instruction: dsize=$-msg1 or wrong parameters.
(13) Illegal instruction: fcb2 dd 0 or wrong parameters.
(12) Illegal instruction: fcb1 dd 0 or wrong parameters.
(11) Overflow! - cannot be evaluated.
0
1766 / 744 / 153
Регистрация: 03.06.2009
Сообщений: 5,136
31.05.2014, 18:40 4
Потому что программа написана для тасма. Это раз.
В чем будет тогда ваше участие? Это два.
2
4 / 4 / 5
Регистрация: 05.01.2011
Сообщений: 162
31.05.2014, 18:48  [ТС] 5
alexcoder, Понял, подумаю над ней)
Только объясните, для чего нужны 12 и 13 строки?
0
1766 / 744 / 153
Регистрация: 03.06.2009
Сообщений: 5,136
31.05.2014, 19:51 6
pfrFCB_1 and...
pfrFCB_2 are unopened FCBs to be copied to the child's PSP.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
31.05.2014, 19:51

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Запуск программы из другой программы
Ошибка Not enough memory среда borland C++ 3.1 я чтото делаю неправильно или комп подводит?...

Запуск другой программы
section .data file db "b.sh" section .text global _start _start: mov ecx, 5...

Запуск одной программы из другой
Здравствуйте! Пытаюсь запустить одну программу из другой, но ничего не происходит (должна...

Программный запуск другой программы
Добрый день! В своей программе я должен запустить другую, довольно старую программу, написанную...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
6
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2020, vBulletin Solutions, Inc.