Форум программистов, компьютерный форум, киберфорум
Assembler для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.74/165: Рейтинг темы: голосов - 165, средняя оценка - 4.74
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 16

Сложение двух чисел, введенных с клавиатуры

06.06.2015, 08:56. Показов 35913. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите, пожалуйста, с задачей по ассемблеру. Нужно сложить два числа введенных с клавиатуры и вывести их на экран. (П.с. Есть похожие программы, но это не то. Хотелось бы программу полностью и с комментариями. Буду благодарна)
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.06.2015, 08:56
Ответы с готовыми решениями:

Сложение двух вещественных чисел, введённых с клавиатуры
Помогите, пожалуйста! Очень надо просто сдать. Мне нужна подобная программа...

Вывести на экран сумму двух введенных с клавиатуры двузначных чисел
Вывести на экран сумму двух введенных с клавиатуры двузначных чисел (вводить посимвольно функцией 01 прерывания 21h, значение вводить так,...

Как сделать конкатенацию двух строк, введенных с клавиатуры?
или хотя б как узнать реальную длину строки после ввода? enter там будет? можна узнать длину если искать циклично в строке enter?

8
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
06.06.2015, 17:39
1. берем запрашиваем пользователя ввести строку (числа)
2. переводим строку в число
3. делаем арифметические операции
4. переводим число в строку
5. показываем результат на экране
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 16
06.06.2015, 19:10  [ТС]
Спасибо конечно, но я не знаю как это реализовать в коде..
0
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
06.06.2015, 20:36
легко, пиши на почту ,решим
0
 Аватар для LegchylinIlya
22 / 22 / 28
Регистрация: 22.05.2015
Сообщений: 55
06.06.2015, 21:56
Лучший ответ Сообщение было отмечено Nancy как решение

Решение

TASM

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
102
103
104
105
106
.model small                  
.stack 16h                    
.data  
msgA db 'Enter A = ', '$ '
msgB db 13,10,'Enter B = ', '$ '
msg5 db 13,10,'Result X = ', '$ '               
msg label byte
maxnum db 6 
reallen db ?
numfld db 5 dup(30h)
mult10 dw 0
ascval db 5 dup(30h),'$'             
  x  dw  ?
  a  dw  0
  b  dw  0
c dw 0
  z dw 0
u dw 0
 
.code                        
start: mov ax, @data          
       mov ds, ax   
       mov ah,9
       lea dx, msgA ; Сообщение "Enter A = "
       int 21H;
 
       mov ah,0AH
       lea dx,msg
       int 21H   
       call asbin ; Ввод числа с клавиатуры
       mov ax,z
       mov a,ax
 
       mov ah,9
       lea dx, msgB ; Сообщение "Enter B = "
       int 21H;
 
       mov ah,0AH
       lea dx,msg
       int 21H   
       call asbin ; Ввод числа с клавиатуры
       mov ax,z
       mov b,ax
 
    
       mov ah,9
       lea dx, msg5 ; Сообщение "Result X = "
       int 21H;       
   
   
       mov bx, dx
       mov cx, ax             
 
       xor dx,dx
       mov ax, a         
       add ax,b ; Складываем 2 числа                
       mov x, ax
 
 
call outp ; Вывод результата на экран 
     
       mov ah, 4ch ; Выйти из программы            
       int 21h     
                  
asbin proc ; Процедура ввода с клавиатуры
       mov mult10,0001
       mov z,0
       mov cx,10
       lea si,numfld-1
       mov bl,reallen
       sub bh,bh
b20:
       mov al,[si+bx]
       and ax,000fh
       mul mult10
       add z,ax
       mov ax,mult10
       mul cx
       mov mult10,ax
       dec bx
       jnz b20
       ret
asbin  endp
 
outp proc ; Процедура вывода на экран
       mov cx,10                ; система счисления
       lea si, ascval+4         ; Установка указателя на конец массива ascval
       mov ax, x                ; Результат х занести в ax
c20:   cmp ax,10                ; Сравнить результат с числом 10
       jb c30                   ; Если меньше то преобразовывать не надо
        xor dx,dx   ; Очистка регистра dx для команды деления
       div cx                   ; Делим на 10
       or dl, 30h               ; Преобразование остатка к ASCII коду
       mov [si], dl             ; Занесение остатка от деления в массив ascval
       dec si                   ; Перемещение указателя массива на 1 байт влево
       jmp c20                  ; Переход на начало для преобразования след. цифры
c30:   or al, 30h               ; Если остаток меньше 10, то вывод результата на экран
       mov [si], al             ; дисплея командами (см. ниже)
       lea dx, ascval           ; Загрузка адреса массива
       mov ah, 9                ; Вызов 9-ой функции MS-DOS 
       int 21h
       ret                      ; Возврат в головную программу из п/программы
outp endp               ; Конец процедуры
 
 
end start
2
183 / 121 / 26
Регистрация: 18.05.2015
Сообщений: 509
06.06.2015, 23:25
LegchylinIlya,
молоток, уже сделал
я только был на 2/3 объема, хотел мудрил чтобы было в eax, потом подумал, наверно зря, такое точно засекут
0
0 / 0 / 0
Регистрация: 29.03.2015
Сообщений: 16
07.06.2015, 10:58  [ТС]
Спасибо огромное вам!!))
0
5 / 5 / 1
Регистрация: 20.09.2015
Сообщений: 86
03.05.2017, 10:27
Я вот так сделал. MASM32:
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
.486
.model flat, stdcall
option casemap: none
 
include \masm32\include\windows.inc
include \masm32\include\kernel32.inc
include \masm32\include\masm32.inc
include \masm32\include\debug.inc
 
includelib \masm32\lib\kernel32.lib
includelib \masm32\lib\masm32.lib
includelib \masm32\lib\debug.lib
 
.data
 
BufSize = 9h ; размер массива вводимых байтов
X BYTE 4 DUP(?) ; захват памяти под массив ввода
Y BYTE 4 DUP(?) ; захват памяти под массив ввода
Z BYTE 5 DUP (0) ; сумма
S byte '+' ; символ суммы для вывода
E byte '=' ; символ равенства для вывода
outHandle DWORD 0 ; дескриптор стандартного устройства вывода
bytesWritten DWORD ? ; число выведенных байтов
inHandle DWORD 0 ; дескриптор стандартного устройства ввода
bytesRead DWORD ? ; число введённых байтов
Q BYTE ? ; одиночный символ массива ввода
.code
start:
 
INVOKE GetStdHandle, STD_INPUT_HANDLE   ; получение дескриптора
mov inHandle, eax           ; сохранение дескриптора в памяти
;INVOKE GetConsoleMode, inHandle, offset X  ; сохранение флагов
;mov al,X
INVOKE ReadConsole, inHandle, offset X, BufSize, offset bytesRead, 0
INVOKE ReadConsole, inHandle, offset Y, BufSize, offset bytesRead, 0
CLC ; сброс флага переноса CF
MOV esi,Lengthof X-1 ; смещение мл. байта слагаемого
MOV edi,esi
inc edi ; длина суммы на 1 байт больше длины слагаемого
MOV ecx,Lengthof X ; счётчик цикла
M: ; начало цикла
MOV ah,0 ; освобождение места для возможного переноса
MOV al,X[esi] ; загрузка байта первого слагаемого
ADD al,Y[esi] ; сложение двух байтов и переноса
AAA ; ASCII-коррекция после сложения
PUSHF
OR al,30h ; получение ASCII-кода цифры суммы
POPF
MOV Z[edi],al ; сохранение цифры суммы в памяти
DEC esi ; смещение следующего байта слагаемых
DEC edi ; смещение следующего байта суммы
LOOP M
cmp ah,1
ja D
jb B  ; получение ASCII-кода старшей цифры суммы
D:
or ah, 30h
MOV Z[edi],ah ; сохранение старшей цифры суммы в памяти
B:
MOV Z[edi],ah ; сохранение старшей цифры суммы в памяти
INVOKE GetStdHandle, STD_OUTPUT_HANDLE
mov outHandle ,eax
INVOKE WriteConsole, outHandle, offset X, lengthof X, offset bytesWritten,0
INVOKE WriteConsole, outHandle, offset S, lengthof S, offset bytesWritten,0
INVOKE WriteConsole, outHandle, offset Y, lengthof Y, offset bytesWritten,0
INVOKE WriteConsole, outHandle, offset E, lengthof E, offset bytesWritten,0
INVOKE WriteConsole, outHandle, offset Z, lengthof Z, offset bytesWritten,0
 
INVOKE GetStdHandle, STD_INPUT_HANDLE
mov inHandle,eax
INVOKE ReadConsole, inHandle, offset Q, 1, offset bytesRead, 0
INVOKE ExitProcess,0
END start
0
3410 / 1829 / 489
Регистрация: 28.02.2015
Сообщений: 3,696
03.05.2017, 11:00
Drovosek01, Вы на дату смотрели?
Тема уже не актуальна.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
03.05.2017, 11:00
Помогаю со студенческими работами здесь

Сумма чисел, введенных с клавиатуры
Здравствуйте. В общем, задание такое: ввести два числа с клавиатуры и вычислить их сумму (TASM). Недавно только познакомился с вводом с...

Вывести на экран сумму двух введенных с клавиатуры цифр (результат заведомо меньше 10)
Имеется два числа (цифры) a и b. Вычислить y = 2a - b + 1. Компилятор Dos, тип приложения tasm 1.4

Найти разность введенных с клавиатуры чисел со знаком.
Добрый вечер.Может кто поможет с моей задачей. Найти разность введенных с клавиатуры чисел со знаком. Числа разделяются...

Вывести на экран сумму двух любых введенных с клавиатуры цифр (сумма может быть больше 10)
Как вывести числа больше 10?. Компилятор Dos Box, Tasm 1.4

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


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
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 . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru