Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Ввод строки с клавиатуры, в MASM 
V
    Опции темы
Pakshin A. S.
Дата 29.4.2007, 21:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Хочу научиться вводить строку на ASM. Компилируется в MASM.

Потыкался в поиск по форуму - ничего не помогло... Кое-что интересное нашел, но работать почему-то не зохотело.

 smile 

Заранее огромное спасибо...

P. S.
Не отказался бы от примера, который вводит строку, а потом выводит ее следом...


PM   Вверх
Akina
Дата 29.4.2007, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 1
Всего: 454



под ДОС? int 21h/fn 0Ah


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
Pakshin A. S.
Дата 29.4.2007, 23:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Ну работаем в Винде...

Консолька...

Скоере всего надо использовать ДОС-варианты

Добавлено через 31 секунду
Цитата(Akina @  29.4.2007,  22:26 Найти цитируемый пост)
int 21h/fn 0Ah 

а как использовать?
PM   Вверх
anwe
Дата 29.4.2007, 23:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



А что значит
Цитата(Pakshin A. S. @  29.4.2007,  21:48 Найти цитируемый пост)
вводить строку на ASM


Цитата(Pakshin A. S. @  29.4.2007,  23:31 Найти цитируемый пост)
Цитата(Akina @  29.4.2007,  22:26 )
int 21h/fn 0Ah 


а как использовать? 

Так все-таки надо под ДОС?
PM MAIL   Вверх
Pakshin A. S.
Дата 29.4.2007, 23:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Ну задача собственно про массивы.. Нужно ввести массив произвольной длины... Массив из чисел.
Задумка - вводим строку и разбираем ее на числа.

Под что писать - все равно, так кая не разбираюсь в этом. Нужно чобы прогармма работала в Win XP и в Win2000
PM   Вверх
anwe
Дата 29.4.2007, 23:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Так, наверное, самое простое вводить в поле редактирования и посредством GetWindowText ее считывать.
PM MAIL   Вверх
Pakshin A. S.
Дата 29.4.2007, 23:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



А если работа программы осущствляется в консоли?
PM   Вверх
anwe
Дата 29.4.2007, 23:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Через WriteConsole. Только сначала надо получить, ё-моё, забыл... как его, в общем STDOUT.
PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



 smile  smile 
Что-то для меня пока это достаточно сложнова-то...
PM   Вверх
586
Дата 30.4.2007, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 2
Всего: 146



Код
.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc

.data
str1    db "Please enter text: "
    db 0

.data?
stdin    dd ?
stdout    dd ?
buff    db 260 dup(?)
dwRead    dd ?

.code
start:
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov stdout, eax
invoke GetStdHandle, STD_INPUT_HANDLE
mov stdin, eax

invoke WriteConsole, stdout, offset str1, sizeof str1, 0, 0
invoke ReadConsole, stdin, offset buff, 260, offset dwRead, 0

invoke MessageBox, 0, offset buff, 0, 0
ret
end start

PM   Вверх
anwe
Дата 30.4.2007, 00:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Код

  push  STD_OUTPUT_HANDLE
  call  GetStdHandle         ; запрашиваекм идентификатор буфера вывода
  mov      hStdOut, eax

  push    STD_INPUT_HANDLE
  call    GetStdHandle         ; запрашиваем идентификатор буфера ввода
  mov          hStdIn, eax

  push    0
  push    offset kol_chars
  push       10                  ;произвольно
  push offset mes1
  push    hStdOut
  call    WriteConsole  ; вывод

  push    0
  push    offset kol_chars
  push    10
  push    offset stroka1
  push    hStdIn
  call    ReadConsole         ; ввод с клавиатуры

PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



586, 

Присоединённый файл ( Кол-во скачиваний: 19 )
Присоединённый файл  Untitled_1.jpg 51,78 Kb
PM   Вверх
anwe
Дата 30.4.2007, 00:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



586, lib'ы еще надо добавить и (возможно) путь прописать.
PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



anwe, то же самое, что и с 586, только без MessageBox
PM   Вверх
anwe
Дата 30.4.2007, 00:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Не понял.
PM MAIL   Вверх
586
Дата 30.4.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 2
Всего: 146



Pakshin A. S., вам 32-битный masm нужен (если, я как понял, под винду)
и в начале написать

include windows.inc
include kernel32.inc
include user32.inc
includelib kernel32.lib
includelib user32.lib

PM   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(anwe @  30.4.2007,  00:24 Найти цитируемый пост)
lib'ы еще надо добавить 

а какие?
PM   Вверх
anwe
Дата 30.4.2007, 00:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Вот те ,что синим те и забыл.
PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



На добавление Либов выдалось:


Присоединённый файл ( Кол-во скачиваний: 11 )
Присоединённый файл  Untitled_1.jpg 35,30 Kb
PM   Вверх
anwe
Дата 30.4.2007, 00:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Цитата

not valid library

Пропиши же полный путь к ней.
PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



НАм выдали инструментарий, с которым нужно работать:
Компилятор и линовщик...

Все это дело запускаем через bat файлы.

