EDSIM51 assembler pomoć

poruka: 11
|
čitano: 2.694
|
moderatori: Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
9 godina
neaktivan
offline
EDSIM51 assembler pomoć

Dakle dobili smo zadaću iz mikroprocesora napisati program u assembleru. Program glasi: "Napisati program u assembleru koji će veliko slovo pohranjeno u memoriji na adresi 33H pretvoriti u malo slovo koje će se pospremiti na sljedeču adresu u memoriji. Izvršni kod programa neka počne na 100H. Neznam kako napraviti ovo da pretvori veliko slovo u malo. 

ovo sam samo do sada napravio :P

 

ORG100H

MOV A,#033H

 
0 0 hvala 0
9 godina
offline
Re: EDSIM51 assembler pomoć

moraš pogledat u ascii tablicu odnos velikih i malih slova

 

npr. veliko A je 41 heksadekadski, a malo a je 61 heksadekadski, znači razlika je 20 heksadekadski

 

i onda ideš logikom da bi dobio malo a, moraš vrijednosti od velikog A dodati 20 heksadekadski.

 

vjerujem i da u registru se pohranjuju vrijednosti u heksadekadskom zapisu, pa onda algoritam ide ovako nekako (komande assemblera ne znam, ali ti vjerojatno da)

 

pocni na adresi 100h

učitaj 41h na adresu 33h

učitaj 20h u slobodni registar (pretpostavljam da imas neki na raspolaganju npr. MOV R0, 20h)

učitaj slovo A u registar R2 (npr. MOV R2, #33)

loop: uvećaj R2 za 1 (npr. INC R2)

smanji R0 za 1 i ako nije 0 vrati se u petlju (ima naredba DJNZ ili slicno: DJNZ R0, loop)

kopirat malo 'a' iz R2 u 34h (MOV #33h, R2)

 

davno je ovo bilo, pa nisam siguran jel dobro, ali mislim da logika je

 

 

http://flyshare.info
11 godina
offline
EDSIM51 assembler pomoć

jmp 100h

org 100h

mov r0, #33h

mov r1, #20h

mov a, @r0

add a, r1

inc r0

mov @r0, a

loop:

jmp loop

 

 

Edit: Jesam li ja jedini koji dobije živčani slom kad vidi ovo: "U tekstu je pronađen nedozvoljeni komad HTML kôda, bla bla bla..."?

Imao sam fino komentiran kod i stavio sam ga u "kod stil" ali ne, imati tab i komentare je grijeh...

Poruka je uređivana zadnji put čet 8.3.2012 21:51 (Alkaline).
Moj PC  
0 0 hvala 0
12 godina
offline
EDSIM51 assembler pomoć

hmm, malo a u ascii kodu je 61 (binarno 110 0001) a veliko A je 41 (binarno 100 0001), razlika je samo sto je binarno ovdje kod malog slova 110, a kod velikog 100. Ja mislim da bi sasvim dovoljno bilo uraditi XOR naredbu (sad nezz kako ide u asembleru za EDSIM51) sa tim slovom, npr. 110 0001 XOR 010 0000, sada ja nisam siguran, ispravite me ako grijesim, sjetio sam se ovog nacina tek malo prije... 

p.s. ili mozda cak AND naredbu sa brojem 101 1111...

Poruka je uređivana zadnji put čet 8.3.2012 21:40 (slobo14).
Moj PC  
0 0 hvala 0
11 godina
neaktivan
offline
Re: EDSIM51 assembler pomoć
Alkaline kaže...
Edit: Jesam li ja jedini koji dobije živčani slom kad vidi ovo: "U tekstu je pronađen nedozvoljeni komad HTML kôda, bla bla bla..."?

Imao sam fino komentiran kod i stavio sam ga u "kod stil" ali ne, imati tab i komentare je grijeh...

Nisi jedini. Prvo pravilo ovog foruma: uvijek imaj otvoren notepad kada nesto lijepis. Prvo zalijepis u notepad pa odatle kopiras i lijepis na forum da ocistis formatiranje.

Druga stvar je kada lijepis kôd, prvo odaberi kôd stil, pa onda zalijepi, tako neces imati ove linije...

My computer once beat me at chess, but we got even after a round of boxing.
11 godina
offline
EDSIM51 assembler pomoć

Možeš XOR sa 20h ali ti opet treba jednaki broj instrukcija.

Moj PC  
0 0 hvala 0
11 godina
offline
EDSIM51 assembler pomoć

Sin mi polaže građu računala  pa molim sve koji znaju rad u edsim52 da mi odogovore na pitanje, zašto  kod pokretanja asemblera izbacuje grešku u prvoj liniji Unknown Label - AAh

Zadatak je ovako postavljen:

Napišite asemblerski kod koji će u memorijsku lokaciju 24h upisati broj AAh a u 28h broj 66h.

Pomnožite  ove brojeve, rezultatu dodajte broj 92h te tako dobiveni broj spremite na memorijske lokacije 2Ah i 28h, tako da više značajne znamenke budu spremljene u 2Ah.

 

Moj postupak;

ORG 0000

MOV 24h, #AAh

MOV 28h, #66h

MOV A, 24h

MOV B, 28h

MUL AB

MOV 2Ah, B

MOV 2Bh, A

END

 

hvala na pomoći

 
0 0 hvala 0
9 godina
offline
Re: EDSIM51 assembler pomoć

Brojevi moraju započeti sa znamenkom pa dodaj nulu ispred broja AAh

 

MOV 24h, #AAh
MOV 24h, #0AAh

 

 

11 godina
offline
EDSIM51 assembler pomoć

Moze li mi tko pomoci oko EdSim51 asemblerskog programa. Imam jedan zadatak kojeg treba rješiti, ja sam došao na pola i zapeo.

Poruka je uređivana zadnji put pet 24.9.2021 20:59 (pastuovic).
 
0 0 hvala 0
11 godina
offline
EDSIM51 assembler pomoć

4. Napišite asemblerski kod koji će sve brojeve manje od 40h s memorijskih lokacija od 20h do
3Fh zapisati u svaku drugu memorijsku lokaciju počevši od 60h.
- To je zadatak. Moram za njega napisati kod.

 

Sličan ovome je ovaj: 4. Napišite asemblerski kod koji će sve brojeve veće od 20 s memorijskih lokacija od 20h do 3Fh
zapisati u uzastopne memorijske lokacije počevši od 50h.
ORG 0000h
MOV R0, #20h
MOV R1,#50h
petlja:
MOV A, @R0
SUBB A, #20h
JZ dalje
JC dalje
MOV 10h, @R0
MOV @R1, 10h
INC R1
dalje:
INC R0
CJNE R0, #40h, petlja

END

 
0 0 hvala 0
11 godina
offline
EDSIM51 assembler pomoć

3. Napišite asemblerski kod koji će zbrojiti sve proste brojeve od 2 do broja upisanog na
memorijskoj lokaciji 10h. Pretpostavite da zbroj nikad neće biti veći od 255. Zbroj zapišite u
memorijsku lokaciju 11h.
*Prosti brojevi ili primbrojevi su svi prirodni brojevi veći od 1 koji su bez ostatka djeljivi samo s brojem 1 i sami sa sobom
-Napisao sam kod koji će ih prebrojiti kako ih zbrojiti i kako pretpostaviti da zbroj nije veći od 255

ORG 0000h
MOV R0, #2
MOV R7, #0
petlja:
MOV 20h, #2
MOV 21h, R0
INC 21h
MOV 22h, #1
je_prosti_broj:
MOV A, R0
MOV B, 20h
DIV AB
MOV A, B
JNZ nije_djeljivo
INC 22h
MOV A, 22h
SUBB A, #3
JNC nije_prosti_broj
nije_djeljivo:
INC 20h
MOV A, 20h
CJNE A, 21h, je_prosti_broj
INC R7
nije_prosti_broj:
MOV A, R0
INC R0
CJNE A, 10h, petlja
END

molio bi pomoć

 
0 0 hvala 0
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice