Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.05.2011, 12:07   #1
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию Параметр в командной строке

Помогите пожалуйста найти ошибку. Не понимаю почему строка из командной строки не копируется в переменную FileName.

Код:
TITLE Lab
.MODEL small
org 100h
.DATA
 
InMes db 13,10,'Enter text',13,10,'$' 
FileNameMes db 13,10,'Enter file name',13,10,'$'
array	db	80 dup (?)
TextLength dw ?	
FileNameLength dw ?
Handler	dw	?

FileName	db	80 dup (0)
Err4 db 13,10,'Not free logical number',13,10,'$'
Err5 db 13,10,'Permission denied',13,10,'$'
ErrMes db 13,10,'Not enought disk space',13,10,'$'
Err3 db 13,10,'Path not found',13,10,'$' 
null db 0

.CODE
;*********************main**************************
;

start proc 
	mov dx,@DATA
	mov ds,dx
        mov CL,ES:80h
	mov ah,2h	
	mov dl,cl
	int 21h
        cmp CL,	0	
        je  install_without_arg

    	mov CL,dl ;Ñòîëüêî áàéòîâ ïåðåñëàòü 
	xor ch,ch
	mov si,82h ;àäðåñ ñòðîêè àðãóìåíòîâ 
	mov di,	offset FileName      
	cld ;Äâèæåíèå ïî ñòðîêå âïåðåä
	rep movsb ;Ïåðåñûëêà  
	mov    ah, 9h
	lea    dx, FileName
	int    21h	
	jmp install_with_arg	
	install_without_arg:
	mov    ah, 9h
	lea    dx, FileNameMes
	int    21h
	call inFileName
	install_with_arg:
	call create_file
	jc error 		
	mov    ah, 9h
	lea    dx, InMes
	int    21h
	call input_proc 
	call sort          
	mov		bx, 1
	push bx          
	call output    
	mov		bx, Handler
	push bx  
	call output 
	jc error
	MOV 	AH, 3Eh			
	MOV		BX, Handler
	INT 21h
	MOV		AX, 4C00h		
	INT 	21h
	
	error:
	call ProcError
	MOV		AX, 4C00h		
	INT 	21h
	
start endp
;***************************************

;*******procedures**********************
;
;*******file name input*****************
inFileName proc
lea si,FileName 
lea dx,FileName
mov bl,byte ptr [si]
input_file_name:
    mov ah ,01h 
    cmp al,'9'
    je input_file_name_end
    mov byte ptr [si],al
    int 21h  
    add si,1    
    loop input_file_name      
input_file_name_end:  
mov byte ptr [si],0
mov FileNameLength,si
sub FileNameLength,dx 
mov dx,FileNameLength
add FileNameLength,1
ret
inFileName endp 

;***********input of text in array****************
input_proc proc

lea si,array 
lea dx,array
mov bl,byte ptr [si]
input:
    mov ah ,01h 
    cmp al,'0'
    je input_end
    mov byte ptr [si],al
    int 21h  
    add si,1    
    loop input

input_end: 

mov TextLength,si
sub TextLength,dx 
mov dx,TextLength   
ret
input_proc endp

;**************sorting********************
sort proc
    push ax
    push dx
    push cx
    push si
    mov ax, 1
    sort_outer:
        cmp ax, 1
        jnz sort_end
        mov ax, 0

        mov cx, TextLength
        dec cx
        lea si, array

    sort_inner:
        mov bl,byte ptr [si]
        mov dl,byte ptr [si+1]
        cmp bl, dl
        jng nochange
        mov byte PTR [si+1], bl
        mov byte PTR [si], dl
        mov ax, 1
    nochange:
        add si, 1
        loop sort_inner
        jmp sort_outer

    sort_end:

    pop si
    pop cx
    pop dx
    pop ax 
ret
sort endp 

;******************output on consol or file*************
output proc
    
             PUSH BP
             MOV BP,SP    
    
    mov		ah, 40h 
mov     cx,TextLength
mov		bx, [bp+4]		
mov		dx, offset array	
int		21h 


MOV SP,BP     ;Âîññòàíîâëåíèå SP.
             POP BP 
;Error:
  
ret
output endp  

;********create file*********************
create_file proc
MOV		AH, 3Ch			
MOV 	CX, 0			
MOV		DX, OFFSET Filename
add dx,1	
INT 	21h			
Mov		Handler, AX	

ret
create_file endp 

;**********error handling*************
ProcError proc
	cmp ax,cx
	jl ErrorMes
cmp ax,3
je error3
cmp ax,4
je error4
cmp ax,5
je error5
error3:
mov    ah, 9h
lea    dx, Err3
int    21h
ret
error4:
mov    ah, 9h
lea    dx, Err4
int    21h
ret
error5:
mov    ah, 9h
lea    dx, Err5
int    21h
ret
	ErrorMes:	
	mov    ah, 9h
	lea    dx, ErrMes
	int 21h
	ret
ProcError endp

end start
Nina+ вне форума Ответить с цитированием
Старый 30.05.2011, 00:39   #2
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию

Никто не знает в чём проблема? Я просто не знаю уже, что делать...
Nina+ вне форума Ответить с цитированием
Старый 30.05.2011, 16:18   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

вот, абсолютно ни на что не претендую... вроде бы работает...
дальше - сами-сами...
Код:
start proc 


        mov dx,@DATA
        mov es,dx
        mov CL,ds:80h
        mov ah,2h       
        mov dl,cl
        int 21h
        cmp CL, 0       
        je  install_without_arg


        mov CL,dl ;Noieuei aaeoia ia?aneaou 
        xor ch,ch
        mov si,82h ;aa?an no?iee a?aoiaioia 
        lea di, FileName ;di указывает на fname 
        cld ;Aae?aiea ii no?iea aia?aa
        rep movsb ;es указывает на сегмент данных, ds - на PSP 
        mov dx,@DATA
        mov ds,dx
        mov byte ptr[di-1],'$' ;в fname в конец дописываем $

        mov    ah, 9h
        lea    dx, FileName
        int    21h      
        jmp install_with_arg    
        install_without_arg:
        mov dx,@DATA
        mov ds,dx
        mov    ah, 9h
        lea    dx, FileNameMes
        int    21h
        call inFileName
        install_with_arg:
p.s. обратите внимание, что я изменил обращение:
теперь es указывает на сегмент данных, ds - на PSP
В моём примере это важно!!

p.p.s. кусок кода мною нагло позаимствован с другого форума (c) rain87
Serge_Bliznykov вне форума Ответить с цитированием
Старый 30.05.2011, 21:54   #4
Nina+
Пользователь
 
Регистрация: 19.11.2008
Сообщений: 39
По умолчанию

Спасибо большущее!!!
Nina+ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
работа в командной строке genrix Общие вопросы C/C++ 6 24.02.2011 17:19
В командной строке вводится 1 параметр Snapper Помощь студентам 5 18.12.2010 09:39
Кракозябры в командной строке Syltan Общие вопросы по Java, Java SE, Kotlin 5 22.05.2010 14:08
программа в командной строке Кристина13 Помощь студентам 0 11.06.2009 17:42
Обращение к командной строке yura_$198802 Общие вопросы Delphi 15 09.04.2009 03:37