delenie v assemblery

Diskuze a poradna o programátorech a programování různých obvodů

Moderátor: Moderátoři

Odpovědět
Zpráva
Autor
Uživatelský avatar
Specnac
Příspěvky: 12
Registrován: 03 říj 2008, 02:00

delenie v assemblery

#1 Příspěvek od Specnac »

Nazdar
Neviete nahodov ako mam napisat program na delenie dvoch binárnych cisiel v assembleri ? Dakujem za pomoc

P.S: myslim assembler pre PIC16F84A

Uživatelský avatar
Ragnol
Příspěvky: 232
Registrován: 09 lis 2005, 01:00
Kontaktovat uživatele:

#2 Příspěvek od Ragnol »

pomocí příkazů asembleru ...
je to celočíselný nebo reálny , jak velký jsou ty čísla ...

Uživatelský avatar
mihal
Příspěvky: 1812
Registrován: 06 dub 2005, 02:00
Bydliště: Zilina

#3 Příspěvek od mihal »

O ake delenie mas zaujem? Celym cislom (2-8) je to len posun v pravo. U delenia byte:byte je to uz horsie, ak chces aj s desatinnymi miestami..
A preco prave v ASM? Ked v C mas na to kniznice?

Uživatelský avatar
Specnac
Příspěvky: 12
Registrován: 03 říj 2008, 02:00

#4 Příspěvek od Specnac »

Pretoze neviem ako C previest na ASM :) Takto. programujem program pre SOCku v assemblery a o ostatnom nemam ani paru... potrebujem cislo zo suboru vydelit 60timi. Cislo v subore bude 63 - 120.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#5 Příspěvek od Zmije »

Napadlo mě udělat cyklus a v něm odčítat dělitele od dělence, dokud nebude rozdíl < dělitel, počet průchodů cyklem je celá část a to měnší než dělitel je zbytek, ale asi jsou na to fígle s bit. operacemi.

Uživatelský avatar
Split
Příspěvky: 762
Registrován: 02 pro 2006, 01:00
Bydliště: Komárno

#6 Příspěvek od Split »

Vsetko co sa da pokazit sa raz pokazi.

Uživatelský avatar
Specnac
Příspěvky: 12
Registrován: 03 říj 2008, 02:00

#7 Příspěvek od Specnac »

Zmije: loooooooooooooooool tak toto ma vazne napadlo :D a pritom to je fakt jednoduche :D diki moc. potrebujem obcas nakopnut :D

Split: aj hento vyzera zaujimavo musim sa na to ale lepsie pozriet a uvidim co je lepsie. dakujeem ;)

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#8 Příspěvek od Zmije »

To víš, my sklerotici, co si do teď nezapamatovali násobilku, to hold musíme umět spočítat na prstech :D

Uživatelský avatar
piitr
Příspěvky: 1003
Registrován: 19 říj 2007, 02:00
Kontaktovat uživatele:

#9 Příspěvek od piitr »

Specnac píše:Pretoze neviem ako C previest na ASM :) Takto. programujem program pre SOCku v assemblery a o ostatnom nemam ani paru... potrebujem cislo zo suboru vydelit 60timi. Cislo v subore bude 63 - 120.
Nevím, jestli to dobře chápu, ale za těchto podmínek bude podíl 2 pro 120 a 1 pro všechny ostatní případy. Mělo by stačit jedno porovnání.

Uživatelský avatar
ZdenekHQ
Administrátor
Administrátor
Příspěvky: 25593
Registrován: 21 črc 2006, 02:00
Bydliště: skoro Brno
Kontaktovat uživatele:

#10 Příspěvek od ZdenekHQ »

:) To mě napadlo hned po přečetní toho dotazu, ale myslel jsem, že je to spíš blbej vtip...

Snad potřebuje nějaký to desetinný místo, pak si 120 vyjádří např. na 16 bitech jako 12000 a dělí 60 s tím, že na tohle jsou standartní rutiny v ASM a výsledek je o kuličku přesnější. Na 32 bitech je to ještě lepší. Rutiny mám, ovšem pro 51.
Naposledy upravil(a) ZdenekHQ dne 25 lis 2008, 13:03, celkem upraveno 1 x.
Pro moje oslovení klidně použijte jméno Zdeněk
Správně navržené zapojení je jako recept na dobré jídlo.
Můžete vynechat půlku ingrediencí, nebo přidat jiné,
ale jste si jistí, že vám to bude chutnat[?
]

Uživatelský avatar
piitr
Příspěvky: 1003
Registrován: 19 říj 2007, 02:00
Kontaktovat uživatele:

#11 Příspěvek od piitr »

No jo, to je fakt. :) To je možný, že potřebuje desetinná místa. Jenže zase po(s)tupné odečítání se mu líbí, což je pro tenhle případ dost blbý řešení. Kdo ví, o co jde. Možná autor sám neví, což by napovídala ta zkratka SOČ.

Uživatelský avatar
Zmije
Příspěvky: 1513
Registrován: 30 čer 2005, 02:00
Bydliště: Pardubický kraj

#12 Příspěvek od Zmije »

Právě pro případ, kdy je dělenec malý násobek dělitele, se dá ještě postupné odečítání považovat za celkem optimální, ale pokud to bude chtět na více desetinných míst, tak je určitě lepší použít jinou metodu, jedno porovnání je určitě nejlepší, ale když si vemu, že porovnání se ve vetšině asm implementuje jako odečtení porovnávaných čísel a nazakladě výsledku znaménka se rozhodne větší/menší příp. pro 0 rovnáse, tak je to vlastně stejná metoda, spíš záleží jaké možnosti má instrukční sada konkrétního procesoru, já pic nikdy neprogramoval a vím jen, že je to risc, takže má třeba oproti padině dost ochuzenou instrukční sadu.

Odpovědět

Zpět na „Programování PIC, ATMEL, EEPROM a dalších obvodů“