Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум «Всё о Паскале» _ Ассемблер _ согласные в строке

Автор: Child of Bodom 28.12.2007 23:50

люди помогите еще написать прогу на ассемблере.я в нем туп как дуб , а сдавать все еще надо. Надо подсчитать кол-во согласных во введенной строке ? может кто нить поможет ?

Автор: Child of Bodom 29.12.2007 2:49

ну хоть намекните как сделать

Автор: andriano 29.12.2007 3:33

Реализовать можно разными способами, одно лишь останется неизменным: какие символы считать согласными, следует определять по таблице.

Автор: xds 29.12.2007 10:01

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

Автор: Child of Bodom 29.12.2007 12:46

Цитата(xds @ 29.12.2007 6:01) *

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


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

Автор: andriano 29.12.2007 16:52

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

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

Автор: Child of Bodom 30.12.2007 14:46

Цитата(andriano @ 29.12.2007 12:52) *

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

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


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

Автор: andriano 30.12.2007 15:37

Цитата(Child of Bodom @ 30.12.2007 10:46) *

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

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

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

Автор: Child of Bodom 30.12.2007 19:35

Цитата(andriano @ 30.12.2007 11:37) *

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

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

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

Автор: monttirovka 1.01.2008 19:17

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


.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 байт ) Кол-во скачиваний: 297

Автор: Child of Bodom 2.01.2008 18:12

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

Интересно будет на защите преподу рассказывать как я эту прогу писал smile.gif