IPB
ЛогинПароль:

> ПРАВИЛА РАЗДЕЛА!!!

1. Заголовок или название темы должно быть информативным
2. Все тексты программ должны помещаться в теги [CODE=asm] [/CODE]
3. Прежде чем задавать вопрос, см. "FAQ",если там не нашли ответа, воспользуйтесь ПОИСКОМ, возможно, такую задачу уже решали!
4. Не предлагайте свои решения на других языках, кроме Ассемблера. Исключение только с согласия модератора.
5. НЕ используйте форум для личного общения! Все, что не относиться к обсуждению темы - на PM!
6. Проверяйте программы перед тем, как выложить их на форум!!

> согласные в строке
сообщение
Сообщение #1


Новичок
*

Группа: Пользователи
Сообщений: 45
Пол: Мужской

Репутация: -  0  +


люди помогите еще написать прогу на ассемблере.я в нем туп как дуб , а сдавать все еще надо. Надо подсчитать кол-во согласных во введенной строке ? может кто нить поможет ?
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
сообщение
Сообщение #2





Группа: Пользователи
Сообщений: 3
Пол: Мужской

Репутация: -  0  +


Мимо проходил..

.386
.model flat, stdcall
option casemap:none
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\user32.inc


includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\user32.lib


.data
str1 db "string=", 0
bufferforstring db 10 dup(0)
str2 db "AmountAgree=", 0



agree db 230 ; согласные..кудаж без них..
$1 db 170
$2 db 173
$3 db 163
$4 db 232
$5 db 233
$6 db 167
$7 db 229
$8 db 228
$9 db 162
$10 db 175
$11 db 224
$12 db 171
$13 db 164
$14 db 166
$17 db 231
$18 db 225
$19 db 172
$20 db 226
$21 db 161 ; last.. в смысле последний символ с чем сравнивается проверка на конец







tittle db "RatYear`s",0
szformat db "%u", 0



.data?
hOutput dd ?
hInput dd ?
n dd ?
num dd ?
buf db 255 dup(?)
.code

programma:


invoke FreeConsole

invoke AllocConsole

invoke GetStdHandle, STD_OUTPUT_HANDLE
mov hOutput,eax

invoke GetStdHandle, STD_INPUT_HANDLE
mov hInput, eax

invoke SetConsoleTitle, addr tittle

invoke SetConsoleTextAttribute, hOutput, 9

push offset str1
call lstrlen


invoke WriteConsole, hOutput, addr str1, eax, addr n, NULL




invoke ReadConsole, hInput, addr buf, 255, addr num, NULL


push offset buf
call lstrlen
mov ecx, eax


mov byte ptr [str1], 0
sub ecx, 2 ; проверка на crlf и избавление от сего
cmp ecx, 0
jz next

lea esi, buf

; банально грузим в al символ введенный с клав. и крутим на сравнение до совпадения, с согласными из
;секции данных а именно согласныХ(конечно там может быть что угодно) инкрементируя байт в памяти

sycle1:
lodsb
mov edx, offset agree
mov ah, byte ptr 0
sycle2:
cmp ah, 161 ;проверка на последний символ согласный буковки
jz gotosycle1
mov ah, byte ptr [edx]
cmp al, ah
jz count
inc edx
jmp sycle2
count:
inc [str1]
gotosycle1:
loop sycle1


next:
xor eax, eax
mov al, byte ptr [str1]

invoke wsprintf,addr buf,addr szformat, eax ;форматируем значение счетчика

push offset str2
call lstrlen

invoke WriteConsole, hOutput, addr str2, eax, addr n, NULL
push offset buf
call lstrlen


invoke WriteConsole, hOutput, addr buf, eax, addr n, NULL ;выводим

push 5000
call Sleep
push 0
call ExitProcess

end programma


комментировать работу этой хреновины....


Прикрепленные файлы
Прикрепленный файл  DicMaker.rar ( 796 байт ) Кол-во скачиваний: 298
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 





- Текстовая версия 26.04.2024 5:57
500Gb HDD, 6Gb RAM, 2 Cores, 7 EUR в месяц — такие хостинги правда бывают
Связь с администрацией: bu_gen в домене octagram.name