То, что имеется:
http://moevm.ru/Assembler.rar
PM   Вверх
anwe
Дата 30.4.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Ну, есть же там kernel32.lib.
Ты, наверное, подключаешь include, а для библиотек надо includelib.
PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(anwe @  30.4.2007,  00:31 Найти цитируемый пост)
Пропиши же полный путь к ней. 

Вот прописываю:
E:\Assembler\Assembler\kernel32.lib
А все равно не видится.. :(
PM   Вверх
anwe
Дата 30.4.2007, 00:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Почитай выше.
PM MAIL   Вверх
586
Дата 30.4.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 2
Всего: 146



почему линковщик 16-разрядный?
Цитата(Pakshin A. S. @  30.4.2007,  01:34 Найти цитируемый пост)
НАм выдали инструментарий, с которым нужно работать

с другим работать нельзя?

или под дос надо
в досе нет kernel32  smile 
PM   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(anwe @  30.4.2007,  00:37 Найти цитируемый пост)
Ты, наверное, подключаешь include, а для библиотек надо includelib. 

так и делаю:
Код

.386
.model flat, stdcall
option casemap:none
include windows.inc
include kernel32.inc
include user32.inc
includelib E:\Assembler\Assembler\kernel32.lib
includelib E:\Assembler\Assembler\Tools16\user32.lib 

.data
  hStdOut dd ?
  hStdIn dd ?
  kol_chars dd 100
  mes1 db "Enter text:"
  stroka1 db 100 dup (?)

.code
start:
  push  STD_OUTPUT_HANDLE
  call  GetStdHandle         ; запрашиваекм идентификатор буфера вывода
  mov   hStdOut, eax

  push    STD_INPUT_HANDLE
  call    GetStdHandle         ; запрашиваем идентификатор буфера ввода
  mov     hStdIn, eax

  push    0
  push    offset kol_chars
  push       10                  ;произвольно
  push offset mes1
  push    hStdOut
  call    WriteConsole  ; вывод

  push    0
  push    offset kol_chars
  push    10
  push    offset stroka1
  push    hStdIn
  call    ReadConsole         ; ввод с клавиатуры
ret
end start

PM   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(586 @  30.4.2007,  00:38 Найти цитируемый пост)
с другим работать нельзя?

Желательно... Очень желательно...
PM   Вверх
anwe
Дата 30.4.2007, 00:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Тогда ДОС.
PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 00:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Цитата(anwe @  30.4.2007,  00:41 Найти цитируемый пост)
Тогда ДОС. 

А как в ДОС можно?
 smile 
PM   Вверх
anwe
Дата 30.4.2007, 01:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 748
Регистрация: 2.9.2006

Репутация: 8
Всего: 23



Похоже на то, что линковщик надо 32. Так как ошибку выдает при линковке. С 32 думаю получится.
PM MAIL   Вверх
Pakshin A. S.
Дата 30.4.2007, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Запускаю код в masm32...

В чем ошибка?

Добавлено через 1 минуту и 35 секунд
и если на то пошло, то как правильно подготавливать код к запуску? Т. е. что прописать для masm32...

Присоединённый файл ( Кол-во скачиваний: 13 )
Присоединённый файл  Untitled_1.jpg 28,69 Kb
PM   Вверх
Pakshin A. S.
Дата 30.4.2007, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



Или вот такое выдается... Запускаю bat со старой версии...

Присоединённый файл ( Кол-во скачиваний: 7 )
Присоединённый файл  Untitled_1.jpg 32,03 Kb
PM   Вверх
586
Дата 30.4.2007, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2243
Регистрация: 8.5.2006

Репутация: 2
Всего: 146



ml /c /coff prg.asm
link /SUBSYSTEM:CONSOLE prg.obj

http://forum.vingrad.ru/forum/topic-140822.html]

Цитата
как правильно подготавливать код к запуску? Т. е. что прописать для masm32

если не хотите указывать полные пути к заголовкам и lib'ам, используйте эти команды:
ml /c /coff /IC:\MASM32\win32 test.asm
link /SUBSYSTEM:CONSOLE /LIBPATH:C:\masm32\lib test.obj

Это сообщение отредактировал(а) 586 - 30.4.2007, 20:00
PM   Вверх
Pakshin A. S.
Дата 30.4.2007, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 5056
Регистрация: 16.2.2003

Репутация: нет
Всего: 61



ОГРОМЕННОЕ СПАСИБО!
PM   Вверх
Страницы: (3) [Все] 1 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Asm для начинающих"
MAKCim
  • Проставьте несколько ключевых слов темы, чтобы её можно было легче найти.
  • Не забывайте пользоваться кнопкой КОД.
  • Телепатов на форуме нет! Задавайте чёткий, конкретный и полный вопрос. Указывайте полностью ошибки компилятора и компоновщика.
  • Новое сообщение должно иметь прямое отношение к разделу форума. Флуд, флейм, оффтопик запрещены.
  • Категорически запрещается обсуждение вареза, "кряков", взлома программ и т.д.

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim.

 
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Asm для начинающих | Следующая тема »


 




[ Время генерации скрипта: 0.0843 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.