реклама на сайте
подробности

 
 
> перемножение вещественных чисел, как перемножит скажем 3,25 на 0,75 ?
showone
сообщение Jan 19 2007, 16:02
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-07-05
Пользователь №: 6 832



подскажите пожалуйста
как перемножить два числа 3,25 на 0,75 ?
использую C8051F121 там есть аппаратный перемножитель.
все замечательно умножается если 0,2*0,007 или целое на целое, 1234*9874.
легко и быстро.
а как вот если число содержит и целую и дробную часть ?
т.е. 3,24*7,2 или 0,27*7,15

принимаются любые предложения.
заранее спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
showone
сообщение Jan 22 2007, 11:33
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 27
Регистрация: 15-07-05
Пользователь №: 6 832



подскажите еще пожалуйста.
вот есть mul ab с ним все понятно.
а если нужно умножить 388*435 т.е. числа которые больше байта ?
т.е. умножить два байта на два или на три байта ?
заранее спасибо.


Цитата(mihask @ Jan 22 2007, 10:58) *
Цитата(showone @ Jan 22 2007, 13:28) *

спасибо, буду пробовать.


А почему не хотите воспользоваться библиотекой с плавающей точкой ? smile.gif



пишу на ASM.
а где можно посмотреть эту библиотечку ? или примеры любые ?
Go to the top of the page
 
+Quote Post
mihask
сообщение Jan 22 2007, 12:23
Сообщение #3


Частый гость
**

Группа: Validating
Сообщений: 80
Регистрация: 7-12-05
Пользователь №: 11 905



Цитата(showone @ Jan 22 2007, 14:33) *
подскажите еще пожалуйста.
вот есть mul ab с ним все понятно.
а если нужно умножить 388*435 т.е. числа которые больше байта ?
т.е. умножить два байта на два или на три байта ?
заранее спасибо.


Цитата(mihask @ Jan 22 2007, 10:58) *

Цитата(showone @ Jan 22 2007, 13:28) *

спасибо, буду пробовать.


А почему не хотите воспользоваться библиотекой с плавающей точкой ? smile.gif



пишу на ASM.
а где можно посмотреть эту библиотечку ? или примеры любые ?




Вот библиотека с умножения положительных чисел с фиксированной запятой
UMN2_2B - ПРОГРАММА УМНОЖЕНИЯ 2 БАЙТОВОГО ЧИСЛА НА 2 БАЙТОВОЕ.
UMN -ПРОГРАММА УМНОЖЕНИЯ 6 БАЙТОВОГО ЧИСЛА НА 2 БАЙТОВОЕ.
причем из UMN2_2B можно сделать умножение n-БАЙТОВОГО ЧИСЛА НА m-БАЙТОВОЕ.

Но всеже лучше помоему перейти на Си и воспользоваться стандартной библиотекой с плавающей
точкой Keil или IAR.

Библиотеку с плавающей точкой для asm сейчас поищу у себя, я помоему ее с gaw.ru брал -
там где информация по 51-м контроллерам.




;ПРОГРАММА УМНОЖЕНИЯ 2 БАЙТОВОГО ЧИСЛА НА 2 БАЙТОВОЕ.
;ВХОД R0- АДРЕС УМОЖАЕМОГО ,R1 - АДРЕС 2 УМНОЖАЕМОГО.
;R0 - АДРЕС ПРОИЗВЕДЕНИЯ.

UMN2_2B:
MOV A,@R0
MOV B,@R1
MUL AB
PUSH B
MOV R3,A
MOV A,@R0
INC R1
MOV B,@R1
MUL AB
MOV R2,B
POP B
ADD A,B
MOV R4,A
MOV A,R2
ADDC A,#0
MOV R5,A

INC R0
MOV A,@R0
DEC R1
MOV B,@R1
MUL AB
PUSH B
MOV R6,A ;--------
MOV A,@R0
INC R1
MOV B,@R1
MUL AB
MOV R2,B
POP B
ADD A,B
MOV R7,A ;--------
MOV A,R2
ADDC A,#0
PUSH A
DEC R0

PUSH A
MOV A,R3
MOV @R0,A
INC R0
POP A

MOV A,R6
ADD A,R4 ;1
MOV @R0,A
INC R0

MOV A,R7
ADDC A,R5
MOV @R0,A ;2
INC R0

POP A
ADDC A,#0
MOV @R0,A ;3

RET






;ПРОГРАММА УМНОЖЕНИЯ 6 БАЙТОВОГО ЧИСЛА НА 2 БАЙТОВОЕ.
;ВХОД R0- АДРЕС УМОЖАЕМОГО ,R1 - АДРЕС 2 УМНОЖАЕМОГО.
;R0 - АДРЕС ПРОИЗВЕДЕНИЯ.
UMN:
MOV A,R1
MOV R7,A
MOV A,@R1
MOV R2,A
INC R1
MOV A,@R1
JNZ UMN1
ADD A,R2
JZ UMN_NA0
CJNE A,#1,UMN1
RET
UMN1: MOV A,R7
MOV R1,A
MOV A,@R1
MOV DPL,A
INC R1
MOV A,@R1
MOV DPH,A
MOV R4,#0
UMN2: CLR C
MOV A,DPL
RLC A
MOV DPL,A
MOV A,DPH
RLC A
MOV DPH,A
JC UMN3
INC R4
SJMP UMN2
UMN3: MOV A,#16
CLR C
SUBB A,R4
DEC A
MOV B,A
MOV A,R0
MOV R7,A
MOV A,@R0
INC R0
MOV R1,A
MOV A,@R0
INC R0
MOV R2,A
MOV A,@R0
INC R0
MOV R3,A
MOV A,@R0
INC R0
MOV R4,A
MOV A,@R0
INC R0
MOV R5,A
MOV A,@R0
MOV R6,A
UMN6: CALL SDVIG
CLR C
MOV A,DPL
RLC A
MOV DPL,A
MOV A,DPH
RLC A
MOV DPH,A
JNC UMN7
CALL SUMMA
UMN7: DJNZ B,UMN6
MOV A,R7
MOV R0,A
RET
UMN_NA0: MOV R5,#6
MOV A,R0
MOV R7,A
CLR A
U_NA0: MOV @R0,A
INC R0
DJNZ R5,U_NA0
MOV A,R7
MOV R0,A
RET

SDVIG:
CLR C
SDV_NOC: MOV A,R7
MOV R0,A
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
INC R0
MOV A,@R0
RLC A
MOV @R0,A
RET
SUMMA: MOV A,R7
MOV R0,A
CLR C
MOV A,@R0
ADDC A,R1
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,R2
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,R3
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,R4
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,R5
MOV @R0,A
INC R0
MOV A,@R0
ADDC A,R6
MOV @R0,A
RET
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 14:48
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016