Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.65/40: Рейтинг темы: голосов - 40, средняя оценка - 4.65
0 / 0 / 0
Регистрация: 14.02.2012
Сообщений: 13

Ввод с клавиатуры, пример

08.09.2012, 22:58. Показов 8640. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
DOS, MASM32
напишите пожалуйста короткий пример считывания в буфер и вывод при вводе с клавы.
ну тип:
Type: 1 (ввёл 1)
1
в учебнике приводится сразу программа, где я заблудился или все через это прут? если так, то сижу дальше -_-
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
08.09.2012, 22:58
Ответы с готовыми решениями:

ввод с клавиатуры!!!
ДОброе время суток !!! Такой вопрос как в ассемблере считать буквы вводимые с клавиатуры!!!*???

Ввод с клавиатуры
Как сделать ввод используя функции БИОС? mov ah, 00h int 16h Появляется курсор для ввода но как только нажымаю какуюто клавишу все...

Ввод с клавиатуры
Как мне на ассемблере сделать ввод с клавиатуры числа??? И потом после операций сделать вывод???

8
202 / 168 / 11
Регистрация: 30.05.2012
Сообщений: 703
09.09.2012, 11:46
Для этого есть функция 0Ah int 21h
Отрывок из доки:
Вход

AH = 0aH
DS:DX = адрес входного буфера (смотри ниже)

Выход

нет = буфер содержит ввод, заканчивающийся символом CR (ASCII 0dH)

Описание:

при входе буфер по адресу DS:DX должен быть оформлен так:

+---+---+---+---+---+---+- - -
¦max¦ ? ¦ ? ? ? ? ? MAX - максимально допустимая
+---+---+---+---+---+---+ - - длина ввода (от 1 до 254)
при выходе буфер заполнен данными следующим образом:
+---+---+---+---+---+---+- - -
¦max¦len¦ T E X T 0dH LEN - действительная длина данных
+---+---+---+---+---+---+ - - без завершающего CR (здесь - 04H).

символы считываются со стандартного ввода вплоть до CR (ASCII 0dH) или до достижения длины MAX-1. если достигнут MAX-1, включается консольный звонок для каждого очередного символа, пока не будет введен возврат каретки CR (нажатие Enter).

Второй байт буфера заполняется действительной длиной введенной строки, не считая завершающего CR. последний символ в буфере - всегда CR (который не засчитан в байте длины). символы в буфере (включая LEN) в момент вызова используются как "шаблон". В процессе ввода действительны обычные клавиши редакти рования: Esc выдает "\" и начинает с начала, F3 выдает буфер до конца шаблона, F5 выдает "@" и сохраняет текущую строку как шаблон, и т.д. большинство расширенных кодов ASCII игнорируются. при распознавании Ctrl-Break выполняется прерывание INT 23H (буфер остается неизменным).
Короче говоря, клевая функция.
Пример:
Assembler
1
2
3
4
5
6
maxlength db 80
length db ?
string db 80 dup (0)
mov ah,0Ah
mov dx,offset maxlength
int 21h
Результат: в переменной string строка длинной length (length<=maxlength(80).
Теперь понятнее?
1
 Аватар для Vort_
200 / 200 / 78
Регистрация: 10.07.2012
Сообщений: 409
09.09.2012, 11:57
вот такая хитрозакрученость у меня вышла
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
CSEG segment
org 100h
Start:
   mov  ah, 09h
   mov  dx, offset Tp
   int  21h
 
   mov  ah, 0Ah
   mov  dx, offset Buf
   int  21h
 
   mov  si, offset Buf + 1
   mov  bh, 0
   mov  bl, [si]
   mov  byte ptr [si], 0Ah
   add  si, bx
   mov  byte ptr [si + 1], '$'
 
   mov  ah, 09h
   mov  dx, offset Buf + 1
   int  21h
 
   int  20h
 
Tp  db "Type: $"
 
Buf db 254
    db 254 dup(?)
 
CSEG ends
end Start
1
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
09.09.2012, 12:36
Vort_, макросы не пользуете?
0
 Аватар для Vort_
200 / 200 / 78
Регистрация: 10.07.2012
Сообщений: 409
09.09.2012, 13:23
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Vort_, макросы не пользуете?
интересный вариант
однако, в примере этой темы я поле длины использовал в том числе для хранения LF. поэтому такой макрос был бы не совсем уместен
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
09.09.2012, 13:39
Цитата Сообщение от Vort_
такой макрос был бы не совсем уместен
Хм.
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
dos_inp macro   lbl, sz
_ib_    struc  
max db  sz
len db  ?
bf0 =   len
bf  db  sz dup(?)
_ib_    ends            
lbl _ib_ <>
endm
.model small
.386
.stack  100
.code   
start:  
    mov ax, @data
    mov ds, ax
    mov es, ax
    mov     ah, 09h
    lea     dx, req
    int     21h
    mov ah, 0Ah
    lea dx, buf
    int 21h
    movzx   bx, byte ptr buf.len
    add bx, offset buf
    mov byte ptr [bx],'$'
    mov byte ptr buf.bf0, 0Ah   ; inject LF
    mov     ah, 09h
    lea     dx, buf.bf0
    int     21h
    mov ah, 4Ch
    int 21h
.data
req db  'Enter string:$'
dos_inp buf, 20
    end start
0
1 / 1 / 1
Регистрация: 23.10.2010
Сообщений: 65
23.09.2012, 18:18
вопрос по этой теме
можно используя это прерывание, заставить из n-го количества введений одной клавиши, вывести на экран только один раз эту самую клавишу?
например, зажали мы кнопку С, но нам выводит не строчку с С а один раз лишь символ С?
0
0 / 0 / 0
Регистрация: 14.02.2012
Сообщений: 13
23.09.2012, 18:51  [ТС]
Цитата Сообщение от matadora Посмотреть сообщение
вопрос по этой теме
можно используя это прерывание, заставить из n-го количества введений одной клавиши, вывести на экран только один раз эту самую клавишу?
например, зажали мы кнопку С, но нам выводит не строчку с С а один раз лишь символ С?
я ещё плохо разбираюсь в асме, но, быть может, достаточно будет просто выделить маленькую память под это дело? ну, сколько весит символ, столько и выделить ну и будет так: нажимаешь "с" - закидыется в память, нажимаешь "е" - завместо "с" залезает "е"
0
1 / 1 / 1
Регистрация: 23.10.2010
Сообщений: 65
23.09.2012, 19:15
уже разобралась
можно и без переменной

Assembler
1
2
3
4
5
6
7
8
9
10
 mov ah,0
        int 16h
        
        mov cx, 1
        mov ah, 0eh
        int 10h 
 
       mov dx, offset msg3
       mov ah, 9
       int 21h
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
23.09.2012, 19:15
Помогаю со студенческими работами здесь

Ввод с клавиатуры (0Ah)
Доброго времени суток. Интересует такой вопрос: часто вижу используют такой массив, как buf, за что отвечает первый байт - 80 и второй -...

Ввод числа с клавиатуры
нужно ввести с клавиатуры число(будущее количество эл-в маллива). число от 1 до 30, те: 1)если сначала нажали 0 - недопустимо(потом могут...

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

Ввод текста с клавиатуры
Нужно ввести текст с клавиатуры и записать его в переменную до того как будет нажата клавиша ЕНТР. Использовать языки высокого уровня...

Ввод числа с клавиатуры
Здравствуйте, вы бы не помогли подсказать, как на ассемблере можно ввести с клавиатуры число, а затем к нему, например прибавить 1


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
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
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru