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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 31.10.2019, 20:09   #1
Programist_r
Пользователь
 
Регистрация: 08.05.2019
Сообщений: 27
По умолчанию Обработка параметров командной строки

Добрый день
Не могу решить задачку, помогите пожалуйста

Задача: написать программу на ассемблере, которая в зависимости от количества заданных параметров:
а) открыть файл с именем [параметр1] и отобразить его содержимое в окне консоли. Пример:
c:\program1.exe parametr1
б) создать файл с именем [параметр1] и записать содержимое в него [параметр2] Пример:
c:\program1.exe parametr1 parametr2
в) отобразить сообщение о неверном количестве параметров. Пример:
c:\program1.exe parametr1 parametr2 parametr3
c:\program1.exe

Нужно сделать програмку, которая создаёт файл и записывает к тому файлу текст, потом читает этот файл и показывает ошибку когда много параметров или мало


Имею такие наброски и не получается два кода соединить в один помогите пожалуйста БУДУ ОЧЕНЬ БЛАГОДАРЕН !!!


Первый код считывает данные с файла
Код:
include \masm32\include\masm32rt.inc
 
.data?
hInstance dd ?
hFile dd ?
tmpV dd ?
fSize dd ?
hBuff dd ?
readBytes dd ?
 
argc dd ?
argv dd ?
.data
 
txt2 db "Blad otwarcia pliku.", NULL
txt3 db "Blad odczytu pliku.", NULL
txt4 db "Blad alokacji pamieci.", NULL 
fName db "plik.txt"
 
.code
Start:
INVOKE AllocConsole
INVOKE GetStdHandle, STD_OUTPUT_HANDLE
mov hInstance, eax
 
        
INVOKE CreateFile,ADDR fName, GENERIC_READ, 0, NULL, OPEN_EXISTING,FILE_ATTRIBUTE_ARCHIVE,0
mov hFile, eax 
 
    .IF eax==INVALID_HANDLE_VALUE    
        INVOKE lstrlen, OFFSET txt2
        INVOKE WriteConsole, hInstance, OFFSET txt2, eax,ADDR tmpV, NULL
        jmp @end
    .ENDIF
 
    INVOKE GetFileSize,hFile,0
    mov fSize, eax
 
    INVOKE VirtualAlloc,0,eax,MEM_COMMIT,PAGE_READWRITE     
    .IF eax == NULL
        INVOKE lstrlen, OFFSET txt4
        INVOKE WriteConsole, hInstance,OFFSET txt4, eax,OFFSET tmpV, NULL          
    .ELSE
        mov hBuff, eax
        INVOKE ReadFile, hFile, eax, fSize, OFFSET readBytes, 0
 
        .IF eax == -1
            INVOKE lstrlen, OFFSET txt3
            INVOKE WriteConsole, hInstance,OFFSET txt3, eax,ADDR tmpV, NULL    
        .ELSE
            INVOKE WriteConsoleW, hInstance, hBuff, fSize,OFFSET tmpV, NULL
        .ENDIF
    .ENDIF
 
    INVOKE VirtualFree,eax,OFFSET fSize,MEM_RELEASE  
    INVOKE CloseHandle, hFile
 
@end:
 
INVOKE FreeConsole
INVOKE ExitProcess,0
 
END Start
Второй код связаный с параметрами
Код:
.586
include B:\masm32\include\masm32rt.inc
 
.data?
hInstance dd ?
tmpV dd ?
argc dd ?
argv dd ?
.data
cr db 10,13,NULL
 
.code
Start:
INVOKE AllocConsole
INVOKE GetStdHandle, STD_OUTPUT_HANDLE
mov hInstance, eax
 
INVOKE GetCommandLineW
INVOKE CommandLineToArgvW,eax,OFFSET argc
mov argv,eax
mov edi, argv
xor ecx, ecx
 
@p1:
   mov eax,[edi]
   mov ebx, eax
   add edi, 4
 
   push ecx
   INVOKE lstrlenW, eax
   INVOKE WriteConsoleW, hInstance, ebx, eax,OFFSET tmpV, NULL
   INVOKE WriteConsole, hInstance, OFFSET cr, 2,OFFSET tmpV, NULL
   pop ecx
   inc ecx
 
cmp ecx, argc
jne @p1 
 
; ожидаем нажатия клавиши (пауза).
  mov  ah,01h
  int  21h
 
INVOKE FreeConsole
INVOKE ExitProcess,0
 
END Start
Programist_r вне форума Ответить с цитированием
Старый 01.11.2019, 17:45   #2
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,162
По умолчанию

Код:
; ожидаем нажатия клавиши (пауза).
  mov  ah,01h
  int  21h
 
INVOKE FreeConsole
INVOKE ExitProcess,0
 
END Start
Mikl___ вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Nasm. Получение параметров командной строки. Adverse Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 4 16.04.2012 18:39
Asm. Передача параметров командной строки. Adverse Помощь студентам 0 15.04.2012 19:42
Обработка командной строки Dasharnb777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 0 07.02.2010 18:24
передача параметров программе при запуске из командной строки shurik_7866 Общие вопросы Delphi 3 03.06.2009 18:23
Получение параметров командной строки по PID sadist_ds Win Api 1 25.02.2009 20:22