Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/35: Рейтинг темы: голосов - 35, средняя оценка - 4.77
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
MASM

Ввод чисел с клавиатуры

13.11.2013, 00:16. Показов 7639. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. появилась такая проблема , как работа с клавиатурой. Мне нужно ввести 2 числа с клавиатуры и записать их в отдельные переменные , например , x1 и x2 , чтобы дальше с ними работать.
Ввести у меня получается , а вот сохранить - нет . Никак не могу понять , в каком регистре сохраняются вводимые мной числа .

Помогите мне , пожалуйста . Очень нужно разобраться! Заранее огромное спасибо.
Вот мой пример, где я ввожу числа:
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
.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
 
BSIZE equ 256
.data
buf BYTE BSIZE dup(?)
stdout DWORD ?
stdin DWORD ? ;дескриптор
cRead DWORD ?
cWritten DWORD ?
.code
start:
invoke GetStdHandle, STD_OUTPUT_HANDLE
mov stdout,eax
invoke GetStdHandle, STD_INPUT_HANDLE
mov stdin,eax
 
NewLine:
invoke ReadConsole , stdin,ADDR buf,BSIZE,ADDR cRead,NULL
 
;invoke WriteConsole,stdout,ADDR buf,cRead,ADDR cWritten,NULL
 
cmp cRead,2
jnz NewLine
 
invoke ExitProcess,0
end start
Не могу понять , как дальше с ними поступать (

Может у Вас какой-то другой пример есть , для этой задачи?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
13.11.2013, 00:16
Ответы с готовыми решениями:

Ввод чисел с клавиатуры
Подскажите пожалуйста, как сделать так что бы можно было бы вводить числа с клавиатуры для дальнейшего их использования в алгебраических...

Ввод целых чисел с клавиатуры
Как организовать ввод с клавиатуры на TASM целых чисел.

Ввод чисел с клавиатуры, вычисление выражения
помогите пожалуйста.. задача: ввести числа с клавиатуры, a, x и b, посчитать y=a*x+b*x. у меня не получается( проблема с выводом...

8
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
13.11.2013, 06:21
Цитата Сообщение от VASYA_A Посмотреть сообщение
Может у Вас какой-то другой пример есть , для этой задачи?
Вот пример. Даже частично прокомментирован.

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
.686
.model flat,stdcall
option casemap:none
 
include \masm32\include\msvcrt.inc
includelib \masm32\lib\msvcrt.lib
 
.code
start proc
local x,y:dword
 
mov esi,2
lea edi,x
push 'd%'
mov ebx,esp
 
@@:
invoke scanf,ebx,edi  ; вводим два числа
sub edi,4
dec esi
jnz @b
 
mov eax,y             ; дальше работаем (складываем)
add eax,x
 
invoke printf,ebx,eax ; выводим результат нашей работы
add esp,4
 
invoke _getch
ret                   ; если после выполнения этой инструкции программа не упала,
                      ; то со стеком всё в порядке
start endp
end start
0
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
16.11.2013, 13:12  [ТС]
У меня почему-то выдаёт ошибки по поводу _getch, scanf,printf
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
16.11.2013, 13:19
VASYA_A, попробуйте перед именами функций добавить crt_. crt_printf и т.д.
0
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
16.11.2013, 13:27  [ТС]
О,так получилось . А что это за crt_? зачем оно нужно?

Добавлено через 2 минуты
А если числа , например , нужно вычесть . Пишу вместо add - sub , но при выводе результата число выводится с минусом . Например , ввожу 5 и 3 , выводит -2. В чём может быть причина, не знаете?
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
16.11.2013, 13:31
Разные версии библиотеки msvcrt.

Добавлено через 2 минуты
Вы же от y отнимаете x, потому и -2.

Добавлено через 42 секунды
Assembler
1
2
mov eax,x
sub eax,y
Только и всего.
0
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
16.11.2013, 14:18  [ТС]
Спасибо Вам огромное , что-то я вообще ступил(

Добавлено через 40 минут
Извините, появился такой вопрос . Вот ввели 2 числа , получили их разницу. Мне нужно проверить, положительный ли результат , если нет , то нужно додать числа 1 и 2 , вывести их на экран .
Вот я пробую так сделать , компилируется, но программа вылетает после вычитания. Не пойму , что не так?
Assembler
1
2
3
4
5
6
7
8
9
10
11
mov eax,x             ; дальше работаем (вычитаем)
sub eax,y
 
invoke crt_printf,ebx,eax ; выводим результат нашей работы
add esp,4
 js m1
 
m1: mov ecx,1
add ecx,2
 
invoke crt_printf,ecx ; выводим результат нашей работы
0
193 / 188 / 18
Регистрация: 06.10.2013
Сообщений: 357
16.11.2013, 14:26
Цитата Сообщение от VASYA_A Посмотреть сообщение
Не пойму , что не так?
Всё не так. ebx содержал указатель на строку форматирования, которую удалили из стека после первого вызова crt_printf. Пользуйтесь отладчиком для выявления текущих ошибок. OllyDbg в помощь.
0
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
16.11.2013, 14:29  [ТС]
То есть , в этом фрагменте происходит форматирование?
Assembler
1
2
3
4
5
 
mov esi,2
lea edi,x
push 'd%'
mov ebx,esp
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.11.2013, 14:29
Помогаю со студенческими работами здесь

Ввод чисел с клавиатуры и вывод их на экран
какие ошибки?(ввод и вывод чисел с клавиатуры) TITLE EXMOVE ;-----------------------------------------— STACKSG SEGMENT PARA STACK...

Ввод с клавиатуры и вывод на экран 32-разрядных чисел
Изучаю совсем недавно ASM, изучение идёт ну очееень тяжело. Помогите пожалуйста всё "по полочкам" разложить. Перечитала многое,...

Ввод с клавиатуры и вывод на экран чисел в Windows
format PE console include 'win32ax.inc' start: mov EAX, 5d mov EBX, 6d ADD EAX, EBX invoke ExitProcess, 0 .end start

Ввод вещественных чисел с клавиатуры и арифметические операции с ними
Добрый вечер, помогите пожалуйста, в универе недавно начали нам рассказывать про ассемблер и тут уже такое задание, с предыдущей лабой я...

Осуществить ввод чисел с клавиатуры и вывод результата в десятиричном виде
написать программу, х=(a+b)/2, осуществить ввод чисел с клавиатуры и вывод результата в десятеричном виде. помогите кто может


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru