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

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

03.10.2013, 20:04. Показов 4749. Ответов 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
Сообщений: 853
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
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru