Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
0 / 0 / 0
Регистрация: 09.11.2020
Сообщений: 4
1

Как складывать числа с переполнением на intel8051

09.11.2020, 18:55. Просмотров 603. Ответов 8
Метки нет (Все метки)

Проблема следующая, нужно вычислить сумму например 240 + 45, а потом к этому числу в данном случае 285 + 44, как это организовать помощью двух регистров с пересылкой на следующий в случае переполнения.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.11.2020, 18:55
Ответы с готовыми решениями:

Как складывать все поочередно складывать значения которые возрастают
Нужно складывать по этой формулы 1/(1+k*2) Примерно так...

Как складывать числа в виде строки?
я попытался написать программу которая сможет складывать строки как числа, но выдает ошибку....

Как складывать числа с точкой и запятой
Добрый день. Функция складывает два введенных через input числа, работает корректно. <input...

Как складывать числа из одного файла с другим?
Суть в чём в одно файле есть числа например 2 3 4 В другом файле есть числа например 3 4 5...

8
950 / 580 / 96
Регистрация: 15.05.2012
Сообщений: 3,384
10.11.2020, 09:38 2
Команда ADDC заточена как-раз под этот случай.
0
0 / 0 / 0
Регистрация: 09.11.2020
Сообщений: 4
10.11.2020, 10:49  [ТС] 3
Это, как раз я понял, а можешь пример программы пожалуйста сделать, просто я не очень могу понять, как данная команда работает
0
Модератор
Эксперт по электронике
8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
10.11.2020, 10:53 4
Цитата Сообщение от Noxx Посмотреть сообщение
как данная команда работает
складывает два регистра и прибавляет 1 если было переполнение в предыдущем сложении
Цитата Сообщение от Noxx Посмотреть сообщение
а можешь пример программы
1) складываешь два младших регистра ADD
2) складываешь два старших регистра ADDC
0
0 / 0 / 0
Регистрация: 09.11.2020
Сообщений: 4
10.11.2020, 10:57  [ТС] 5
К примеру, у нас есть программа:
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
MOV P1, #00H
MOV R1, #32H
MOV R2, #00H
MOV R3, #00H
start:
 
INC R2
 
MOV A, R3
 
MOV B, R1
 
DEC R1
 
ADD A, B
 
MOV R3, A
 
CJNE R1, #00H, start
 
MOV A, R3
 
MOV B, R2
 
DIV AB
 
MOV P1, A
 
END
Проблема возникла в следующем моменте, когда я складывал числа, сумма чисел перевалила за 255 и при сложении к примеру 240(0F0H)+45(02DH) получился ответ 285(01DH), сначала я не понял в чем проблема, но потом посмотрел, что мы работаем с 8 битным процессором. А как складывать числа, выходящие за пределы я не знаю, помимо этого это 16 битное полученное в итоге число надо будет потом еще и поделить. Как быть?
0
950 / 580 / 96
Регистрация: 15.05.2012
Сообщений: 3,384
10.11.2020, 18:30 6
Assembler
1
2
3
4
5
6
MOV A, R3
 
MOV B, R1
 ...
 
ADD A, B
По итогу флаг переноса будет "1", если результат превысил 255. Вот этот перенос и используем дальше.
0
0 / 0 / 0
Регистрация: 09.11.2020
Сообщений: 4
12.11.2020, 12:31  [ТС] 7
Разобрался, вот в итоге такая программа получается

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
MOV P0, #00H
MOV P1, #00H
MOV R1, #32H
MOV R2, #00H
MOV R3, #00H
MOV R4, #00H
start:
 
INC R2
 
MOV A, R3
 
MOV B, R1
 
DEC R1
 
ADDC A, B
 
MOV R3, A
 
JC ss
JNC sh
ss:
INC R4
JMP sh
sh:
 
CJNE R1, #00H, start
 
MOV P1, R3
MOV P0, R4
 
END
Добавлено через 4 минуты
А вот как делить я не знаю, ибо число 16 бит. Если знаете, можете подсказать
0
950 / 580 / 96
Регистрация: 15.05.2012
Сообщений: 3,384
12.11.2020, 13:16 8
Фрунзе. Микроконтроллеры? Это же просто!
0
Модератор
Эксперт по электронике
8333 / 6185 / 829
Регистрация: 14.02.2011
Сообщений: 21,482
12.11.2020, 19:48 9
Цитата Сообщение от Noxx Посмотреть сообщение
А вот как делить я не знаю, ибо число 16 бит. Если знаете, можете подсказать
как делишь столбиком?
так примерно и здесь
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
12.11.2020, 19:48

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Как складывать числа, если даны только указатели на них?
В общем, стоят задача, в которой требуется передать в функцию указатели на числа типа float и...

как складывать числа посредством запроса или без него
Есть табличка и в ней есть поле ref_sum ( тип float ), числа в ней могут быть такие: 0, 0.01,...

Как сделать generic класс, который будет принимать в качестве параметра только числа и уметь их складывать и т.д?
Я хочу написать класс дерева отрезков в который можно передавать любые числа, однако даже T extends...

Необходимо складывать и умножать числа в таблице
Люди, спасайте, только начал изучать PHP, и тут задали. Пример таблицы: <html> <head> <title>...

Складывать числа, пока не встретится ноль
Имеется массив А из N произвольных чисел А(N), среди которых есть положительные, отрицательные и...

Программа проверки умения складывать и вычитать числа
Написать программу по проверке умения складывать и вычитать числа до 100. Программа должна выдавать...


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

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.