Matematické Fórum

Nevíte-li si rady s jakýmkoliv matematickým problémem, toto místo je pro vás jako dělané.

Nástěnka
22. 8. 2021 (L) Přecházíme zpět na doménu forum.matweb.cz!
04.11.2016 (Jel.) Čtete, prosím, před vložení dotazu, děkuji!
23.10.2013 (Jel.) Zkuste před zadáním dotazu použít některý z online-nástrojů, konzultovat použití můžete v sekci CAS.

Nejste přihlášen(a). Přihlásit

#1 18. 07. 2010 17:59

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

poradí mi někdo s assemblerem?

LDI  R0,1
LDI  R4,34
MOV  R2,R0
ADD  R2,R2
MOV  R3,R2
LSL  R3
MOV  R1,R3
OR   R1,R2
ADD  R1,R2
MOV  R5,R4
ANDI R5,15
EOR  R6,R6
MOV  R7,R1
EOR  R7,R6
----------
N 49° R0.R1R2R3 E 016° R4.R5R6R7
Tady jsou zašifrovány souřadnice cache, je to v assembleru, nevím, jak na to. Prosím ,pokud by mi někdo mohl poradit co s tím, či dokonce rozluštit, budu mu moc vděčná.Díky.

Offline

  • (téma jako vyřešené označil(a) Kondr)

#2 18. 07. 2010 23:37

check_drummer
Příspěvky: 4650
Reputace:   101 
 

Re: poradí mi někdo s assemblerem?

↑ VeraSob:
Ahoj, assembler je program blízký strojovému kódu, každá instrukce má svůj většinou jednoduchý význam (sčítání, bitový posun,...). Asi bude nejlepší najít si na internetu význam těch příkazů.


"Máte úhel beta." "No to nemám."

Offline

 

#3 19. 07. 2010 08:08

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: poradí mi někdo s assemblerem?

díky za pomoc,↑ check_drummer: instrukce jsem našla a snad tisíckrát prošla, ale pořád mi tam nesedí příkazyANDI a EOR, no nic budu se s tím muset poprat, dík!↑ check_drummer:

Offline

 

#4 19. 07. 2010 11:05

mikrochip
Příspěvky: 225
Reputace:   -1 
 

Re: poradí mi někdo s assemblerem?

mě ty instrukce jsou taky divné...

v assembleru programuji od 15 let....tak na tom dělám :-))))))))))

snad se mi to podaří ...


Ni moc, ni bohatství, jen vědění žezla trvají!

Offline

 

#5 19. 07. 2010 13:23

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: poradí mi někdo s assemblerem?

↑ mikrochip:    teda jestli se ti to podaří, reputaci ti zvýším co to pude:-))

Offline

 

#6 20. 07. 2010 19:27

check_drummer
Příspěvky: 4650
Reputace:   101 
 

Re: poradí mi někdo s assemblerem?

↑ VeraSob:
Zkus místo EOR použít XOR a místo ANDI použít AND. Schválně, co to udělá. :-)


"Máte úhel beta." "No to nemám."

Offline

 

#7 20. 07. 2010 21:04

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: poradí mi někdo s assemblerem?

↑ check_drummer:znovu jsem prošla furu instrukcí, zkoušela použít AVR studio, ale nemám na to:-)).Vychází mi asi toto.49.01.818. 016.34.198, ale myslím, že to mám zase blbě. Nemohl bys mi to i přes svůj věk opravit?:-))prosím, mimochodem já jsem ve věku, kdy mi to už  hůř  zapaluje, vždyt pamatuju ještě děrování štítků, kdysi jsem dělala zápočet z fortranu, ale to je přesně 33 roků:-)). tak to prosímtě aspon projdi a dej vědět,díky

Offline

 

#8 21. 07. 2010 19:36

check_drummer
Příspěvky: 4650
Reputace:   101 
 

Re: poradí mi někdo s assemblerem?

↑ VeraSob:
Já asembler taky neumím - jen mám povědomí o tom jak funguje, ale neznám přesně chování jednotlivých instrukcí jako LSI atd. Možná, kdybys ke každému řádku připsala novou hodnotu proměnné, kterou daná instrukce modifikuje, že by se pak hledala chyba lépe.


"Máte úhel beta." "No to nemám."

Offline

 

#9 22. 07. 2010 03:58 — Editoval RePRO (25. 07. 2010 17:16)

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: poradí mi někdo s assemblerem?

Ahoj, určitě bych Ti s tím pomohl, ale nechápu moc Tvou otázku... Jinak instrukce, které tu jsou napsané jsou běžně používané. [AVR] Trošku se je pokusím popsat a nastínit problematiku:

; LDI [load immediately]
-- tato instrukce nastaví registr na hodnotu konstanty. Jinak je to podobný s instrukcí move, akorát se tady používá ta konstanta. R0 = 1.
LDI  R0, 1

; LDI [load immediately]
-- tato instrukce nastaví registr na hodnotu konstanty. Jinak je to podobný s instrukcí move, akorát se tady používá ta konstanta. R4 = 34.
LDI  R4, 34

; MOV [move]
-- tato instrukce hodí obsah (hodnotu) registru na adrese R0 do R2. R2 = 1.
MOV  R2, R0

; ADD [add without Carry]
-- tato instrukce by měla umět sečíst operandy. :-) Levý a pravý. :-) Přičemž výsledek by se Ti měl hodit do R2 (tipuju) R2 = 2.
ADD  R2, R2

; MOV [move]
-- hodíme do registru R3, co máme na adrese R2. Na adrese R2 by měla být hodnota 2. R3 = 2.
MOV  R3, R2

; LSL [logical shift left]
-- tato instrukce slouží pro bitový posun na té adrese (doleva). Takže důležité u těchto posunů je, že ten bit, kterej vytlačíš jde do Carry. Ale to tu není až tak důležité. :-) Tady jde o to, že se Ti změní hodnota na adrese. :-) Vylezla mi z toho 4, ale těžko říct...
LSL  R3

; MOV [move]
-- obsah adresy R3 (nějaká hodnota) hodíme do registru R1.  R1 = 4.
MOV  R1, R3

; OR [logical OR]
-- bitový součet hodnot na adresách R1 a R2. R1 OR R2 = 110 (dvojkově) a to by mělo být decimálně číslo 6.
OR   R1, R2

; ADD [add without Carry]
-- tato instrukce by měla umět sečíst operandy. :-) Takže sečteme hodnotu 2 a 6. A výsledek by se Ti měl hodit do R1 (tipuju) R1 = 8.
ADD  R1, R2

; MOV [move]
-- hodíme do registru R5 to co máme na adrese R4. R5 = 34.
MOV  R5, R4

; ANDI [logical AND with Immediate]
-- jde de fakto o logický součin s konstantou. Takže vlastně provedeš AND s hodnotou na adrese R5 a s konstantou 15. Takže: 34 AND 15 = 2. A výsledek se Ti uloží do R5. R5 = 2.
ANDI R5, 15

; EOR [exclusive OR]
-- označován někdy jako XOR. :-) Co se stane si asi domyslíš. A pokud nedomyslíš, klidně nastíním, ale google XOR zobrazí... :-)
EOR  R6, R6

; MOV [move]
-- hodíme obsah R1 do R7. R7 = 8.
MOV  R7, R1

; EOR [exclusive OR]
-- znova provedeme XOR. :-)
EOR  R7, R6

A pokud bylo u instrukce písmeno I, tak to zcela proto, že se tam pracovalo s konstantou (ne ve všech případech). Ono by se to mohlo plést s klíčovým slovem interrupt, což je přerušení, a používá se třeba u řady 8051.

Jinak je také dobré vědět, že mnoho instrukcí sebou nosí tak zvané Flags (příznaky). Po provedení určité instrukce se nastaví příznak, třeba Carry (došlo k přetečení či nedošlo) a tak dále. Je dobré o tom vědět.


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#10 22. 07. 2010 09:43

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: poradí mi někdo s assemblerem?

↑ RePRO:děkuju, musím se na to mrknout, ted ale nemám čas, odjíždím, ozvu se večer nebo zítra:-))

Offline

 

#11 23. 07. 2010 19:20

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: poradí mi někdo s assemblerem?

↑ VeraSob:↑ VeraSob: Ať pocítám jak počítám, R1 musí být 8, protože to jinak nejde, prostě keš je schovaná v určitém prostoru a souřadnice musí být 49.01.8.. ,no, jinak by byla v širém poli a to fakt nepřichází v úvahu :-))

Offline

 

#12 24. 07. 2010 23:07

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: poradí mi někdo s assemblerem?

↑ VeraSob: Co takhle si to krokovat? [steps] To je nejlepší. ;-) Je jasné, že jsem mohl udělat jednoduchej kiks. :-))


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

#13 25. 07. 2010 01:35

Kondr
Veterán
Místo: Linz, Österreich
Příspěvky: 4246
Škola: FI MU 2013
Pozice: Vývojář, JKU
Reputace:   38 
 

Re: poradí mi někdo s assemblerem?

↑ VeraSob: Ono to asi bude souviset s tím, že ORováním R1 a R2 jsme dali do R1 šestku a pak jsme k ní přičetli dvojku. R1 opravdu vyjde 8, R7 se taky změní na 8 díky MOV R7,R1 (poslední instrukce už nic nedělá). Jinak se mi postup od REPRO zdá OK.


BRKOS - matematický korespondenční seminář pro střední školy

Offline

 

#14 25. 07. 2010 14:39

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: poradí mi někdo s assemblerem?

Díky všem za pomoc, jdu do terénu ověřit, jestli jsou souřadnice vypočítány správně, držte palce!:-))

Offline

 

#15 25. 07. 2010 16:38

VeraSob
Zelenáč
Příspěvky: 11
Reputace:   
 

Re: poradí mi někdo s assemblerem?

HEURÉKA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!. Ještě jednou dík všem zúčastněným!!:-))

Offline

 

#16 25. 07. 2010 17:10

RePRO
Místo: Jihlava
Příspěvky: 363
Škola: AI VŠPJ (09-12, Bc.)
Pozice: programátor
Reputace:   11 
Web
 

Re: poradí mi někdo s assemblerem?

Blahopřeji ke správnému výsledku. Jinak já se omlouvám, vůbec jsem si toho nevšiml a upravím to v mém příspěvku. Přesně jak říkáte... V R1 máme hodnotu 6 a v R2 máme hodnotu 2. Po provedení instrukce ADD se nám opravdu dostane do R1 hodnota 8. :-)


Srdcem trochu-programátor, duší rádoby-matematik a povoláním analytik-vývojář.

Offline

 

Zápatí

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson