Другие языки программирования и технологии
ассемблер. задача. в строке определить позицию первого вхождения букве 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".
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".
Похожие вопросы
- ассемблер, проверка длины строки
- Нужна помощь с программой на ассемблере - комментирование каждой строки
- Помогите с ассемблером (задачей про матрицы) внутри...
- написать программу на ассемблере: найти (в строке) и вывести слово, у которого код первого символа наибольший
- Строки ассемблер нужно заполнить строку (10) рандомными символами. (MASM) как? помогите!
- Задача Pascal , строки , помогите пожалуйста !!!
- Вопрос по С++ : Как определить количество цифр и букв в строчке.
- Задача на строки в Си++
- Дано натуральное число. Определить количество его цифр, кратных z. Написать в Паскаль
- Помогите решить задачу по строкам