Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
 |  |  |  |  |
Спасибо всем за советы 16.10.01 09:09 Число просмотров: 1021
Автор: z0 <z0> Статус: Member
|
> Короче я стормозил - напрасно ваше время только отнял. > Надо было полный путь указать к файлу - и все заработало.
да ну мелочи 5 минут и все дела
а интересно мне стало кстати потому что я в свое время кодил прогу по заказу одной биржи - слежка за сотрудниками, кто какие проги запускает и т.п. и помню что COMMAND.COM при работе AUTOEXEC.BAT и в шелле по-разному работает немного ну и думаю - может чел нарвался на эту ситуевину, так он тут засядет, там противная отладка т.к. только на загрузке можно ловить, но у тебя все обошлось
успехов!
|
|
<programming>
|
Люди умные подскажите 15.10.01 08:05
Автор: J Статус: Незарегистрированный пользователь
|
Сделал небольшую прогу - она должна запускать программу в зависимости от некоторых условий. Работает только как-то непонятно.
Если ввести имя проги с клавиатуры - то все нормально работает - нужный файл загружает.А если прописать ее в autoexec.bat - то при загрузке выдает ошибку и не грузит ничего (в AX 0001h). Это я на своем домашнем компе проверял. А сегодня на рабочем проверил - тоже самое!!!!!!!!!!!!!
В интернете искал подобное - нашел даже исходники от разных умных людей - и таже самая история! Проверял на Win98 SE.
text segment 'code'
assume cs:text,ds:text
org 100h
main_ proc
mov ah,4ah
mov bx,100
int 21h
to_:
mov ax,offset com_line
mov bx,offset params
mov [bx]+2,ax
mov ax,cs
mov [bx]+4,ax
mov ah,4bh
mov al,0
mov bx,offset params
mov dx,offset fname
int 21h
mov ax,4c00h
int 21h
fname db 'proc.com',0
com_line db 0,13
params dw 7 dup (0)
main_ endp
text ends
end main_
|
 |
Люди умные подскажите 15.10.01 18:23
Автор: z0 <z0> Статус: Member
|
> В интернете искал подобное - нашел даже исходники от разных > умных людей - и таже самая история! Проверял на Win98 SE.
взял твой исходник, построил, кинул в корень, туда же кинул ARJ.EXE которого обозвал PROC.COM, в autoexec.bat дописал
test.com
pause
перезагрузился - все работает, показывает список ключей ARJ
так что все у тебя правильно
может у тебя PROC.COM не в корне - так укажи к нему полный путь
PS: windows 98 SE RUS
|
 |
Люди умные подскажите 15.10.01 14:41
Автор: Rook <Alex Sergeev> Статус: Member
|
Мне кажется, что это из-за не заданной рабочей директории, в при запуске из автоэкзека раб. дир. - это корень.
Попробуй прописать в path=c:\путь\к\программе.
Что-то подобное было сказано ниже, но там как то тяжеловесно.
> Сделал небольшую прогу - она должна запускать программу в > зависимости от некоторых условий. Работает только как-то > непонятно. > Если ввести имя проги с клавиатуры - то все нормально > работает - нужный файл загружает.А если прописать ее в > autoexec.bat - то при загрузке выдает ошибку и не грузит > ничего (в AX 0001h). Это я на своем домашнем компе > проверял. А сегодня на рабочем проверил - тоже > самое!!!!!!!!!!!!! > > В интернете искал подобное - нашел даже исходники от разных > умных людей - и таже самая история! Проверял на Win98 SE. > > text segment 'code' > assume cs:text,ds:text > org 100h > > main_ proc > mov ah,4ah > mov bx,100 > int 21h > > to_: > mov ax,offset com_line > mov bx,offset params > mov [bx]+2,ax > mov ax,cs > mov [bx]+4,ax > > mov ah,4bh > mov al,0 > > mov bx,offset params > mov dx,offset fname > > int 21h > > mov ax,4c00h > int 21h > > fname db 'proc.com',0 > com_line db 0,13 > params dw 7 dup (0) > > main_ endp > text ends > end main_
|
 |
Люди умные подскажите 15.10.01 11:45
Автор: Chingachguk <Chingachguk> Статус: Member
|
Попробуй int 2eh !
> Сделал небольшую прогу - она должна запускать программу в > зависимости от некоторых условий. Работает только как-то > непонятно. Насколько я понял, ты хочешь запускать внешнюю прогу. Но !
- Не забывай, что программе (твоей) отводиться ВСЯ память (не тока 64K) вплоть до 640K - Поэтому перед запуском ее неплохо было бы освободить(ф-ции 4ah):
.286
NewProgramSize equ 1000h
text segment byte public
assume cs:text,ds:text
org 100h
begin:
mov sp,NewProgramSize
mov ah,4ah
mov bx,sp
inc bx ; bx = NewSize + 16 bytes, es=Our PSP
int 21h
jnc @RunProg
call @Error
jmp short @Exit
@RunProg:
- К тому же вместо стандартных досовых ф-ций запуска программ рекомендую использовать прерывание 2eh. Почему ? Потому, что для стандартных ф-ций надо настраивать окружение дочерней программы итд, что не вызывает желания потратить кучу тайма на изучение всего этого... Вот как я запускаю внешнюю программу интом 2eh:
@RunProg:
mov si,offset CMD
; ds:si = to command line (смотри ниже)
pusha
push ds
push es
; Сохранили все регистры
mov word ptr cs:@SS+1,ss
mov word ptr cs:@SP+1,sp
; После вызова int 2eh даже стек будет разрушен !!!
int 2eh ; Выполнить внешнюю прогу, не загружая копию command.com
@SS: mov ax,0000h ; Здесь будет mov ax,Твой сегмент стека
mov ss,ax
@SP: mov ax,0000h ; А здесь - твой sp
mov sp,ax
; Теперь со старого стека восстанавливаем твои регистры
pop es
pop ds
popa
; А теперь маленькая тонкость !!! После выполнения программы управление передасться command.com !!! И тебе надо будет написать ему EXIT, чтобы работать дальше ... Ну так сделаем это :
mov si,offset Keys
call PutKeys
;...
PutKeys proc near
cld
@Key:
lodsw
test ax,ax
jnz @NoEnd
retn
@NoEnd:
mov ah,05h
int 16h ; Положим в буфер клавы клавиши ...
jmp short @Key
PutKeys endp
; Что-то типа ASCII-Z строки
Keys db 'e',12h,'x',2dh,'i',17h,'t',14h,0dh,1ch,0,0
; Собственно, CMD
CMD db 8,'test.bat',0dh ; Типа pas-строки, в конце обязательно код 0dh,
; В начале длина команды в байтах.
; Так что можешь запускать не тока com, но и bat -файлики ;
Chingachguk.
|
 |
[ASM] Попробуй настрой DS 15.10.01 09:43
Автор: Cyril <sc> Статус: Member
|
> text segment 'code' > assume cs:text,ds:text > org 100h > > main_ proc
PUSH CS
POP DS
> mov ah,4ah > mov bx,100 > int 21h
|
 |  |
[ASM] Попробуй настрой DS 15.10.01 11:47
Автор: Chingachguk <Chingachguk> Статус: Member
|
|
Вроде в com - прогах DS всегда вначале равен CS ? ;)))
|
 |  |  |
[ASM] А это смотря что построить :-) 15.10.01 19:41
Автор: Cyril <sc> Статус: Member
|
|
|
 |  |  |  |
Спасибо всем за советы 16.10.01 08:34
Автор: J Статус: Незарегистрированный пользователь
|
Короче я стормозил - напрасно ваше время только отнял.
Надо было полный путь указать к файлу - и все заработало.
|
 |  |  |  |  |
Спасибо всем за советы 16.10.01 09:09
Автор: z0 <z0> Статус: Member
|
> Короче я стормозил - напрасно ваше время только отнял. > Надо было полный путь указать к файлу - и все заработало.
да ну мелочи 5 минут и все дела
а интересно мне стало кстати потому что я в свое время кодил прогу по заказу одной биржи - слежка за сотрудниками, кто какие проги запускает и т.п. и помню что COMMAND.COM при работе AUTOEXEC.BAT и в шелле по-разному работает немного ну и думаю - может чел нарвался на эту ситуевину, так он тут засядет, там противная отладка т.к. только на загрузке можно ловить, но у тебя все обошлось
успехов!
|
|
|