Помощь - Поиск - Пользователи - Календарь
Полная версия: согласные в строке
Форум «Всё о Паскале» > Современный Паскаль и другие языки > Ассемблер
Child of Bodom
люди помогите еще написать прогу на ассемблере.я в нем туп как дуб , а сдавать все еще надо. Надо подсчитать кол-во согласных во введенной строке ? может кто нить поможет ?
Child of Bodom
ну хоть намекните как сделать
andriano
Реализовать можно разными способами, одно лишь останется неизменным: какие символы считать согласными, следует определять по таблице.
xds
Child of Bodom, тебе самостоятельную программу или вставку в Паскаль?
Child of Bodom
Цитата(xds @ 29.12.2007 6:01) *

Child of Bodom, тебе самостоятельную программу или вставку в Паскаль?


ну как бы самсостаятельную. НУ там получается надо будет в таблице ASCII посотреть какие коды у букв. И вот и может как то в массив их загнать.я просто ваще никак с ассемблером
andriano
Ну тогда почитай, разберись, а когда появятся конкретные вопросы - задашь, постараемся ответить.

И массивов, кстати, как таковых в Ассемблере нет. Доступ осуществляется по адресам. В случае "массивов" обычно через сумму базы и смещения. Но смещение, в отличие от массивов, задается не в длинах элементов, а в байтах. Ну а в код таблица включается через db.
Child of Bodom
Цитата(andriano @ 29.12.2007 12:52) *

Ну тогда почитай, разберись, а когда появятся конкретные вопросы - задашь, постараемся ответить.

И массивов, кстати, как таковых в Ассемблере нет. Доступ осуществляется по адресам. В случае "массивов" обычно через сумму базы и смещения. Но смещение, в отличие от массивов, задается не в длинах элементов, а в байтах. Ну а в код таблица включается через db.


сейчас вопрос один, что конкретно можно почитать чтоб я понял что такое ассемблер . а то полазал по инету, почти везде не понятно написано . P.s. мозги вроде есть smile.gif)
andriano
Цитата(Child of Bodom @ 30.12.2007 10:46) *

сейчас вопрос один, что конкретно можно почитать чтоб я понял что такое ассемблер . а то полазал по инету, почти везде не понятно написано . P.s. мозги вроде есть smile.gif)

Честно говоря, не совсем понятен вопрос: скорее всего, были какие-то лекции, семинары... Так что в первую очередь - своими конспектами. Кроме того, есть учебный план, о котором можно справиться на кафедре или в деканате, и в котором в обязательном порядке есть рекомендуемая литература. Так зачем прибегать к явно "кривому" способу выяснения нужной литературы на форуме, когда есть "прямой" - через деканат?

На конкретный вопрос: сам занимался Ассемблером очень давно, поэтому и порекомендовать могу только из старого, наример, книжку Питера Абеля с чудовищным названием "Язык Ассемблера для IBM PC и программирования".
Child of Bodom
Цитата(andriano @ 30.12.2007 11:37) *

Честно говоря, не совсем понятен вопрос: скорее всего, были какие-то лекции, семинары... Так что в первую очередь - своими конспектами. Кроме того, есть учебный план, о котором можно справиться на кафедре или в деканате, и в котором в обязательном порядке есть рекомендуемая литература. Так зачем прибегать к явно "кривому" способу выяснения нужной литературы на форуме, когда есть "прямой" - через деканат?

На конкретный вопрос: сам занимался Ассемблером очень давно, поэтому и порекомендовать могу только из старого, наример, книжку Питера Абеля с чудовищным названием "Язык Ассемблера для IBM PC и программирования".

лекций практически нету. у нас ассемблер по субботам. так препод приходит с утра с перегаром каждую субботу. ему ваще не до лекции. поэтому можно считать что лекций нету. а деканат уже как то закрыт
monttirovka
Мимо проходил..

.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


комментировать работу этой хреновины....
Child of Bodom
ОГО это круто.спасибо!!! тока почему то в отдельной консольке открывается. я обычно в cmd прописываю и у меня там работает. а ща как отдельный открывается. странно почему exe получился а не com

Интересно будет на защите преподу рассказывать как я эту прогу писал smile.gif
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.