ВУЗы и колледжи

помогите с Ассемблером

нужно очень срочно решить задачку, я вообще не понимаю этот ассемблер как бы не старалась, помогите пожалуйста кто разбирается!!! !
Ввести текст в байтовый массив. Осуществить замену строчных букв на прописные и вывести весь текст.
Текст вывести как в файл так и на экран. Имя файла берется из командной строки, если он задан, если нет, то запросить ввести имя файла.
Вы заочница?
На дневной форме обучения такие "задачки" приравниваются к курсовой работе. А у заочников - это всего лишь рядовые задачки :D

32-разрядное консольное приложение Windows, компилятор MASM:

.386
.model flat, stdcall
option casemap:none

include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib

.stack 100h

.data
Prompt1 db 'Введите имя файла: ',0
Prompt2 db 'Введите текст: ',0
Result1 db 10,'Преобразованный текст: ',0
Result2 db 10,'Создан файл ',0

.data?
hStdIn dd ?
hStdOut dd ?
hFile dd ?
TxtBuff db 1026 dup (?)
BuffLength equ $ - TxtBuff
FileName db 65 dup (?)
NameLength equ $ - FileName
NameBuff db NameLength dup (?)

.code
N84943613:
    invoke GetStdHandle,STD_INPUT_HANDLE
    mov hStdIn,eax
    invoke GetStdHandle,STD_OUTPUT_HANDLE
    mov hStdOut,eax
    invoke GetCommandLine
    mov edi,eax
    invoke lstrlenA,edi
    mov ecx,eax
    mov al,20h
    repne scasb
    jne NoFileName
    mov esi,edi
    lea edi,FileName
    inc ecx
    rep movsb
    invoke lstrlenA,addr FileName
    test eax,eax
    jz NoFileName
    mov ecx,eax
    inc ecx
    lea edi,NameBuff
    lea esi,FileName
    rep movsb
    invoke CharToOem,addr FileName,addr FileName
    jmp InputText

NoFileName:
    lea esi,Prompt1
    call Print
    lea edi,FileName
    mov ecx,NameLength
    call Input
    invoke OemToChar,addr FileName,addr NameBuff

InputText:
    lea esi,Prompt2
    call Print
    lea edi,TxtBuff
    mov ecx,BuffLength
    call Input

    lea esi,TxtBuff
    invoke lstrlenA,esi
    mov ecx,eax
    mov edi,esi
DoLoop:
    lodsb
    mov bl,20h
    cmp al,61h
    jb CopyChar
    cmp al,7Ah
    jbe UpCase
    cmp al,0A0h
    jb CopyChar
    cmp al,0AFh
    jbe UpCase
    cmp al,0E0h
    jb CopyChar
    add bl,30h
    cmp al,0EFh
    jbe UpCase
    mov bl,1
    cmp al,0F7h
    ja CopyChar
UpCase:
    sub al,bl
CopyChar:
    stosb
    loop DoLoop

    lea esi,Result1
    call Print
    lea esi,TxtBuff
    call Print

    invoke CreateFile,addr NameBuff,GENERIC_WRITE,0,\
      0,CREATE_ALWAYS,FILE_ATTRIBUTE_NORMAL,0
    mov hFile,eax
    invoke lstrlenA,addr TxtBuff
    invoke WriteFile,hFile,addr TxtBuff,eax,addr hStdIn,0
    invoke CloseHandle,hFile

    lea esi,Result2
    call Print
    lea esi,FileName
    call Print

    invoke ExitProcess,0

Print proc
    invoke lstrlenA,esi
    invoke WriteConsole,hStdOut,esi,eax,0,0
    ret
Print endp

Input proc
    local Len
    invoke ReadConsole,hStdIn,edi,ecx,addr Len,0
    mov ecx,Len
    mov al,0Dh
    repne scasb
    mov byte ptr [edi-1],0
    ret
Input endp

    end N84943613



P.S. Никакие ошибки не обрабатываются.
Игорь Крикун
Игорь Крикун
51 590
Лучший ответ