Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.06.2010, 22:40   #21
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

Цитата:
text_inp1 db '‚ўҐ¤ЁвҐ бва®Єг S1:',00Dh,00Ah,000h
text_inp2 db '‚ўҐ¤ЁвҐ бва®Єг S2:',00Dh,00Ah,000h
out_text db 'Press Enter to exit',00Dh,00Ah,000h

меня смущают ети ероглифы вкоде ето так нада?
Т.е. остальное всё не смущает? Откройте файл в блокноте и установите шрифт "Terminal".

Цитата:
и начинался код с .386 а не с .486
Какой код? В этой теме пока один код. И он всегда начинался с .486

Цитата:
какая разница
Для вашей программы никакой.
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 03.06.2010, 23:11   #22
Masha1990
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Ulex Посмотреть сообщение
Т.е. остальное всё не смущает? Откройте файл в блокноте и установите шрифт "Terminal".


Какой код? В этой теме пока один код. И он всегда начинался с .486


Для вашей программы никакой.
Большое спасиба за код программы и за роз'яснения!
Masha1990 вне форума Ответить с цитированием
Старый 04.06.2010, 19:17   #23
Masha1990
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 32
Злость

Дорогие форумчане,я понимаю что ето наглость но можете обяснить строки етой програми,что каждая делает? Меня севодня завалили
Masha1990 вне форума Ответить с цитированием
Старый 05.06.2010, 07:26   #24
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

так Ulex Вам же ещё вчера об этом ясно дал понять:
Цитата:
Вот интересно, я вам к примеру исходник дам, но сдавать то вам программу ведь надо.
и до тех пор, пока Вы не поймёте, что такое Ассемблер и для чего там написаны непонятные буковки - "завалить" Вас на сдаче будет легче лёгкого! (а особенно при этом бросается в глаза то, что Вы сами не писали этот код!)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 05.06.2010, 14:40   #25
Masha1990
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Serge_Bliznykov Посмотреть сообщение
так Ulex Вам же ещё вчера об этом ясно дал понять:

и до тех пор, пока Вы не поймёте, что такое Ассемблер и для чего там написаны непонятные буковки - "завалить" Вас на сдаче будет легче лёгкого! (а особенно при этом бросается в глаза то, что Вы сами не писали этот код!)
я конешно не писала етот код)мне ulex ево предоставил теперь я прошу вас обяснить стоки чтоб меня снов не завалили,бо вопросы будут мне по етой работе
Masha1990 вне форума Ответить с цитированием
Старый 06.06.2010, 00:18   #26
Ulex
Непрофессионал
Участник клуба
 
Аватар для Ulex
 
Регистрация: 01.01.2008
Сообщений: 1,405
По умолчанию

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

Я вам могу посоветовать следующий порядок действий:

1. Скачиваете из интернета, или находите где-нибудь книгу Пирогова В.Ю. "Ассемблер для Windows".
скачать можно например здесь:
http://www.cyberinfo.ru/index.php?newsid=14722

2. Читаете оттуда главу 6 части 2 (метки, вызов процедур)
3. Читаете оттуда главу 2 части 2 (консольные приложения), после этого должно стать понятно в общих чертах, как работать с консолью Win32.
4. Затем берёте текст этой программы и построчно её разбираете, делая соответствующие пометки на полях. Если не понятна какая то команда, то в этой же книге есть приложение 2 (Справочник по командам и архитектуре Pentium).

Если после этого что-то ну совершенно не понятно, то можно конкретные вопросы уже задавать на форуме.
На всё на это у вас уйдёт часа три-четыре. Но после этого вы сможете уже поддерживать с преподавателем осмысленный диалог. Зачастую именно от этого и зависит исход экзамена (зачёта).
И чем больше я узнавал людей, тем больше мне нравились компьютеры.
------------------------------------
Страничка с моими программками http://ulex-masm.ru
Ulex вне форума Ответить с цитированием
Старый 06.06.2010, 18:40   #27
Masha1990
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Ulex Посмотреть сообщение
Боюсь, что комменты в данном случае вам уже не помогут.

Я вам могу посоветовать следующий порядок действий:

1. Скачиваете из интернета, или находите где-нибудь книгу Пирогова В.Ю. "Ассемблер для Windows".
скачать можно например здесь:
http://www.cyberinfo.ru/index.php?newsid=14722

2. Читаете оттуда главу 6 части 2 (метки, вызов процедур)
3. Читаете оттуда главу 2 части 2 (консольные приложения), после этого должно стать понятно в общих чертах, как работать с консолью Win32.
4. Затем берёте текст этой программы и построчно её разбираете, делая соответствующие пометки на полях. Если не понятна какая то команда, то в этой же книге есть приложение 2 (Справочник по командам и архитектуре Pentium).

Если после этого что-то ну совершенно не понятно, то можно конкретные вопросы уже задавать на форуме.
На всё на это у вас уйдёт часа три-четыре. Но после этого вы сможете уже поддерживать с преподавателем осмысленный диалог. Зачастую именно от этого и зависит исход экзамена (зачёта).
СОНЦЕ,я понимаю что нада самому все вчить, но ваше обяснения строк мне очень сильно может помочь. Так как мой диалог з преподом будет строится на вашых коментариях к строкам програми)
Masha1990 вне форума Ответить с цитированием
Старый 07.06.2010, 03:58   #28
Mikl___
Участник клуба
 
Регистрация: 11.01.2010
Сообщений: 1,139
По умолчанию

Ulex
Повелись на женский ник? Я предупреждал
Mikl___ вне форума Ответить с цитированием
Старый 07.06.2010, 20:22   #29
Masha1990
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 32
По умолчанию

Цитата:
Сообщение от Mikl___ Посмотреть сообщение
Ulex
Повелись на женский ник? Я предупреждал

Но ты гониш!!!
Я уже не знаю как тебе доказать что я девушка
Masha1990 вне форума Ответить с цитированием
Старый 07.06.2010, 23:45   #30
Masha1990
Пользователь
 
Регистрация: 02.06.2010
Сообщений: 32
По умолчанию

.486 ; тип процессора
.model flat, stdcall ; модель памяти flat(стандарт для windows) stdcall - порядок расположения параметров в стеке
option casemapnone

include masm32includeuser32.inc ; подключаем файлы с прототипами функций из user32.dll
include masm32includekernel32.inc ; и kernel32.dll

includelib masm32libuser32.lib ; подключаем соответствующие статические библиотеки
includelib masm32libkernel32.lib
; макрозамены
STD_INPUT_HANDLE equ -10
STD_OUTPUT_HANDLE equ -11
STD_ERROR_HANDLE equ -12
; определяем данные
.data
data_string1 db 2000 dup ()
data_string2 db 2000 dup ()
len_str1 dd
len_str2 dd

data_stringC db 2000 dup ()
data_stringChet db 2000 dup ()

handle_output dd
handle_input dd

G_temp dd
I_temp dd

.data
text_inp1 db 'Ввести строку S1',00Dh,00Ah,000h
text_inp2 db 'Ввести строку S2',00Dh,00Ah,000h
out_text db 'Press Enter to exit',00Dh,00Ah,000h
End_str db 00Dh,00Ah,000h

.code
;-----------------------------------------------------------------------------
start ;точка входа
invoke GetStdHandle, STD_OUTPUT_HANDLE ; получаем хендл консоли (устройства вывода)
mov [handle_output], eax ; сохраняем его
invoke GetStdHandle, STD_INPUT_HANDLE ; то же - устройства ввода
mov [handle_input], eax

invoke WriteConsoleA, [handle_output], offset [text_inp1], (SIZEOF text_inp1)-1, offset [G_temp], 0 ; выводим строку
invoke ReadConsoleA, [handle_input], offset [data_string1], 2000, offset [G_temp], 0
; считываем строку
mov ecx, [G_temp] ; кол-во введенных символов
sub ecx, 2 ; убираем служебные символы(enter)
mov [len_str1], ecx ; сохраняем реальное кол-во введенных символов
lea esi, [data_string1] ; адрес введенной строки
add esi, ecx ; + кол-во символов
mov byte ptr [esi], 0 ; в конец строки запишем нуль терминатор
invoke WriteConsoleA, [handle_output], offset [text_inp2], (SIZEOF text_inp2)-1, offset [G_temp], 0
; выводим строку обратно на экран
invoke ReadConsoleA, [handle_input], offset [data_string2], 2000, offset [G_temp], 0;
mov ecx, [G_temp];
sub ecx, 2;
mov [len_str2], ecx;
lea esi, [data_string2];
add esi, ecx;
mov byte ptr [esi], 0;
; без комментариев - описаны выше аналогичные действия
lea esi, [data_string1] ; загрузить первую строку в esi
lea edi, [data_stringC] ; вторую в edi
mov ecx, [len_str1] ; длина первой строки
add esi, ecx ; перейдем в конец первой троки
dec esi ; указатель - на последний символ
next_fieldC ; запускаем цикл
cmp ecx, 0 ; дошли до начала строки
je end_fieldC ; да - выйти из цикла
mov al, byte ptr [esi] ; загрузим символ с конца строки
mov byte ptr [edi], al ; запишем во вторую строку
dec esi ; в первой строке - указатель уменьшим
inc edi ; во второй увеличим
dec ecx ; и декрементируем счетчик
jmp next_fieldC ; циклим
end_fieldC
mov byte ptr [edi], 0 ; запишем в конец строки нуль
;все - я устал( короче - тут в цикле переписываются символы через один (только четные). в конце все выводится на экранпервая строка,вторая, первая строка задом наперед, через один символ и выходим
lea esi, [data_string1]
lea edi, [data_stringChet]
mov ecx, [len_str1]
inc esi
dec ecx
next_fieldChet
cmp ecx, 0
jle end_fieldChet
mov al, byte ptr [esi]
mov byte ptr [edi], al
add esi, 2
inc edi
sub ecx, 2
jmp next_fieldChet
end_fieldChet
mov byte ptr [edi], 0

invoke WriteConsoleA, [handle_output], offset [End_str], 2, offset [G_temp], 0
invoke lstrlen, addr [data_string1]
inc eax
invoke WriteConsoleA, [handle_output], offset [data_string1], eax, offset [G_temp], 0
invoke WriteConsoleA, [handle_output], offset [End_str], 2, offset [G_temp], 0
invoke lstrlen, addr [data_string2]
inc eax
invoke WriteConsoleA, [handle_output], offset [data_string2], eax, offset [G_temp], 0
invoke WriteConsoleA, [handle_output], offset [End_str], 2, offset [G_temp], 0
invoke lstrlen, addr [data_stringC]
inc eax
invoke WriteConsoleA, [handle_output], offset [data_stringC], [len_str1], offset [G_temp], 0
invoke WriteConsoleA, [handle_output], offset [End_str], 2, offset [G_temp], 0
invoke lstrlen, addr [data_stringChet]
inc eax
invoke WriteConsoleA, [handle_output], offset [data_stringChet], eax, offset [G_temp], 0
invoke WriteConsoleA, [handle_output], offset [End_str], 2, offset [G_temp], 0

exit_proga
invoke WriteConsoleA, [handle_output], offset [out_text], (SIZEOF out_text)-1, offset [G_temp], 0
invoke ReadConsoleA, [handle_input], offset [I_temp], 1, offset [G_temp], 0
invoke ExitProcess, 0
end start
Masha1990 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывести строку на экран Dasharnb777 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 13.02.2010 18:59
Помогите вывести строку на экран в обратном порядке(TASM .small) depocomp Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 13 21.05.2009 11:22
Ввести строку, вывести на экран символы, повторяющиеся в строке более 2 раз. bibl2008 Помощь студентам 4 01.03.2009 13:30
Пример программы на С++ igroman Общие вопросы C/C++ 8 30.09.2008 11:24