Форум программистов, компьютерный форум, киберфорум
Наши страницы
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.70/10: Рейтинг темы: голосов - 10, средняя оценка - 4.70
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
1

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

13.11.2013, 00:16. Просмотров 1895. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.11.2013, 00:16
Ответы с готовыми решениями:

Ввод чисел с клавиатуры и вывод их на экран
какие ошибки?(ввод и вывод чисел с клавиатуры) TITLE EXMOVE...

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

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

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

Ввод символов с клавиатуры в ОЗУ с использованием режима ожидания готовности контроллера клавиатуры
. Разработать алгоритм ввода символов с клавиатуры в ОЗУ с использованием режима ожидания...

8
Not at all!
193 / 190 / 18
Регистрация: 06.10.2013
Сообщений: 360
13.11.2013, 06:21 2
Цитата Сообщение от 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
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
16.11.2013, 13:12  [ТС] 3
У меня почему-то выдаёт ошибки по поводу _getch, scanf,printf
0
Not at all!
193 / 190 / 18
Регистрация: 06.10.2013
Сообщений: 360
16.11.2013, 13:19 4
VASYA_A, попробуйте перед именами функций добавить crt_. crt_printf и т.д.
0
16.11.2013, 13:19
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
16.11.2013, 13:27  [ТС] 5
О,так получилось . А что это за crt_? зачем оно нужно?

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

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

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

Добавлено через 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
Not at all!
193 / 190 / 18
Регистрация: 06.10.2013
Сообщений: 360
16.11.2013, 14:26 8
Цитата Сообщение от VASYA_A Посмотреть сообщение
Не пойму , что не так?
Всё не так. ebx содержал указатель на строку форматирования, которую удалили из стека после первого вызова crt_printf. Пользуйтесь отладчиком для выявления текущих ошибок. OllyDbg в помощь.
0
VASYA_A
2 / 2 / 0
Регистрация: 11.09.2013
Сообщений: 129
16.11.2013, 14:29  [ТС] 9
То есть , в этом фрагменте происходит форматирование?
Assembler
1
2
3
4
5
 
mov esi,2
lea edi,x
push 'd%'
mov ebx,esp
0
16.11.2013, 14:29
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.11.2013, 14:29

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

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

Ввод с клавиатуры
Подскажите, пожалуйста. В программе на ЯА переменные объявляются как: rx dd 20.0 ry dd 20.0Затем...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru