Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/25: Рейтинг темы: голосов - 25, средняя оценка - 4.60
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104

Ввод числа из консоли

03.10.2013, 20:04. Показов 4725. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могли бы вы подсказать как организовать ввод чисел из консоли в данный момент они у меня храняться так :
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
   DOSSEG                                  ; Задание сегментов под ДОС
   .MODEL  SMALL                           ; Модель памяти-SMALL(Малая)
   .STACK  100h                            ; Отвести под Стек 256 байт
   .DATA                                   ; Начало сегмента данных
    a db 2
    b db 1
    i db  2
    k db 1
    i1 db ?
    i2 db ?
    i3 db ?
    res db 0
Как можно ввести числа a,b,i,k с клавиатуры ?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.10.2013, 20:04
Ответы с готовыми решениями:

Ввод числа pi/2 с консоли
В задании сказано, что нужно ввести числа в консоли, а затем программа их должна обработать (что за программа - неважно). 2 из них такие:...

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

Ввод и вывод с консоли вещественного числа
Путем экспериментов я установил, что ввод проходит нормально без исключений для следующих разновидностей операторов ввода Dim x as...

8
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
03.10.2013, 20:32
Какого черта люди пишу тут факи и прочую хрень, если такие, как ты, даже посмотреть туда не не могут? Или тебя парализует, если ты пару лишних кликов мышью сделаешь?
Ввод и вывод чисел

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
;Ввод
call InputInt
mov a,al
 
;Процедура для ввода, взятая по ссылке выше
InputInt proc 
 
    mov ah,0ah
    xor di,di
    mov dx,offset buff ; аддрес буфера
    int 21h ; принимаем строку
    mov dl,0ah
    mov ah,02
    int 21h ; выводим перевода строки
    
; обрабатываем содержимое буфера
    mov si,offset buff+2 ; берем аддрес начала строки
    cmp byte ptr [si],"-" ; если первый символ минус
    jnz ii1
    mov di,1  ; устанавливаем флаг
    inc si    ; и пропускаем его
ii1:
    xor ax,ax
    mov bx,10  ; основание сc
ii2:
    mov cl,[si] ; берем символ из буфера
    cmp cl,0dh  ; проверяем не последний ли он
    jz endin
    
; если символ не последний, то проверяем его на правильность
    cmp cl,'0'  ; если введен неверный символ <0
    jl er
    cmp cl,'9'  ; если введен неверный символ >9
    ja er
 
    sub cl,'0' ; делаем из символа число 
    mul bx     ; умножаем на 10
    add ax,cx  ; прибавляем к остальным
    inc si     ; указатель на следующий символ
    jmp ii2     ; повторяем
 
er:   ; если была ошибка, то выводим сообщение об этом и выходим
    mov dx, offset error
    mov ah,09
    int 21h
    int 20h
 
; все символы из буфера обработаны число находится в ax
endin:
    cmp di,1 ; если установлен флаг, то
    jnz ii3
    neg ax   ; делаем число отрицательным
ii3:
    ret
 
error db "incorrect number$"
buff    db 4,7 Dup(?)
InputInt endp
0
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
03.10.2013, 21:10  [ТС]
Цитата Сообщение от sh2ezo Посмотреть сообщение
Какого черта люди пишу тут факи и прочую хрень, если такие, как ты, даже посмотреть туда не не могут? Или тебя парализует, если ты пару лишних кликов мышью сделаешь?
Ввод и вывод чисел

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
;Ввод
call InputInt
mov a,al
 
;Процедура для ввода, взятая по ссылке выше
InputInt proc 
 
    mov ah,0ah
    xor di,di
    mov dx,offset buff ; аддрес буфера
    int 21h ; принимаем строку
    mov dl,0ah
    mov ah,02
    int 21h ; выводим перевода строки
    
; обрабатываем содержимое буфера
    mov si,offset buff+2 ; берем аддрес начала строки
    cmp byte ptr [si],"-" ; если первый символ минус
    jnz ii1
    mov di,1  ; устанавливаем флаг
    inc si    ; и пропускаем его
ii1:
    xor ax,ax
    mov bx,10  ; основание сc
ii2:
    mov cl,[si] ; берем символ из буфера
    cmp cl,0dh  ; проверяем не последний ли он
    jz endin
    
; если символ не последний, то проверяем его на правильность
    cmp cl,'0'  ; если введен неверный символ <0
    jl er
    cmp cl,'9'  ; если введен неверный символ >9
    ja er
 
    sub cl,'0' ; делаем из символа число 
    mul bx     ; умножаем на 10
    add ax,cx  ; прибавляем к остальным
    inc si     ; указатель на следующий символ
    jmp ii2     ; повторяем
 
er:   ; если была ошибка, то выводим сообщение об этом и выходим
    mov dx, offset error
    mov ah,09
    int 21h
    int 20h
 
; все символы из буфера обработаны число находится в ax
endin:
    cmp di,1 ; если установлен флаг, то
    jnz ii3
    neg ax   ; делаем число отрицательным
ii3:
    ret
 
error db "incorrect number$"
buff    db 4,7 Dup(?)
InputInt endp
к сожелению не работает ...
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
03.10.2013, 23:04
Так это не готовый код, лол. Это пример использования, как и просилось:
Цитата Сообщение от Xsenon_rus Посмотреть сообщение
Не могли бы вы подсказать как организовать ввод чисел
0
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
05.10.2013, 23:12  [ТС]
Цитата Сообщение от sh2ezo Посмотреть сообщение
Так это не готовый код, лол. Это пример использования, как и просилось:
Это не готовый код. Это не рабочая функция.
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
05.10.2013, 23:47
Сколько раз уже пользовался и постоянно работала. Магия? О_о
0
8 / 8 / 0
Регистрация: 18.04.2011
Сообщений: 104
06.10.2013, 00:41  [ТС]
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
  DOSSEG                                  ; Задание сегментов под ДОС
   .MODEL  SMALL                           ; Модель памяти-SMALL(Малая)
   .STACK  100h                            ; Отвести под Стек 256 байт
   .DATA                                   ; Начало сегмента данных
    a db 0
    b db 0
    i db  0
    k db 0
    i1 db ?
    i2 db ?
    i3 db ?
    res db 0
.CODE
call InputInt
mov a,al
call InputInt
mov b,al
call InputInt
mov i,al
call InputInt
mov k,al
 
InputInt proc 
 
    mov ah,0ah
    xor di,di
    mov dx,offset buff ; аддрес буфера
    int 21h ; принимаем строку
    mov dl,0ah
    mov ah,02
    int 21h ; выводим перевода строки
    
; обрабатываем содержимое буфера
    mov si,offset buff+2 ; берем аддрес начала строки
    cmp byte ptr [si],"-" ; если первый символ минус
    jnz ii1
    mov di,1  ; устанавливаем флаг
    inc si    ; и пропускаем его
ii1:
    xor ax,ax
    mov bx,10  ; основание сc
ii2:
    mov cl,[si] ; берем символ из буфера
    cmp cl,0dh  ; проверяем не последний ли он
    jz endin
    
; если символ не последний, то проверяем его на правильность
    cmp cl,'0'  ; если введен неверный символ <0
    jl er
    cmp cl,'9'  ; если введен неверный символ >9
    ja er
 
    sub cl,'0' ; делаем из символа число 
    mul bx     ; умножаем на 10
    add ax,cx  ; прибавляем к остальным
    inc si     ; указатель на следующий символ
    jmp ii2     ; повторяем
 
er:   ; если была ошибка, то выводим сообщение об этом и выходим
    mov dx, offset error
    mov ah,09
    int 21h
    int 20h
 
; все символы из буфера обработаны число находится в ax
endin:
    cmp di,1 ; если установлен флаг, то
    jnz ii3
    neg ax   ; делаем число отрицательным
ii3:
    ret
 
error db "incorrect number$"
buff    db 4,7 Dup(?)
InputInt endp
End
Так ?
0
1127 / 261 / 9
Регистрация: 11.06.2010
Сообщений: 1,049
06.10.2013, 00:49
исчо регистры надо используемые сохранить и потом сделать ожидание нажатие клавиши с последующим завершением работы программы
0
780 / 412 / 75
Регистрация: 29.03.2013
Сообщений: 849
07.10.2013, 07:25
Весьма желательно ввести в привычку вставлять между основной программой и подпрограммой (строка 23) код завершения (mov ax, 4c00h/int 21h), чтобы небыло неожиданного поведения программы.

Добавлено через 8 минут
int 20h (строка 64) для завершения можно использовать только если CS=PSP, что в данном случае не так.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
07.10.2013, 07:25
Помогаю со студенческими работами здесь

Ввод с консоли без заданного числа элементов
Всем привет ! 1 Не понятно почему cin.get() не понимает что нужно вводить до тех пор пока не будет 2 раза пробел ? 2 Как можно...

Как сделать ввод числа в консоли в той же строке что и указатель?
Console.WriteLine(&quot; -&gt; &quot;); number = Convert.ToInt32(Console.ReadLine()); как сделать ввод числа в консоли в той же строке что и...

Что работает быстрее, ввод с консоли или ввод с файла?
вводятся множество списков программа удаляет первое число списка и удаляет все числа в этом списке если встречается 1. потом она их...

Переделать ввод с консоли на ввод из файла
Здравствуйте! Написала программу, но результат таков: я брала информацию из строки. Мне нужно, чтобы брать информацию из файла, а не из...

Пропускает ввод данных в консоли. Не работает часть кода. Пропускает ввод фио
Добрый день! Помогите пожалуйста! В void add_dinamo() пропускает cout&lt;&lt;&quot;ФИО: \t&quot; ; cin.getline(b.fio, 49); а дальше...


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

Или воспользуйтесь поиском по форуму:
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