Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
11 / 11 / 4
Регистрация: 14.09.2009
Сообщений: 134
1

Найти вводимый символ с клавиатуры

06.05.2011, 00:37. Показов 1857. Ответов 7
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Всем Добрый вечер!
Не могу никак понять где находится вводимое число с клавиатуры.
Тип консольный.

Листинг с примером ввода цифры с клавиатуры с использование стандартных макросов.
Но не могу понять где же находится мой символ введенный с клавиатуры.
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
      .486                                     ; create 32 bit code
      .model flat, stdcall                      ; 32 bit memory model
      option casemap :none                      ; case sensitive 
;     include files
;     ~~~~~~~~~~~~~
      include \masm32\include\windows.inc       ; main windows include file
      include \masm32\include\masm32.inc        ; masm32 library include
    ; -------------------------
    ; Windows API include files
    ; -------------------------
      include \masm32\include\gdi32.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc
      include \masm32\include\Comctl32.inc
      include \masm32\include\comdlg32.inc
      include \masm32\include\shell32.inc
      include \masm32\include\oleaut32.inc
      include \masm32\include\ole32.inc
      include \masm32\include\msvcrt.inc
      include \masm32\include\dialogs.inc       ; macro file for dialogs
      include \masm32\macros\macros.asm         ; masm32 macro file
;     libraries
;     ~~~~~~~~~
      includelib \masm32\lib\masm32.lib         ; masm32 static library
    ; ------------------------------------------
    ; import libraries for Windows API functions
    ; ------------------------------------------
      includelib \masm32\lib\gdi32.lib
      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib
      includelib \masm32\lib\Comctl32.lib
      includelib \masm32\lib\comdlg32.lib
      includelib \masm32\lib\shell32.lib
      includelib \masm32\lib\oleaut32.lib
      includelib \masm32\lib\ole32.lib
      includelib \masm32\lib\msvcrt.lib
; «««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««««
; ************************************************************************
;    include \masm32\include\masm32rt.inc
; ************************************************************************
 
.data
buffer_for_string db 10 dup(0)
title_string db "Result:  ",0
szformat db "%u",0Dh,0Ah,0
.data?
.code
start:
; ************************************************************************
main proc
    LOCAL Result        :DWORD
    LOCAL var_00        :DWORD
    LOCAL var_01        :DWORD
    LOCAL var_02        :DWORD
    LOCAL var_03        :DWORD
    LOCAL var_04        :DWORD
    LOCAL var_05        :DWORD
    LOCAL var_06        :DWORD
    LOCAL var_07        :DWORD
; Затем здесь(ниже) запишите решение. 
; Записи возможны только до начала следующей линии решетки ...
; ###########################################################################    
mov eax,7
; Меняем имя регистра на имя в котором находится Ваш результат
mov Result,eax
; ###########################################################################
    push  Result
    push OFFSET szformat
    push OFFSET buffer_for_string
    call wsprintf
 
    cls 
    print ADDR title_string
    print ADDR buffer_for_string,13,10,13,10
    inkey
    
        sleep 5000 // в чем тут ошибка вроде всё правильно написано  
    exit
    main endp
; ************************************************************************
end start
Comment ^
Каркас программы
.386
.MODEL Flat, STDCALL
.DATA
<Ваша инициализиpуемые данные>
......
.DATA?
<Ваши не инициализиpуемые данные>
......
.CONST
<Ваши константы>
......
.CODE
<метка>
<Ваш код>
.....
end <метка>
^
Подскажите кто чем знает..
ЗЫ не один раз олидебагером искал не смог найти...
использую masm32 для трансляции кода.

Добавлено через 4 часа 25 минут
мне вообщем надо считать число введенное и дальше использовать в программе.можете к примеру показать так
add eax, это_число
дальше я уже сам разберусь.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
06.05.2011, 00:37
Ответы с готовыми решениями:

Записать символ в буфер клавиатуры, проверить буфер на наличие в нём символов, и вывести данный символ
Доброго дня всем. Прошу помочь немного с несложной задачей, на использование прерывания INT 16h....

Поместить символ в буфер клавиатуры
Доброго времени суток всем! Взываю кого нибудь о помощи!!!Пишу сервер\клиент на Делфях и мне...

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

Как прочитать из порта клавиатуры введённый символ
Подскажите, пожалуйста, какой номер у порта клавиатуры и как определить, какой символ введён.

7
11 / 11 / 4
Регистрация: 14.09.2009
Сообщений: 134
07.05.2011, 20:02  [ТС] 2
Ребята помогите хоть чем нибудь,что совсем никто не знает?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
07.05.2011, 20:39 3
К примеру так:
Assembler
1
2
3
4
5
6
7
mov ah,01h  ;функция 01h прерывания 21h - ввод числа с эхом
        int 21h     ;вводим и одновременно выводим число на экран
        mov dl,al   ;перемещаем введенное число в регистр dl
        
        add dl,2    ;складываем с двойкой
        mov ah,02   ;функция 02 прерывания 21 - вывод числа, находящегося в регистре dl
        int 21h
0
11 / 11 / 4
Регистрация: 14.09.2009
Сообщений: 134
07.05.2011, 21:30  [ТС] 4
Цитата Сообщение от Eugene22 Посмотреть сообщение
К примеру так:
Assembler
1
2
3
4
5
6
7
mov ah,01h  ;функция 01h прерывания 21h - ввод числа с эхом
        int 21h     ;вводим и одновременно выводим число на экран
        mov dl,al   ;перемещаем введенное число в регистр dl
        
        add dl,2    ;складываем с двойкой
        mov ah,02   ;функция 02 прерывания 21 - вывод числа, находящегося в регистре dl
        int 21h
то есть вначале наше ввденное число находится в al?
а как мне связать это с моим примером?тот что сверху
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
07.05.2011, 21:33 5
да сначала введенное число находится в al
а как связать - не знаю. В твоем случае, как мне кажется, вся работа идет в подключаемых файлах - я думаю их надо смотреть.
Я просто пример привел и то не идеальный.
0
11 / 11 / 4
Регистрация: 14.09.2009
Сообщений: 134
07.05.2011, 21:43  [ТС] 6
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
cls MACRO                       ;; clear screen
      invoke ClearScreen
    ENDM
 
    print MACRO arg1:REQ,varname:VARARG      ;; display zero terminated string
        invoke StdOut,reparg(arg1)
      IFNB <varname>
        invoke StdOut,chr$(varname)
      ENDIF
    ENDM
 
exit MACRO optional_return_value
      IFNDEF optional_return_value
        invoke ExitProcess, 0
      ELSE
        invoke ExitProcess,optional_return_value
      ENDIF
    ENDM
 
 
 inkey MACRO user_text:VARARG
      IFDIF <user_text>,<NULL>                  ;; if user text not "NULL"
        IFNB <user_text>                        ;; if user text not blank
          print user_text                       ;; print user defined text
        ELSE                                    ;; else
          print "Press any key to continue ..." ;; print default text
        ENDIF
      ENDIF
      call wait_key
      print chr$(13,10)
    ENDM
вот 2 макроса они стандартные находятся в библиотеке
include \masm32\macros\macros.asm ; masm32 macro file

внизу используются эти макросы а точнее обращение к ним.
а теперь ты можешь сказать где находится это число?
И еще в чем ошибка команды
Sleep 5000
я смотрел по WINAPI все правильно,но эта команда не транслируется почему-то.Мб подскажешь?
0
_
2364 / 1243 / 78
Регистрация: 28.10.2009
Сообщений: 4,331
07.05.2011, 21:58 7
Цитата Сообщение от franken Посмотреть сообщение
wait_key
а это че за процедура?

Добавлено через 11 минут
Вообщем в этой процедуре - wait_key происходит ожидание ввода символа и собственно его ввод
а затем в макросе print - происходит вывод символов
1
11 / 11 / 4
Регистрация: 14.09.2009
Сообщений: 134
08.05.2011, 00:44  [ТС] 8
wait_key PROTO
всё что нашёл...
в библиотеках наверное dll там всего скорей оно лежит.
Но всё равно спасибо за помощь!
0
08.05.2011, 00:44
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.05.2011, 00:44
Помогаю со студенческими работами здесь

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

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

Вводимый с клавиатуры символ появляется одновременно во всех четырех углах экрана
Программа очищает экран. Вводимый с клавиатуры символ появляется одновременно во всех четырех углах...

Найти и удалить символ из файла, введенный с клавиатуры
Необходимо найти и удалить символ из файла, введенный с клавиатуры. Помогите пожалуйста) DATA...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru