Другие языки программирования и технологии

ассемблер. задача. в строке определить позицию первого вхождения букве z

задача. в строке определить позицию первого вхождения букве z
format PE console
entry N77010001
include 'win32a.inc'
stack 200h

section '.data' data readable writeable
Prompt db 'Bвeдитe cтpoкy:', 13, 10, 0
Frmt db 'Позиция первого вхождения буквы "z" = %u',0
ResNo db 'В строке нет буквы "z"',0
hStdIn rd 1
hStdOut rd 1
BuffLen equ 80
Len rd 1
Buffer rb BuffLen

section '.code' code readable executable
N77010001:
    invoke GetStdHandle, STD_OUTPUT_HANDLE
    mov [hStdOut], eax
    invoke GetStdHandle, STD_INPUT_HANDLE
    mov [hStdIn], eax
    stdcall Print, Prompt
    invoke ReadConsole, [hStdIn], Buffer, BuffLen, Len, NULL
    mov edi, Buffer
    mov ecx, [Len]
    mov al, 'z'
    repne scasb
    mov esi, ResNo
    jne Result
    mov edx, [Len]
    sub edx, ecx
    cinvoke wsprintfA, Buffer, Frmt, edx
    mov esi, Buffer
Result:
    stdcall Print, esi
Flush:
    cmp [Len], BuffLen
    jb KeyWait
    invoke ReadConsole, [hStdIn], Buffer, BuffLen, Len, NULL
    jmp Flush
KeyWait:
    invoke ReadConsole, [hStdIn], Buffer, BuffLen, Len, NULL
    invoke ExitProcess, NULL

proc Print stdcall, Str:dword
    invoke lstrlenA, [Str]
    invoke WriteConsole, [hStdOut], [Str], eax, NULL, NULL
    ret
endp

section '.idata' import data readable
library kernel32, 'kernel32.dll', user32, 'user32.dll'
include 'api/kernel32.inc'
include 'api/user32.inc'

Программа различает регистр букв. Во введённой строке ищет только строчную "z".
Selera7
Selera7
51 590
Лучший ответ