THMMY.gr

Μαθήματα Κύκλου Ηλεκτρονικής & Υπολογιστών => Συστήματα Μικροϋπολογιστών => Topic started by: Dealan on February 02, 2016, 16:09:06 pm



Title: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Dealan on February 02, 2016, 16:09:06 pm
Topic για λύσεις παλιών θεμάτων του μαθήματος. Stay on topic!


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 02, 2016, 16:17:30 pm
Λύση μικρο Φεβρουάριος 2011 θέμα 2
Θέλω βοήθεια από παλιούς που έχουν δώσει το μάθημα, να μου πουν εάν τα σχόλια φτάνουν έτσι ή εάν τα θέλει με την μορφή που είδαμε στις σειρές ασκήσεων.
Προφανώς δείτε άμα είναι σωστή η λύση μου.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 02, 2016, 16:29:48 pm
Φεβρουάριος 2014, Θέμα 2


.def  Nl (YL)
.def Nh (YH)
.def stad_l (ZL)
.def stad_h (ZH)
.def suml
.def sumh
.def checkl
.def checkh

add Nl, stad_l
adc Nh, stad_h ; Now N points at the end of array
clr suml
clr sumh ; 2 bytes for sum since
---------------------load:---------------------
ld checkh, -Y
ld checkl, -Y ; load checklow and checkhigh, reducing N accordingly
sbrc checkh, 7
rjmp foundNN ; Is MSB 0 (positive)? => start checks
---------------------continue:---------------------
cp YL, ZL
brne load ; YL!=ZL, keep checking
cp YH, ZH
brne load ; YL==ZL, but YH!=ZH, keep checking
rjmp end ; Y=Z, end
---------------------foundNN:---------------------
; found non-negative
cpi checkh, 0b00001111
brlt foundIR ; checkh < 00001111 => check < 3456
breq checkLow ; checkh==00001111, must check low
rjmp continue ; if not equal or less than, it's not a match- continue loading
---------------------checkLow:---------------------
cpi checkl, 0
breq foundIR ; checkl==0 so we're in range
rjmp continue ; else continue
---------------------foundIR:---------------------
cpi suml, 0xFF
breq ad_c
inc suml  ; if suml=255, branch, else increase
rjmp continue ; return to loading
---------------------ad_C:---------------------
ldi suml, 0 ; set suml to zero
inc sumh ; increment sumh
rjmp continue ; continue loading
---------------------end:---------------------
clv
clc
ret


Βαρεθηκα να τσεκαρω και αν ειναι πολλαπλασιο του 4, αλλα γινεται ελεγχοντας τα τελευταια 2 bits?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 02, 2016, 16:44:21 pm
Φεβρουάριος 2014, Θέμα 2


Βαρέθηκα να τσεκαρω και αν ειναι πολλαπλασιο του 4, αλλα γινεται ελεγχοντας τα τελευταια 2 bits?
Τρέχοντας μερικές τιμές μου βγαίνει σωστή σαν συνθήκη για ακεραίους unsigned


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 02, 2016, 18:56:25 pm
λύση για 2011 θέμα 3 Φεβρουάριος.
Θέλω help με πρόσθεση signed με 16bit όποιος μπορεί ας πει κάτι. Κάνω την εξής λογική:

clr 8bitvaluehighbyte ;New empty high byte for 8 bit value
sbrc 8bitvaluelowbyte,7 ;Skip if 8 bit value is positive
ser   8bitvaluehighbyte ;8 bit value is negative so set it's high byte
add 16bitvaluelowbyte,8bitvaluelowbyte
adc 16bitvaluehighbyte,8bitvaluehighbyte

υπάρχει over flow;
 θέλω και 3ο καταχωρητη ;

Υπάρχει λάθος στην λύση μου (ευχαριστώ τον gmtms που το τσεκαρε). Έχω σφάλμα στα rol των προσημασμένων όσοι το κατεβάσετε πριν την ημερομηνία του modified κατεβάστε την νέα.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 02, 2016, 19:40:11 pm
Φεβρουάριος 2014, Θέμα 3


.include "m16def.inc"
.cseg
.org 0x0
.def yfh=R18
.def yfl=R19
.def yi=r16
.def xi=R20
.def xih=R21
rjmp START

START:
clr yfh
clr yfl
clr yi
clc
ldi yi,0b00001001
ldi yfh,0b11000000
ldi yfl,0b10000000
lsr yi
ror yfh
ror yfl
lsr yi
ror yfh
ror yfl
nop

ldi xi,0b10001100

mul xi,xi
movw xih:xi,r1:r0
clc
add xi,yfh
adc xih,yi
nop
nop


Μογγολιά, θεωρώντας μόνο θετικά x,y - χωριζω το y σε 3 bytes - integer, fracthigh και fractlow- όμοια για το x*x σε xi και xih (fract)
Για προσημασμένους και αποφεύγοντας τις δυσκολίες του complement-of-2 μπορεί να γίνει ένας έλεγχος αν είναι ετερόσημοι, και μετά να γίνει αφαίρεση του μεγαλύτερου από το μικρότερο και χρήση του καταλληλου προσημου. Αν εχει κανεις τη λυση με συμπληρωματα του 2 ας την ανεβασει, εγω δε μπορεσα να τη βγαλω


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: greekoo on February 02, 2016, 20:48:16 pm
Φεβρουάριος 2014, Θέμα 3


.include "m16def.inc"
.cseg
.org 0x0
.def yfh=R18
.def yfl=R19
.def yi=r16
.def xi=R20
.def xih=R21
rjmp START

START:
clr yfh
clr yfl
clr yi
clc
ldi yi,0b00001001
ldi yfh,0b11000000
ldi yfl,0b10000000
lsr yi
ror yfh
ror yfl
lsr yi
ror yfh
ror yfl
nop

ldi xi,0b10001100

mul xi,xi
movw xih:xi,r1:r0
clc
add xi,yfh
adc xih,yi
nop
nop


Μογγολιά, θεωρώντας μόνο θετικά x,y - χωριζω το y σε 3 bytes - integer, fracthigh και fractlow- όμοια για το x*x σε xi και xih (fract)
Για προσημασμένους και αποφεύγοντας τις δυσκολίες του complement-of-2 μπορεί να γίνει ένας έλεγχος αν είναι ετερόσημοι, και μετά να γίνει αφαίρεση του μεγαλύτερου από το μικρότερο και χρήση του καταλληλου προσημου. Αν εχει κανεις τη λυση με συμπληρωματα του 2 ας την ανεβασει, εγω δε μπορεσα να τη βγαλω

δεν χρειάζεται να ανησυχείς φίλε για το ποιος είναι μεγαλύτερος και για τα πρόσημα και λοιπά.
Από τη στιγμή που σου λέει η εκφώνηση ότι αυτοί είναι προσημασμένοι, τότε απλά τους προσθέτεις και το αποτέλεσμα σίγουρα θα είναι σωστό.
Δηλαδή σου λέει υπολόγισε Χ + Υ όπου χ,υ προσημασμένοι.
Υπάρχουν τρία ενδεχόμενα, ή θα κάνεις πρόσθεση θετικών, ή θα κάνεις πρόσθεση αρνητικών (δλδ και οι 2 αρνητικοί) ή θα κάνεις αφαίρεση (δλδ ένας θετικός κ ένας αρνητικός.
Όποιο ενδεχόμενο και απο αυτά να έχεις εσένα δεν σε νοιάζει  ;D , με το συμπλήρωμα του 2 το αποτέλεσμα θα είναι σωστό, οπότε απλά κάνεις add απο τα μικρότερα bytes στα μεγαλύτερα και με carry.

Όμως είναι απαραίτητο για να δουλεψει αυτό, να μην χαλάσεις το πρόσημο του y όταν τον κάνεις ολίσθηση. ΓΙα αυτό υπάρχει η ειδική εντολή asr η οποία θα σου κρατήσει τον αριθμό ακριβώς όπως πρέπει με το πρόσημο στη θέση που πρέπει και θα στον διαρέσει αριθμητικά.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: orestisf on February 02, 2016, 20:53:18 pm

δεν χρειάζεται να ανησυχείς φίλε για το ποιος είναι μεγαλύτερος και για τα πρόσημα και λοιπά.
Από τη στιγμή που σου λέει η εκφώνηση ότι αυτοί είναι προσημασμένοι, τότε απλά τους προσθέτεις και το αποτέλεσμα σίγουρα θα είναι σωστό.
Δηλαδή σου λέει υπολόγισε Χ + Υ όπου χ,υ προσημασμένοι.
Υπάρχουν τρία ενδεχόμενα, ή θα κάνεις πρόσθεση θετικών, ή θα κάνεις πρόσθεση αρνητικών (δλδ και οι 2 αρνητικοί) ή θα κάνεις αφαίρεση (δλδ ένας θετικός κ ένας αρνητικός.
Όποιο ενδεχόμενο και απο αυτά να έχεις εσένα δεν σε νοιάζει  ;D , με το συμπλήρωμα του 2 το αποτέλεσμα θα είναι σωστό, οπότε απλά κάνεις add απο τα μικρότερα bytes στα μεγαλύτερα και με carry.

Εστω κανεις:
clr r0
clr x_H
add x_L, y
adc x_H, r0
με χ = 10
y = 250
Αν θελεις το y να ειναι μη προσημασμενος η πραξη ειναι κομπλε γτ θα βγει x_L = 4, x_H=1 αλλα αν θες το y να ειναι προσημασμενος (δλδ -6) θα πρεπει να κανεις
dec x_H


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 02, 2016, 20:59:44 pm
Φεβρουάριος 2014, Θέμα 3


.include "m16def.inc"
.cseg
.org 0x0
.def yfh=R18
.def yfl=R19
.def yi=r16
.def xi=R20
.def xih=R21
rjmp START

START:
clr yfh
clr yfl
clr yi
clc
ldi yi,0b00001001
ldi yfh,0b11000000
ldi yfl,0b10000000
lsr yi
ror yfh
ror yfl
lsr yi
ror yfh
ror yfl
nop

ldi xi,0b10001100

mul xi,xi
movw xih:xi,r1:r0
clc
add xi,yfh
adc xih,yi
nop
nop


Μογγολιά, θεωρώντας μόνο θετικά x,y - χωριζω το y σε 3 bytes - integer, fracthigh και fractlow- όμοια για το x*x σε xi και xih (fract)
Για προσημασμένους και αποφεύγοντας τις δυσκολίες του complement-of-2 μπορεί να γίνει ένας έλεγχος αν είναι ετερόσημοι, και μετά να γίνει αφαίρεση του μεγαλύτερου από το μικρότερο και χρήση του καταλληλου προσημου. Αν εχει κανεις τη λυση με συμπληρωματα του 2 ας την ανεβασει, εγω δε μπορεσα να τη βγαλω

Δεν έχω τη λύση για συμπληρώματα του 2 αλλά λογικά θα θέλει κάποια asr κάπου. Τέσπα ήθελα να ρωτήσω το yfl στο τέλος γιατί δεν το λαμβάνεις υπόψη, το ξέχασες ή υπάρχει κάποιος λόγος;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: greekoo on February 02, 2016, 21:36:36 pm

δεν χρειάζεται να ανησυχείς φίλε για το ποιος είναι μεγαλύτερος και για τα πρόσημα και λοιπά.
Από τη στιγμή που σου λέει η εκφώνηση ότι αυτοί είναι προσημασμένοι, τότε απλά τους προσθέτεις και το αποτέλεσμα σίγουρα θα είναι σωστό.
Δηλαδή σου λέει υπολόγισε Χ + Υ όπου χ,υ προσημασμένοι.
Υπάρχουν τρία ενδεχόμενα, ή θα κάνεις πρόσθεση θετικών, ή θα κάνεις πρόσθεση αρνητικών (δλδ και οι 2 αρνητικοί) ή θα κάνεις αφαίρεση (δλδ ένας θετικός κ ένας αρνητικός.
Όποιο ενδεχόμενο και απο αυτά να έχεις εσένα δεν σε νοιάζει  ;D , με το συμπλήρωμα του 2 το αποτέλεσμα θα είναι σωστό, οπότε απλά κάνεις add απο τα μικρότερα bytes στα μεγαλύτερα και με carry.

Εστω κανεις:
clr r0
clr x_H
add x_L, y
adc x_H, r0
με χ = 10
y = 250
Αν θελεις το y να ειναι μη προσημασμενος η πραξη ειναι κομπλε γτ θα βγει x_L = 4, x_H=1 αλλα αν θες το y να ειναι προσημασμενος (δλδ -6) θα πρεπει να κανεις
dec x_H

Για αυτό λοιπόν χρειάζεται να κάνουμε επέκταση προσήμου εμείς manually , στο yh. Επειδή είχα και εγώ την ίδια απορία με σένα και ρώτησα τον Πέτρου.

θέλεις να κάνεις  xh:xl - yl

έστω ότι το ψ είναι ήδη προσημασμένος 8μπιτος με το 7bit να αντιπροσωπεύει το πρόσημο.
Τότε θα χρειαστούμε να κάνουμε επέκταση προσήμου του ψ σε ένα υψηλότερο byte ώστε να ευθυγραμμιστεί ακριβώς κάτω απ'το xh.

έτσι γράφεις:

clr yh
sbrc yl,7 ;έλεγχος για το πρόσημο του y
οri yh,0xFF ; αν είναι αρνητικός
;σε αυτό το σημείο έχεις xh:xl + (- yh:yl )
άρα απλά γράφεις
add xl,yl
adc xh,yh

και τέλειωσες  :)

σκέψου το και έτσι:
το -4 σε 8 μπιτς γράφεται έτσι :  11111100  όμως εσύ θές να επεκτείνεις το y σε 16 μπιτς για να ευθγραμμιστεί με το χ, άρα το -4 θα γραφτεί έτσι 11111111 11111100  (το ori παραπάνω κάνει αυτό ακριβώς)


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: orestisf on February 02, 2016, 21:46:39 pm

δεν χρειάζεται να ανησυχείς φίλε για το ποιος είναι μεγαλύτερος και για τα πρόσημα και λοιπά.
Από τη στιγμή που σου λέει η εκφώνηση ότι αυτοί είναι προσημασμένοι, τότε απλά τους προσθέτεις και το αποτέλεσμα σίγουρα θα είναι σωστό.
Δηλαδή σου λέει υπολόγισε Χ + Υ όπου χ,υ προσημασμένοι.
Υπάρχουν τρία ενδεχόμενα, ή θα κάνεις πρόσθεση θετικών, ή θα κάνεις πρόσθεση αρνητικών (δλδ και οι 2 αρνητικοί) ή θα κάνεις αφαίρεση (δλδ ένας θετικός κ ένας αρνητικός.
Όποιο ενδεχόμενο και απο αυτά να έχεις εσένα δεν σε νοιάζει  ;D , με το συμπλήρωμα του 2 το αποτέλεσμα θα είναι σωστό, οπότε απλά κάνεις add απο τα μικρότερα bytes στα μεγαλύτερα και με carry.

Εστω κανεις:
clr r0
clr x_H
add x_L, y
adc x_H, r0
με χ = 10
y = 250
Αν θελεις το y να ειναι μη προσημασμενος η πραξη ειναι κομπλε γτ θα βγει x_L = 4, x_H=1 αλλα αν θες το y να ειναι προσημασμενος (δλδ -6) θα πρεπει να κανεις
dec x_H

Για αυτό λοιπόν χρειάζεται να κάνουμε επέκταση προσήμου εμείς manually , στο yh. Επειδή είχα και εγώ την ίδια απορία με σένα και ρώτησα τον Πέτρου.

θέλεις να κάνεις  xh:xl - yl

έστω ότι το ψ είναι ήδη προσημασμένος 8μπιτος με το 7bit να αντιπροσωπεύει το πρόσημο.
Τότε θα χρειαστούμε να κάνουμε επέκταση προσήμου του ψ σε ένα υψηλότερο byte ώστε να ευθυγραμμιστεί ακριβώς κάτω απ'το xh.

έτσι γράφεις:

clr yh
sbrc yl,7 ;έλεγχος για το πρόσημο του y
οri yh,0xFF ; αν είναι αρνητικός
;σε αυτό το σημείο έχεις xh:xl + (- yh:yl )
άρα απλά γράφεις
add xl,yl
adc xh,yh

και τέλειωσες  :)

σκέψου το και έτσι:
το -4 σε 8 μπιτς γράφεται έτσι :  11111100  όμως εσύ θές να επεκτείνεις το y σε 16 μπιτς για να ευθγραμμιστεί με το χ, άρα το -4 θα γραφτεί έτσι 11111111 11111100  (το ori παραπάνω κάνει αυτό ακριβώς)

Αρχικα, ευχαριστω γιατι τωρα καταλαβα πως δουλευει αυτο (ειχα βρει ενα τυφλοσουρτη που ακολουθουσα). Πιο πανω εννοουσα οτι ο κωδικας του δεν δουλευει out of the box αλλα θελει και την διαδικασια που περιεγραψες.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Sf(x)dx on February 02, 2016, 22:10:30 pm
Εχει ασχοληθει κανενας με το θεμα 2  , Φεβρουαριος 2012 ? (αυτο με το ημίτονο ...)

Διαβασα την εκφωνηση , αλλα εχω καποιες αποριες :

1) Λεει πως το α ανηκει στο διαστημα [0,π/4] αλλα το lookup table εχει ολες τις τιμες με βημα 10 , δλδ υποννοει οτι ειναι σε μοιρες . Η είσοδος τελικα είναι σε rad ή σε μοιρες ?

2) Ετσι οπως το δινει υπονοει οτι το α μπορει να παρει ολες τις τιμες σε αυτο το διαστημα , πραγμα που θα πει οτι πρεπει να κανεις καποιο ειδους rounding για να το μετατρεψεις σε κατι που μπορεις να χρησιμοποιησεις για Index στον πινακα , ετσι ωστε να παρεις την τιμη που θες.  Αυτο ομως , δυστυχως δεν φαινεται να γινεται ευκολα , οποτε ελπιζω να μην πρεπει να κανω if με 10 cases.

3)  Προφανως δν αναφερω καν περιπτωσεις που το α ειναι στο διαστημα 0-10 μοιρες , και πρεπει να ελεγξω περιπτωσεις της μορφης:
              4 μοιρες --> στρογγυλοποιηση στο 0
              6 μοιρες --> στρογγυλοποιηση στο 10

 Any Ideas ??


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: antoniat on February 02, 2016, 22:28:30 pm
λύση για 2011 θέμα 3 Φεβρουάριος.
Θέλω help με πρόσθεση signed με 16bit όποιος μπορεί ας πει κάτι. Κάνω την εξής λογική:

clr 8bitvaluehighbyte ;New empty high byte for 8 bit value
sbrc 8bitvaluelowbyte,7 ;Skip if 8 bit value is positive
ser   8bitvaluehighbyte ;8 bit value is negative so set it's high byte
add 16bitvaluelowbyte,8bitvaluelowbyte
adc 16bitvaluehighbyte,8bitvaluehighbyte

υπάρχει over flow;
 θέλω και 3ο καταχωρητη ;
νομιζω πως απο τα ορια των τιμων που μπορεις να παρεις οχι δεν χρειαζεσαι 3ο καταχωρητη..επισης αυτο που κανει με το προσημο αν ειναι αρνητικος γιατι το κανεις??αν ειναι αρνητικος,το προγραμμα δεν τον δεχεται σαν συμπληρωμα ως προς 2 και κανει κανονικα την πραξη της προσθεσης?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 02, 2016, 22:55:10 pm
..
Όμορφα αυτά που λες, αλλά εγω δε μπόρεσα να γράψω τη ρουτίνα με συμπλήρωμα, και το asr δεν είναι το μαγικό κουμπί που λύνει τα προβλήματά σου- δοκίμασε το και θα καταλάβεις τι εννοώ.
Όσο για το yfl δε χρειάζεται να το συμπεριλάβεις πουθενά στη διαδικασία της απλής πρόσθεσης- είναι τα τελευταία 8 LSB του αθροίσματος, δεν προστίθενται ούτε αφαιρούνται, γιατί ο x δεν έχει τοσο χαμηλής σημασίας bits.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 02, 2016, 22:58:10 pm
λύση για 2011 θέμα 3 Φεβρουάριος.
Θέλω help με πρόσθεση signed με 16bit όποιος μπορεί ας πει κάτι. Κάνω την εξής λογική:

clr 8bitvaluehighbyte ;New empty high byte for 8 bit value
sbrc 8bitvaluelowbyte,7 ;Skip if 8 bit value is positive
ser   8bitvaluehighbyte ;8 bit value is negative so set it's high byte
add 16bitvaluelowbyte,8bitvaluelowbyte
adc 16bitvaluehighbyte,8bitvaluehighbyte

υπάρχει over flow;
 θέλω και 3ο καταχωρητη ;
νομιζω πως απο τα ορια των τιμων που μπορεις να παρεις οχι δεν χρειαζεσαι 3ο καταχωρητη..επισης αυτο που κανει με το προσημο αν ειναι αρνητικος γιατι το κανεις??αν ειναι αρνητικος,το προγραμμα δεν τον δεχεται σαν συμπληρωμα ως προς 2 και κανει κανονικα την πραξη της προσθεσης?
Ναι άλλα η εκφώνηση λέει ότι οι τιμές F(xi) είναι 8 bit  άρα για να γίνουν 16 bit πρέπει να φτιάξεις το highbyte (τσέκαρε έχει απαντηθεί πιο πριν) .
Λάθος Για τους πολαπλασιασμους με τα roll πρέπει να πειράξεις το carry πριν γίνει η πράξη στο low byte γιατί εάν είναι προσημασμενος θετικός (αρνητικός) τότε στο rol το carry  που θα πάει στο LSB πρέπει να μπει 0 (εάν είναι αρνητικός πρέπει να μπει 1)


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: antoniat on February 02, 2016, 23:04:10 pm
λύση για 2011 θέμα 3 Φεβρουάριος.
Θέλω help με πρόσθεση signed με 16bit όποιος μπορεί ας πει κάτι. Κάνω την εξής λογική:

clr 8bitvaluehighbyte ;New empty high byte for 8 bit value
sbrc 8bitvaluelowbyte,7 ;Skip if 8 bit value is positive
ser   8bitvaluehighbyte ;8 bit value is negative so set it's high byte
add 16bitvaluelowbyte,8bitvaluelowbyte
adc 16bitvaluehighbyte,8bitvaluehighbyte

υπάρχει over flow;
 θέλω και 3ο καταχωρητη ;
νομιζω πως απο τα ορια των τιμων που μπορεις να παρεις οχι δεν χρειαζεσαι 3ο καταχωρητη..επισης αυτο που κανει με το προσημο αν ειναι αρνητικος γιατι το κανεις??αν ειναι αρνητικος,το προγραμμα δεν τον δεχεται σαν συμπληρωμα ως προς 2 και κανει κανονικα την πραξη της προσθεσης?
Ναι άλλα η εκφώνηση λέει ότι οι τιμές F(xi) είναι 8 bit  άρα για να γίνουν 16 bit πρέπει να φτιάξεις το highbyte (τσέκαρε έχει απαντηθεί πιο πριν) .
Για τους πολαπλασιασμους με τα roll πρέπει να πειράξεις το carry πριν γίνει η πράξη στο low byte γιατί εάν είναι προσημασμενος θετικός (αρνητικός) τότε στο rol το carry  που θα πάει στο LSB πρέπει να μπει 0 (εάν είναι αρνητικός πρέπει να μπει 1)
οκ..θα το κοιτάξω..ευχαριστώ..!


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 03, 2016, 02:20:54 am
Σεπτέμβριος 2012 Θέμα 2ο, απλή προσπάθεια, δεν ξέρω κατά πόσο είναι σωστό:

.include "m16def.inc"
.def xif=r16  ; dekadiko meros tou ginomenou tou X
.def xi=r17  ; estw h eisodos X
.def yil=r18  ; estw h eisodos Y
.def yih=r19  ; MSB tou ginomenou tou Y
.def pi=r20  ; estw to pi
.def temp=r21
.def temp2=r22
.def resf=r23  ; dekadiko meros tou apotelesmatos
.def resl=r24  ; LSB tou apotelesmatos
.def resh=r25  ; MSB tou apotelesmatos
.cseg
.org 0

rjmp reset
reset:

; 0,5X
clr xif
lsr xi
ror xif

; apo8hkevoume to arxiko Y
mov temp, yil

; 8Y
clr yih
lsl yil
rol yih
lsl yil
rol yih
lsl yil
rol yih

; 4Y
clr temp2
lsl temp
rol temp2
lsl temp
rol temp2

; 12Y
add yil, temp
adc yih, temp2

; 0,5X + 12Y
mov resf, xif
mov resl, yil
mov resh, yih
add resl, xi
clr temp
adc resh, temp

; -pi
subi resl, 3  ; afairoume to akeraio meros tou pi
lsl pi
lsl pi
sub resf, pi  ; afairoume to dekadiko meros tou pi

; apo8hkevoume to apotelesma ths paren8eshs
mov xif, resf  ; xrhsimopoioume to xif san proswrinh giati de mas xreiazetai pia
mov temp, resl
mov temp2, resh

; paren8esh epi 2
lsl resf
rol resl
rol resh

;paren8esh epi 0,5
lsr xif
ror temp
ror temp2

; teliko apotelesma
add resf, xif
adc resl, temp
adc resh, temp2

Μου βγήκε αρκετά μεγάλο επειδή το επί 12 το έκανα σαν επί 8 συν επί 4, και το επί δυόμισι το έκανα σαν επί 2 συν επί μισό. Υπάρχει καλύτερος τρόπος; Το πόσταρα κυρίως για να ακούσω διορθώσεις/ιδέες, όχι ότι είναι απαραίτητα σωστό.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 03:03:49 am
Σεπτέμβριος 2012 Θέμα 2ο, απλή προσπάθεια, δεν ξέρω κατά πόσο είναι σωστό:

.include "m16def.inc"
.def xif=r16  ; dekadiko meros tou ginomenou tou X
.def xi=r17  ; estw h eisodos X
.def yil=r18  ; estw h eisodos Y
.def yih=r19  ; MSB tou ginomenou tou Y
.def pi=r20  ; estw to pi
.def temp=r21
.def temp2=r22
.def resf=r23  ; dekadiko meros tou apotelesmatos
.def resl=r24  ; LSB tou apotelesmatos
.def resh=r25  ; MSB tou apotelesmatos
.cseg
.org 0

rjmp reset
reset:

; 0,5X
clr xif
lsr xi
ror xif

; apo8hkevoume to arxiko Y
mov temp, yil

; 8Y
clr yih
lsl yil
rol yih
lsl yil
rol yih
lsl yil
rol yih

; 4Y
clr temp2
lsl temp
rol temp2
lsl temp
rol temp2

; 12Y
add yil, temp
adc yih, temp2

; 0,5X + 12Y
mov resf, xif
mov resl, yil
mov resh, yih
add resl, xi
clr temp
adc resh, temp

; -pi
subi resl, 3  ; afairoume to akeraio meros tou pi
lsl pi
lsl pi
sub resf, pi  ; afairoume to dekadiko meros tou pi

; apo8hkevoume to apotelesma ths paren8eshs
mov xif, resf  ; xrhsimopoioume to xif san proswrinh giati de mas xreiazetai pia
mov temp, resl
mov temp2, resh

; paren8esh epi 2
lsl resf
rol resl
rol resh

;paren8esh epi 0,5
lsr xif
ror temp
ror temp2

; teliko apotelesma
add resf, xif
adc resl, temp
adc resh, temp2


Μου βγήκε αρκετά μεγάλο επειδή το επί 12 το έκανα σαν επί 8 συν επί 4, και το επί δυόμισι το έκανα σαν επί 2 συν επί μισό. Υπάρχει καλύτερος τρόπος; Το πόσταρα κυρίως για να ακούσω διορθώσεις/ιδέες, όχι ότι είναι απαραίτητα σωστό.
Γενικά μου φαίνεται σωστό. Όταν σου λέει πράξεις χωρίς εντολές πολλαπλασισμου
αυτός είναι ο ένας τρόπος.Υπάρχουν και οι λουπες άλλα έχει μετρητές.
Πχ άμα σου πει 256 *Χ η θα κάνεις 8 block lsl rol ή θα πας με ένα counter και ενα block lsl rol .


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 14:17:24 pm
H λύση για 2011 θέμα 3 Φεβρουάριος που είχα ανεβάσει είχε λάθος.

Υπήρχε λάθος στην λύση μου (ευχαριστώ τον gmtms που το τσεκαρε). Είχα σφάλμα στα rol των προσημασμένων, όσοι το κατεβάσετε πριν την ημερομηνία του modified ή αυτού του post κατεβάστε την νέα.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: antoniat on February 03, 2016, 14:34:21 pm
μπορει κάποιος να μου εξηγησει ποιος ειναι  ο τρόπος για να κανω πολλαπλασιασμο με την χρηση των εντολων mul για 8bit αριθμους προσημασμενους που εχουν και ακεραιο μερος και δεκαδικο?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 16:31:17 pm
θέμα 2 φεβρουαριος του 2012
Ξέρει κάνεις εάν θα ζητήσει έλεγχο για overflow ;
Υπάρχει λάθος αλλάζω πρόσημο και εάν είναι 0 που βγαίνει -1 πρακτικά.
τελικά (0 )2complement=0 δεν χρειάζεται ο έλεγχος
ανεβαίνει το corrected  thanks indy
Ανέβηκε


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: antoniat on February 03, 2016, 17:06:02 pm
θέμα 2 φεβρουαριος του 2012
Ξέρει κάνεις εάν θα ζητήσει έλεγχο για overflow ;
τι εννοεις έλεγχο?
να σε ρωτήσω κάτι?εδώ γιατι παιρνεις τρεις καταχωρητες για το αποτελεσμα?νομίζω το Resh δεν χρειαζεται..αφου το μεγιστο του ακεραιου δεν ειναι το 15?ή  κανω λάθος?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 17:14:33 pm
θέμα 2 φεβρουαριος του 2012
Ξέρει κάνεις εάν θα ζητήσει έλεγχο για overflow ;
τι εννοεις έλεγχο?
να σε ρωτήσω κάτι?εδώ γιατι παιρνεις τρεις καταχωρητες για το αποτελεσμα?νομίζω το Resh δεν χρειαζεται..αφου το μεγιστο του ακεραιου δεν ειναι το 15?ή  κανω λάθος?
οπως είδες δεν ελεγχω τιμες γτ εχουμε 7 bit κλασματικο μερος  αρα εχω ενα fract σιγουρα. Τωρα για τους δυο αλλους καταχωρητες δεν ειδα τα ορια απλα σκευτικα το overflow στους προσημασμενους και καποια στιγμη σημερα θα το δω για over flow  αρνητικου με αρνητικου. Γενικα μπορει να βγαινει και με 2 καταχωρητες. Οι λυσεις μου δεν ειναι οι βελτιστες. Προσπαθω να μην εχω λαθος (δεν τα πολυ καταφερνω  ::)) και να ειναι λιγο γρηγορες για να προλαβω


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 19:37:00 pm
λύση 2012 φεβρ θέμα 3
είναι  δυσνόητη σαν λύση (και τεσταρισμενή για λίγες τιμές άρα μπορεί να έχει bug).
Προτείνω πριν κάποιος την κατεβάσει να το λύσει πρώτα (να το ανεβάσει να το δούμε και υπόλοιποι)
θέλει και έλεγχο εάν είναι 0 εάν είναι μηδέν τότε δεν κάνεις συμπλήρωμα του 2


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 03, 2016, 19:40:34 pm
με προλαβες για 3' :p


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 19:44:38 pm
εελα ανεβαστειν τωρα που τρω φακες να κανω και debugg (βαριες εργασιες και οι δυο  :o)


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 03, 2016, 20:01:46 pm
Φεβρούαριος 2012 Θέμα 3

Ο αλγόριθμος πάει ως εξής
Σειρά Ν:  αλλάζουν από Ν*(Ν-1) ως Ν*Ν -1
Ν-1: από Ν(Ν-2)+1 ως Ν(Ν-1) -2
Ν-2: από Ν(Ν-3)+2 ως Ν(Ν-2) -3
Ν-i: από N(N-1-i)+i ως Ν(Ν-i)-i-1

δηλαδή ανά row αλλάζουν κάθε φορά Ν -2 *i στοιχεία

με βάση αυτό ο αλγόριθμος τσεκάρει πόσες σειρές πρέπει να αλλάξει, και μετά σειρά σειρά τοποθετείται στην κατάλληλη θέση, και αλλάζει όσα στοιχεία οφείλει πριν μετακινηθεί στην επόμενη


.def i
.def maxi
.def N
.def counter
.def stadlo
.def stadhi
.def load
.def temp

; find maxi
mov i, N
lsr i
brvc found_i
inc i ; if N/2 returns overflow, (e.g. 5/2=2.5, increment result)
clv
found_i:
ldi temp, 0
mov maxi, i
dec maxi ; count starts at zero
add stadlo, N
adc stadhi, temp ; move to end of array

;start
ldi i, 0
mov counter, N ; last row- swap out all elements

read_row:
clr load
mov temp, i
inc temp
sub stadlo, temp
sbc stadhi, load ; subtract from current address > stad -i-1
ld read, X
neg read
st -x, read
dec counter
brne read_row

; finished a row
ldi read, 0
sub stadlo, i
sbc stadhi, read ; go up i bytes (start of finished row)
scpe i, maxi ; if i==maxi
rjmp done ; complete
inc i ; else increase i
mov counter, n ; reset counter
clc
mov temp,i
lsl temp ; temp=2*i
clc
sub counter, temp ; new counter = counter -2 *i
rjmp read_row


ps: εφαγα μιαμιση ωρα για 33 γραμμες 'κωδικα', γιατι τοσο δυσκολο αυτο το μαθημα και γιατι κανενας δεν αγχωνεται;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 20:12:26 pm

ps: εφαγα μιαμιση ωρα για 33 γραμμες 'κωδικα', γιατι τοσο δυσκολο αυτο το μαθημα και γιατι κανενας δεν αγχωνεται;
Δεν ξέρω αλλά νομίζω ότι υπερπροσπαθουμε. Σήμερα ξεκινάω διάβασμα θεωρίας  ;D


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: ori0ngel on February 03, 2016, 20:19:21 pm
Γιατι παιρνεις συμπληρωμα ως προς 2 και οχι ως προς 1?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 20:23:45 pm
Γιατι παιρνεις συμπληρωμα ως προς 2 και οχι ως προς 1?
προσημασμενος = συμπληρωμα του 2


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 03, 2016, 20:25:29 pm
κάπου είχα διαβάσει ότι γενικά όπου ο πετρου μιλαει για μη-θετικούς υποννοείται συμπλήρωμα του 2.. γενικά δεν έχω καμία απολύτως ιδέα γιατί και πώς, αλλά με συμπλήρωμα του 2 οι στάνταρ αριθμητικές πράξεις (ad, sub, ktl) δουλεύουν χωρίς επιπλέον προσπάθεια


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 20:29:13 pm
signed number's =  2'complement
δεν το λέει ο Πετρου
Tα μαθηματικά λένε ότι βολεύει από το 1complement καλύτερα και καθιερώθηκε.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: ori0ngel on February 03, 2016, 20:49:43 pm
Φεβρουαριος του 2014 3ο θεμα.
Για το Χ^2 εχει κανεις καποια ιδεα;
.def xl=r16 ;to arxiko x brisketai edo
.def xh=r17 ;after ^2

mul xl,xl
mov r17:r16, r1:r0

Ειναι σωστο?
Αν ισχυει κατι τετοιο το κλασματικο μερος που θα ειναι;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 03, 2016, 20:50:11 pm
θέμα 2 φεβρουαριος του 2012
Ξέρει κάνεις εάν θα ζητήσει έλεγχο για overflow ;

Υπολογίζεις το συμπλήρωμα του 2 χωρίς να ελέγχεις αν είναι θετικός ή αρνητικός, δε θα πρεπε αν είναι θετικός να το αφήνεις όπως είναι;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 20:59:27 pm
θέμα 2 φεβρουαριος του 2012
Ξέρει κάνεις εάν θα ζητήσει έλεγχο για overflow ;

Υπολογίζεις το συμπλήρωμα του 2 χωρίς να ελέγχεις αν είναι θετικός ή αρνητικός, δε θα πρεπε αν είναι θετικός να το αφήνεις όπως είναι;
θετικός είναι πάντα το cos(b) 0<=b<=90
 άρα -cos(a) είναι πάντα αρνητικός.
sin^2(a)=(1-cos(2a))/2
Μπορεί να έχω λάθος στο 0 τώρα που το σκέφτομαι


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: orestisf on February 03, 2016, 21:25:30 pm
Φεβρουαριος του 2014 3ο θεμα.
Για το Χ^2 εχει κανεις καποια ιδεα;
.def xl=r16 ;to arxiko x brisketai edo
.def xh=r17 ;after ^2

mul xl,xl
mov r17:r16, r1:r0

Ειναι σωστο?
Αν ισχυει κατι τετοιο το κλασματικο μερος που θα ειναι;

muls δεν θελει λογω signed? και movw οχι mov.
Επειδη το x ειναι σε μορφη 4.4: 4.4 x 4.4 => 8.8
Αρα το υψηλο byte (r1) ειναι το ακεραιο και το χαμηλο (r0) το κλασματικο.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 21:34:48 pm
θέμα 2 φεβρουαριος του 2012
Ξέρει κάνεις εάν θα ζητήσει έλεγχο για overflow ;

Υπολογίζεις το συμπλήρωμα του 2 χωρίς να ελέγχεις αν είναι θετικός ή αρνητικός, δε θα πρεπε αν είναι θετικός να το αφήνεις όπως είναι;
θετικός είναι πάντα το cos(b) 0<=b<=90
 άρα -cos(a) είναι πάντα αρνητικός.
sin^2(a)=(1-cos(2a))/2
Μπορεί να έχω λάθος στο 0 τώρα που το σκέφτομαι
θέμα 2 φεβρουαριος του 2012
Έχω λάθος εάν αλλάζεις πρόσημο πρέπει να ελέγχεις :
1ο εάν είναι = με το μηδέν τότε δεν αλλάζεις το αφήνεις χωρίς neg

2ο εάν είναι οριακή τιμή 0x80 τότε δεν μπορείς να αλλάξεις .. και είναι error
(το 2ο είναι για το θέμα 3 2012 που αλλάζεις πρόσημα το έχω συμπεριλάβει).
Ανεβαίνει το corrected thanks Indy
Ο έλεγχος για το 0 δεν είναι απαραίτητος


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 03, 2016, 22:21:31 pm
Σεπτέμβρης 15, Θέμα 2ο

.include "m16def.inc"
.def a1=r16
.def a2=r17
.def a3=r18
.def b1=r19
.def b2=r20
.def b3=r21
.def alow=r22
.def ahigh=r23
.def blow=r24
.def bhigh=r25
.def resl=r26
.def resm=r27
.def resh=r28
.def temp=r29

.cseg
.org 0

rjmp reset
reset:

; prwtos BCD se binary (ahigh:alow)
mov alow, a3
ldi temp, 10
mul a2, temp
add alow, r0
ldi temp, 100
mul a3, temp
mov ahigh, r1
add alow, r0
ldi temp, 0
adc ahigh, temp

; deuteros BCD se binary (bhigh:blow)
mov blow, b3
ldi temp, 10
mul b2, temp
add blow, r0
ldi temp, 100
mul b3, temp
mov bhigh, r1
add blow, r0
ldi temp, 0
adc bhigh, temp

; pollaplasiasmos
mul alow, blow
movw resl, r0
mul ahigh, bhigh
mov resh, r1
add resm, r0
ldi temp, 0
adc resh, temp

Και πάλι, δεν ξέρω αν είναι σωστό, περισσότερο το ποστάρω για ιδέες/διορθώσεις.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 03, 2016, 22:36:56 pm
Στο 3ο θέμα του Σεπτέμβρη 15 τί εννοεί μετρήσεις που λαμβάνονται από 12 bit differential ADC? Εννοεί από τα PIN (και το κάνουμε πχ με DDRD και PIND)?. 12 bit εννοεί πώς για κάθε μία από τις 16 μετρήσεις στην ουσία διαβάζεις 2 bytes (για να καλυφθούν τα 12 bits που λέει)? Οπότε 16 * 2 ξεχωριστές φορές διαβάζεις;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 22:40:53 pm
Στο 3ο θέμα του Σεπτέμβρη 15 τί εννοεί μετρήσεις που λαμβάνονται από 12 bit differential ADC? Εννοεί από τα PIN (και το κάνουμε πχ με DDRD και PIND)?. 12 bit εννοεί πώς για κάθε μία από τις 16 μετρήσεις στην ουσία διαβάζεις 2 bytes (για να καλυφθούν τα 12 bits που λέει)? Οπότε 16 * 2 ξεχωριστές φορές διαβάζεις;
Δεν νομίζω δεν το έχουμε δουλέψει σαν περιφεριακό όποτε μάλλον στην Sram θα είναι αποθηκευμένα


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: antoniat on February 03, 2016, 22:46:52 pm
Φεβρούαριος 2012 Θέμα 3

Ο αλγόριθμος πάει ως εξής
Σειρά Ν:  αλλάζουν από Ν*(Ν-1) ως Ν*Ν -1
Ν-1: από Ν(Ν-2)+1 ως Ν(Ν-1) -2
Ν-2: από Ν(Ν-3)+2 ως Ν(Ν-2) -3
Ν-i: από N(N-1-i)+i ως Ν(Ν-i)-i-1

δηλαδή ανά row αλλάζουν κάθε φορά Ν -2 *i στοιχεία

με βάση αυτό ο αλγόριθμος τσεκάρει πόσες σειρές πρέπει να αλλάξει, και μετά σειρά σειρά τοποθετείται στην κατάλληλη θέση, και αλλάζει όσα στοιχεία οφείλει πριν μετακινηθεί στην επόμενη


.def i
.def maxi
.def N
.def counter
.def stadlo
.def stadhi
.def load
.def temp

; find maxi
mov i, N
lsr i
brvc found_i
inc i ; if N/2 returns overflow, (e.g. 5/2=2.5, increment result)
clv
found_i:
ldi temp, 0
mov maxi, i
dec maxi ; count starts at zero
add stadlo, N
adc stadhi, temp ; move to end of array

;start
ldi i, 0
mov counter, N ; last row- swap out all elements

read_row:
clr load
mov temp, i
inc temp
sub stadlo, temp
sbc stadhi, load ; subtract from current address > stad -i-1
ld read, X
neg read
st -x, read
dec counter
brne read_row

; finished a row
ldi read, 0
sub stadlo, i
sbc stadhi, read ; go up i bytes (start of finished row)
scpe i, maxi ; if i==maxi
rjmp done ; complete
inc i ; else increase i
mov counter, n ; reset counter
clc
mov temp,i
lsl temp ; temp=2*i
clc
sub counter, temp ; new counter = counter -2 *i
rjmp read_row


ps: εφαγα μιαμιση ωρα για 33 γραμμες 'κωδικα', γιατι τοσο δυσκολο αυτο το μαθημα και γιατι κανενας δεν αγχωνεται;
να σε ρωτήσω λίγο κάτι...αν εδώ έχω Ν γραμμές και Ν στήλες τότε τα συνολικά στοιχεία του πίνακα δεν θα είναι ΝxN ?οπότε αν θες να πας στο τελευταίο στοιχείο το ΝχΝ δεν έπρεπε να προσθέσεις στις διευθύνσεις?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 03, 2016, 23:11:14 pm
ναι εχεις δικιο ξεχασα να το γραψω εδω , απλα θελει μια λοοπα η οποια προσθετει Ν φορες το Ν στην τρεχουσα διευθυνση και μετα κανει ενα βημα πισω (το στοιχειο Ν*N είναι Ν*Ν-1 θέσεις μπροστά)


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: antoniat on February 03, 2016, 23:20:41 pm
ναι εχεις δικιο ξεχασα να το γραψω εδω , απλα θελει μια λοοπα η οποια προσθετει Ν φορες το Ν στην τρεχουσα διευθυνση και μετα κανει ενα βημα πισω (το στοιχειο Ν*N είναι Ν*Ν-1 θέσεις μπροστά)
ναι οκ..απλα κυριως στο ειπα μηπως δεν τ ειχες δει..!!


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 03, 2016, 23:29:59 pm
λύση θέμα 3 2015 φεβρουάριος
ο έλεγχος για το Υ αν είναι μηδέν δεν είναι απαραίτητος.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 04, 2016, 07:30:40 am
Στο 3ο θέμα Φεβρουάριος 14 είχα προβλήματα για το πως να ευθυγραμμίσω τα bytes ώστε να κάνω τις πράξεις. Θεώρησα ότι το Y δίνεται σαν δύο bytes, το msb γεμάτο και το lsb με αδιάφορα τα τελευταία δύο ψηφία. Προσπαθώ να βάλω το αποτέλεσμα σε μορφή low: μόνο δεκαδικά, mid: 5 ακέραια και 3 δεκαδικά και high: μόνο ακέραια. Το θεώρησα πιο εύκολο να προσαρμόσω τα άλλα στη μορφή του Y δηλαδή, για να μη χαλάσω το συμπλήρωμα του 2 (το χ τετράγωνο είναι πάντα θετικός), παρά το αντίθετο. Υπάρχει καλύτερος τρόπος; Είναι καν σωστή η προσπάθεια μου; Μου καψε αρκετά το κεφάλι, οπότε αν το χει κανείς...

.include "m16def.inc"
.def xi=r16
.def yil=r17
.def yih=r18
.def resl=r19
.def resm=r20
.def resh=r21
.def temp=r22
.cseg
.org 0

rjmp reset
reset:

; X^2
muls xi, xi

; Y/4
asr yih
ror yil
asr yih
ror yil

; 5 teleutaia bits tou r0 + 3 mhdenika
mov resl, r0
lsl resl
lsl resl
lsl resl
add resl, yil

; 5 mhdenika + 3 prwta bits tou r0
lsr r0
lsr r0
lsr r0
lsr r0
lsr r0
adc yih, r0

; 5 teleutaia bits tou r1 + 3 mhdenika
mov temp, r1
lsl temp
lsl temp
lsl temp
adc yih, temp

; 5 mhdenika + 3 prwta bits tou r1
lsr r1
lsr r1
lsr r1
lsr r1
lsr r1
adc yih, r1

clr temp
adc resh, temp

mov resm, yih


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 04, 2016, 14:32:34 pm
μετά από ενδελεχείς έλεγχους στον assembler επιβεβαιώνω ότι  για την αλλαγή πρόσημου υπάρχει πρόβλημα στην αρνητική οριακή τιμή πχ 8bit = -128 δεν υπάρχει αντιστοιχία σε θετικό προσημασμένο, άρα για αλλαγή πρόσημου πρέπει να γίνεται έλεγχος.
 
Αλλά το 0 γίνεται κομπλέ με neg ή com() +1.
Όποτε δεν χρειαζεται ελεγχος για το αν πας να αλλάξεις πρόσημο και η τιμη είναι μηδεν


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 04, 2016, 16:19:25 pm
Στο 3ο θέμα Φεβρουάριος 14 είχα προβλήματα για το πως να ευθυγραμμίσω τα bytes ώστε να κάνω τις πράξεις. Θεώρησα ότι το Y δίνεται σαν δύο bytes, το msb γεμάτο και το lsb με αδιάφορα τα τελευταία δύο ψηφία. Προσπαθώ να βάλω το αποτέλεσμα σε μορφή low: μόνο δεκαδικά, mid: 5 ακέραια και 3 δεκαδικά και high: μόνο ακέραια. Το θεώρησα πιο εύκολο να προσαρμόσω τα άλλα στη μορφή του Y δηλαδή, για να μη χαλάσω το συμπλήρωμα του 2 (το χ τετράγωνο είναι πάντα θετικός), παρά το αντίθετο. Υπάρχει καλύτερος τρόπος; Είναι καν σωστή η προσπάθεια μου; Μου καψε αρκετά το κεφάλι, οπότε αν το χει κανείς...

.include "m16def.inc"
.def xi=r16
.def yil=r17
.def yih=r18
.def resl=r19
.def resm=r20
.def resh=r21
.def temp=r22
.cseg
.org 0

rjmp reset
reset:

; X^2
muls xi, xi

; Y/4
asr yih
ror yil
asr yih
ror yil

; 5 teleutaia bits tou r0 + 3 mhdenika
mov resl, r0
lsl resl
lsl resl
lsl resl
add resl, yil

; 5 mhdenika + 3 prwta bits tou r0
lsr r0
lsr r0
lsr r0
lsr r0
lsr r0
adc yih, r0

; 5 teleutaia bits tou r1 + 3 mhdenika
mov temp, r1
lsl temp
lsl temp
lsl temp
adc yih, temp

; 5 mhdenika + 3 prwta bits tou r1
lsr r1
lsr r1
lsr r1
lsr r1
lsr r1
adc yih, r1

clr temp
adc resh, temp

mov resm, yih

δεν κατάλαβα τι κάνεις ακριβώς άλλα μου φαίνεται πολύ κάψιμο τζάμπα.
Από την στιγμή που παρατήρησες ότι το Υ έχει 2 lsb ασήμαντα τον φέρνεις σε μορφή
8low 8 fract όπως το έκανες
λέει πλήρη ακρίβεια άρα δεν υπάρχουν ασήμαντα lsb οπότε θέλει και άλλο ένα fract ...
 ο Χ είναι 4.4 x 4.4 = 8.8 άρα το άθροισμα τους ειναι balanced εδώ θέλει περισσότερο έλεγχο για overflow ή η εύκολη λύση επέκταση πρόσημου και έλεγχο μόνο για αρνητικούς με V post εάν χρειάζεται να γράψω κωδικα


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 04, 2016, 19:26:04 pm
Στο 3ο θέμα Φεβρουάριος 14 είχα προβλήματα για το πως να ευθυγραμμίσω τα bytes ώστε να κάνω τις πράξεις. Θεώρησα ότι το Y δίνεται σαν δύο bytes, το msb γεμάτο και το lsb με αδιάφορα τα τελευταία δύο ψηφία. Προσπαθώ να βάλω το αποτέλεσμα σε μορφή low: μόνο δεκαδικά, mid: 5 ακέραια και 3 δεκαδικά και high: μόνο ακέραια. Το θεώρησα πιο εύκολο να προσαρμόσω τα άλλα στη μορφή του Y δηλαδή, για να μη χαλάσω το συμπλήρωμα του 2 (το χ τετράγωνο είναι πάντα θετικός), παρά το αντίθετο. Υπάρχει καλύτερος τρόπος; Είναι καν σωστή η προσπάθεια μου; Μου καψε αρκετά το κεφάλι, οπότε αν το χει κανείς...

.include "m16def.inc"
.def xi=r16
.def yil=r17
.def yih=r18
.def resl=r19
.def resm=r20
.def resh=r21
.def temp=r22
.cseg
.org 0

rjmp reset
reset:

; X^2
muls xi, xi

; Y/4
asr yih
ror yil
asr yih
ror yil

; 5 teleutaia bits tou r0 + 3 mhdenika
mov resl, r0
lsl resl
lsl resl
lsl resl
add resl, yil

; 5 mhdenika + 3 prwta bits tou r0
lsr r0
lsr r0
lsr r0
lsr r0
lsr r0
adc yih, r0

; 5 teleutaia bits tou r1 + 3 mhdenika
mov temp, r1
lsl temp
lsl temp
lsl temp
adc yih, temp

; 5 mhdenika + 3 prwta bits tou r1
lsr r1
lsr r1
lsr r1
lsr r1
lsr r1
adc yih, r1

clr temp
adc resh, temp

mov resm, yih

δεν κατάλαβα τι κάνεις ακριβώς άλλα μου φαίνεται πολύ κάψιμο τζάμπα.
Από την στιγμή που παρατήρησες ότι το Υ έχει 2 lsb ασήμαντα τον φέρνεις σε μορφή
8low 8 fract όπως το έκανες
λέει πλήρη ακρίβεια άρα δεν υπάρχουν ασήμαντα lsb οπότε θέλει και άλλο ένα fract ...
 ο Χ είναι 4.4 x 4.4 = 8.8 άρα το άθροισμα τους ειναι balanced εδώ θέλει περισσότερο έλεγχο για overflow ή η εύκολη λύση επέκταση πρόσημου και έλεγχο μόνο για αρνητικούς με V post εάν χρειάζεται να γράψω κωδικα

Ασήμαντα lsb εννοώ ότι εφόσον λέει 14 bits άρα είναι της μορφής BBBBBBBB BBBBBBxx έτσι δεν είναι; Ή εννοεί xxBBBBBB BBBBBBBB; Ναι το x^2 βγαίνει όντως βολικά... Τέσπα η επέκταση προσήμου στηρίζεται στο ότι "σε έναν αρνητικό που είναι σε μορφή συμπλήρωμα του 2, βάζω όσους άσσους θέλω στα αριστερά χωρίς να αλλάζει η τιμή"?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: lady_of_winter on February 04, 2016, 19:35:18 pm
εχει ασχοληθει κανεις με το θεμα 3 του σεπτεμβρη του 10??
το τελευταιο γινομενο πως θα το χειριστουμε?
αν κανουμε Y*sin θα εχουμε εναν καταχωρητη ακεραιο κ εναν καταχωρητη με το κλασματικο
μετα πως θα πολλαπλασιασουμε και το X??


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 04, 2016, 20:01:14 pm
Στο 3ο θέμα Φεβρουάριος 14 είχα προβλήματα για το πως να ευθυγραμμίσω τα bytes ώστε να κάνω τις πράξεις. Θεώρησα ότι το Y δίνεται σαν δύο bytes, το msb γεμάτο και το lsb με αδιάφορα τα τελευταία δύο ψηφία. Προσπαθώ να βάλω το αποτέλεσμα σε μορφή low: μόνο δεκαδικά, mid: 5 ακέραια και 3 δεκαδικά και high: μόνο ακέραια. Το θεώρησα πιο εύκολο να προσαρμόσω τα άλλα στη μορφή του Y δηλαδή, για να μη χαλάσω το συμπλήρωμα του 2 (το χ τετράγωνο είναι πάντα θετικός), παρά το αντίθετο. Υπάρχει καλύτερος τρόπος; Είναι καν σωστή η προσπάθεια μου; Μου καψε αρκετά το κεφάλι, οπότε αν το χει κανείς...

.include "m16def.inc"
.def xi=r16
.def yil=r17
.def yih=r18
.def resl=r19
.def resm=r20
.def resh=r21
.def temp=r22
.cseg
.org 0

rjmp reset
reset:

; X^2
muls xi, xi

; Y/4
asr yih
ror yil
asr yih
ror yil

; 5 teleutaia bits tou r0 + 3 mhdenika
mov resl, r0
lsl resl
lsl resl
lsl resl
add resl, yil

; 5 mhdenika + 3 prwta bits tou r0
lsr r0
lsr r0
lsr r0
lsr r0
lsr r0
adc yih, r0

; 5 teleutaia bits tou r1 + 3 mhdenika
mov temp, r1
lsl temp
lsl temp
lsl temp
adc yih, temp

; 5 mhdenika + 3 prwta bits tou r1
lsr r1
lsr r1
lsr r1
lsr r1
lsr r1
adc yih, r1

clr temp
adc resh, temp

mov resm, yih

δεν κατάλαβα τι κάνεις ακριβώς άλλα μου φαίνεται πολύ κάψιμο τζάμπα.
Από την στιγμή που παρατήρησες ότι το Υ έχει 2 lsb ασήμαντα τον φέρνεις σε μορφή
8low 8 fract όπως το έκανες
λέει πλήρη ακρίβεια άρα δεν υπάρχουν ασήμαντα lsb οπότε θέλει και άλλο ένα fract ...
 ο Χ είναι 4.4 x 4.4 = 8.8 άρα το άθροισμα τους ειναι balanced εδώ θέλει περισσότερο έλεγχο για overflow ή η εύκολη λύση επέκταση πρόσημου και έλεγχο μόνο για αρνητικούς με V post εάν χρειάζεται να γράψω κωδικα

Ασήμαντα lsb εννοώ ότι εφόσον λέει 14 bits άρα είναι της μορφής BBBBBBBB BBBBBBxx έτσι δεν είναι; Ή εννοεί xxBBBBBB BBBBBBBB; Ναι το x^2 βγαίνει όντως βολικά... Τέσπα η επέκταση προσήμου στηρίζεται στο ότι "σε έναν αρνητικό που είναι σε μορφή συμπλήρωμα του 2, βάζω όσους άσσους θέλω στα αριστερά χωρίς να αλλάζει η τιμή"?
είναι της μορφής για την μορφή να το σκεφτώ λίγο

ασήμαντα lsb εννοώ ότι :
εάν δεν έχουμε πλήρη ακρίβεια τότε τα 2 τελευταία fraction  χάνονται και δεν μας νοιάζει. Άρα μετά τα asr ror έχουμε τον Y 12 bit = 3bit integer . 8  bit fract
 άρα 8:8 εσύ κομπλέ.
Με πλήρη ακρίβεια σημαίνει δεν χάνω δεκαδικό άρα μπορείς να κάνεις διάφορους τρόπους άρα δεν υπάρχουν ασήμαντα lsb. Προφανώς αφού είναι προσημασμενο στα msb είναι το πρόσημο.
για το άθροισμα ναι η επέκταση δεν σου αλλάζει τον αριθμό σε γλιτώνει από μερικές συνθήκες και όρια τιμών για overflow αλλά τρώει ένα καταχωρητή.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 04, 2016, 20:11:35 pm
Μίλησα με ένα συνάδελφο που το έδωσε και έχουμε την εξής συμβουλή
μην κάνετε ADIW SUBIW πέρα από τις x,y,z το παίρνει σαν λάθος.
Στα λυμένα τα δικά μου έχω μερικά comp2 σε 16 bit που τα κάνω με com adiw ενώ δεν χρησιμοποιώ τους Z,X,Y που είναι λάθος
 


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 04, 2016, 20:33:00 pm

Ασήμαντα lsb εννοώ ότι εφόσον λέει 14 bits άρα είναι της μορφής BBBBBBBB BBBBBBxx έτσι δεν είναι; Ή εννοεί xxBBBBBB BBBBBBBB; Ναι το x^2 βγαίνει όντως βολικά...
λοιπόν αφού έχουμε fix point δεν μας ενοχλεί αλλά πρέπει να γίνει  balanced η πράξη
 
πχ [πρόσημο msb B15]ΒΒΒ ΒΒ.ΒΒ  [άλλο byte] ΒΒΒΒ BBBx   μορφή  6:10
λόγω ευκολίας χωρίς την διαίρεση
ο Χ^2 είναι [προσημασμενος]      8:8  πρέπει να έρθει για να γίνει balanced το pont στην ίδια μορφή όπως παραπάνω άρα  θέλουμε άλλο ένα high λόγω ορίων = επεκτάσεις προσήμων... x= 16:8
και 2 φορες lsr ror's  τον x ώστε  x= 14:10
θα γραψω και τον κωδικα πιο μετα.
 
Αυτή η μορφή είναι πολύ μανούρα. καλύτερα Yl,Yf μορφη 8 low :8 fract


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Xbaremenos on February 04, 2016, 20:47:45 pm
Σεπτέμβρης 15, Θέμα 2ο


Φίλε δεν έχω καταλάβει ακριβώς τι κάνεις με τους καταχωρητές, αλλά νομίζω οτι έχεις λάθος.

Εδώ για το πως κάνουμε πολ/σμο 16x16 --> 32   (bit)

http://www.8052.com/mul16 (http://www.8052.com/mul16)


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: greekoo on February 04, 2016, 21:01:17 pm
εχει ασχοληθει κανεις με το θεμα 3 του σεπτεμβρη του 10??
το τελευταιο γινομενο πως θα το χειριστουμε?
αν κανουμε Y*sin θα εχουμε εναν καταχωρητη ακεραιο κ εναν καταχωρητη με το κλασματικο
μετα πως θα πολλαπλασιασουμε και το X??

τσέκαρε αυτό φίλε. πρέπει να χρησιμοποιήσουμε την εντολή mulsu όταν έρθει  η ώρα να γίνει πολ/σμος μεταξύ του δεκαδικού που είναι ένα 8μπιτο πλήρες usnigned με έναν signed 8 βιτ αριθμό.

.include "m16def.inc"


.def w=r16
.def ufract1=r17
.def ufract2=r18
.def resint=r19
.def resfract1=r20
.def resfract2=r21


;pollaplasiasmos w * u opou w = 8 bit signed (5 akeraio 3 klasmatiko ) kai u = 16 bit thetikos klasmatikos (ola ta bit klasmatika) 0.16

;init
;estw w = 10010.111 = -13.125

;kai u = 0.101010101110001 = 0.667510986328125

;apotelesma 24 bits (3 bytes) , me tin ypodiastoli na brisketai 19 8eseis aristera apo to pio LSBIT tou 3-byte ari8mou
;=-8.761081695556640625


ldi w, 0b10010111 ; - 13.125
ldi ufract1,0b10101010
ldi ufract2, 0b11100010


clr resint
clr resfract1
clr resfract2

mulsu w,ufract2
mov resfract2,r0
mov resfract1,r1
sbrc resfract1,7
ser resint; επέκταση προσήμου, πολύ σημαντικό. αν εχω αρνητικό πρέπει όλο το high Να είναι ασοι για να γίνει σωστά το add κατω

mulsu w,ufract1
add resfract1,r0
adc resint,r1

;αυτο εδω κατω δε χρειάζεται απλά το κάνω για να επιβεβαίωσω ότι είναι σωστός αριθμός
;βάλτο στο exploringbinary.com
;kanw manually neg ton ari8mo na dw pios eine

ldi r22,1 ;βοηθητικοί καταχωρητές
ldi r23,0
com resfract2
com resfract1
com resint
add resfract2,r22
adc resfract1,r23
adc resint,r23


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 04, 2016, 21:39:55 pm
Σεπτέμβριος 13, Θέμα 3ο

.include "m16def.inc"
.def xi=r16
.def xih=r17
.def yil=r18
.def yi=r19
.def resl=r20  ; mono dekadika
.def resm=r21  ; 3 akeraia kai 5 dekadika
.def resh=r22  ; mono akeraia
.cseg
.org 0

rjmp reset
reset:

; 8X
clr xih
lsl xi
rol xih
lsl xi
rol xih
lsl xi
rol xih

; Y/4
clr yil
asr yi
ror yil
asr yi
ror yil

; low
clr resl
sub resl, yil

; mid
ldi resm, xi
subc resm, yi

; high
ldi resh, xih
clr yi
subc resh, yi

Σχόλια και διορθώσεις more than welcome


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Indy on February 04, 2016, 21:44:46 pm
Γενικά τα Χ και Υ που λέει εννοεί τους pointers X και Y ή κάποιες άσχετες μεταβλητές; Επίσης θέλει να τους δώσουμε αρχικά κάποιες τιμές σαν παράδειγμα ή απλά να κάνουμε πράξεις κατευθείαν πάνω τους (με τα σκουπίδια που θα έχουν μέσα) όπως πχ στην παραπάνω λύση μου;
Θα θελα πάντως να δω λυμμένα κι άλλα με πίνακες που λέει, πχ Σεπτέμβριος 13 το 2ο θέμα αν το χει κανείς;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: eleftheria_94 on February 04, 2016, 23:30:59 pm
Μίλησα με ένα συνάδελφο που το έδωσε και έχουμε την εξής συμβουλή
μην κάνετε ADIW SUBIW πέρα από τις x,y,z το παίρνει σαν λάθος.
Στα λυμένα τα δικά μου έχω μερικά comp2 σε 16 bit που τα κάνω με com adiw ενώ δεν χρησιμοποιώ τους Z,X,Y που είναι λάθος
 

Στο instruction set παντως λεει για την adiw Rd+1:Rd,K  ότι  d ∈ {24,26,28,30}, 0 ≤ K ≤ 63. Δηλαδη απο οτι καταλαβαινω περα απο τους Χ,Υ,Ζ μπορεις να χρησιμοποιησεις και το ζευγαρι R25:R24...


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 05, 2016, 00:19:42 am
Μίλησα με ένα συνάδελφο που το έδωσε και έχουμε την εξής συμβουλή
μην κάνετε ADIW SUBIW πέρα από τις x,y,z το παίρνει σαν λάθος.
Στα λυμένα τα δικά μου έχω μερικά comp2 σε 16 bit που τα κάνω με com adiw ενώ δεν χρησιμοποιώ τους Z,X,Y που είναι λάθος
 

Στο instruction set παντως λεει για την adiw Rd+1:Rd,K  ότι  d ∈ {24,26,28,30}, 0 ≤ K ≤ 63. Δηλαδη απο οτι καταλαβαινω περα απο τους Χ,Υ,Ζ μπορεις να χρησιμοποιησεις και το ζευγαρι R25:R24...
Εχεις δικιο απλα χρησιμοποιησα σε λυσεις μου για ευκολεια 2complimet =
com R17
com R18
 adiw R17:R16,1
που είναι λάθος


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 05, 2016, 01:29:20 am
εναλλακτικά δε θα'ταν πρακτικότερο να πεις
neg LSB
com MSB
ή έστω
com LSB
inc LSB
com MSB
για να αποφυγεις αυτο τον μπελά; χάνω ίσως κάποια ειδική περίπτωση;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: ClockWork on February 05, 2016, 01:36:40 am
Φεβρούαριος 2012 Θέμα 3

Ο αλγόριθμος πάει ως εξής
Σειρά Ν:  αλλάζουν από Ν*(Ν-1) ως Ν*Ν -1
Ν-1: από Ν(Ν-2)+1 ως Ν(Ν-1) -2
Ν-2: από Ν(Ν-3)+2 ως Ν(Ν-2) -3
Ν-i: από N(N-1-i)+i ως Ν(Ν-i)-i-1

δηλαδή ανά row αλλάζουν κάθε φορά Ν -2 *i στοιχεία

με βάση αυτό ο αλγόριθμος τσεκάρει πόσες σειρές πρέπει να αλλάξει, και μετά σειρά σειρά τοποθετείται στην κατάλληλη θέση, και αλλάζει όσα στοιχεία οφείλει πριν μετακινηθεί στην επόμενη


.def i
.def maxi
.def N
.def counter
.def stadlo
.def stadhi
.def load
.def temp

; find maxi
mov i, N
lsr i
brvc found_i
inc i ; if N/2 returns overflow, (e.g. 5/2=2.5, increment result)
clv
found_i:
ldi temp, 0
mov maxi, i
dec maxi ; count starts at zero
add stadlo, N
adc stadhi, temp ; move to end of array

;start
ldi i, 0
mov counter, N ; last row- swap out all elements

read_row:
clr load
mov temp, i
inc temp
sub stadlo, temp
sbc stadhi, load ; subtract from current address > stad -i-1
ld read, X
neg read
st -x, read
dec counter
brne read_row

; finished a row
ldi read, 0
sub stadlo, i
sbc stadhi, read ; go up i bytes (start of finished row)
scpe i, maxi ; if i==maxi
rjmp done ; complete
inc i ; else increase i
mov counter, n ; reset counter
clc
mov temp,i
lsl temp ; temp=2*i
clc
sub counter, temp ; new counter = counter -2 *i
rjmp read_row


ps: εφαγα μιαμιση ωρα για 33 γραμμες 'κωδικα', γιατι τοσο δυσκολο αυτο το μαθημα και γιατι κανενας δεν αγχωνεται;
να σε ρωτήσω λίγο κάτι...αν εδώ έχω Ν γραμμές και Ν στήλες τότε τα συνολικά στοιχεία του πίνακα δεν θα είναι ΝxN ?οπότε αν θες να πας στο τελευταίο στοιχείο το ΝχΝ δεν έπρεπε να προσθέσεις στις διευθύνσεις?
Αφου ο πίνακας είναι κάτω τριγωνικός δεν πρέπει απλά να ελέγχουμε τα στοιχεία που ειναι διάφορα του μηδενος και αυτα να αλλάζουμε σε συμπλήρωμα του 2? Ή θέλει και το μηδέν?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 05, 2016, 02:06:59 am
Φεβρούαριος 2012 Θέμα 3


Αφου ο πίνακας είναι κάτω τριγωνικός δεν πρέπει απλά να ελέγχουμε τα στοιχεία που ειναι διάφορα του μηδενος και αυτα να αλλάζουμε σε συμπλήρωμα του 2? Ή θέλει και το μηδέν?
το θέμα λέει το κάτω τριγωνικό τμήμα και την διαγώνιο του πίνακα όχι ότι είναι κάτω τριγωνικός


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 05, 2016, 02:14:26 am
εναλλακτικά δε θα'ταν πρακτικότερο να πεις
neg LSB
com MSB
ή έστω
com LSB
inc LSB
com MSB
για να αποφυγεις αυτο τον μπελά; χάνω ίσως κάποια ειδική περίπτωση;
η πράξη είναι λάθος λόγω του adiw
δεν ξέρω με neg com τι γίνεται... όπως έχεις καταλάβει το comp2 με μπερδεύει ....
γενικά έχω βρει δυο λύσεις για neg 16 bit
http://www.atmel.com/images/doc0937.pdf

Negate (2’s
Complement) a 16-bit
Register Variable
This operation is done as follows:
1. Invert (1’s Complement) Low byte
2. Invert (1’s Complement) high byte
3. Subtract $FF from Low byte.
4. Subtract with carry $FF from High byte.
Note: Steps 3 and 4 are equivalent to adding $0001 to the 16-bit number.

αρα
com low byte
com high byte

ldi temp,0xFF
sub low,temp
subc low,temp

ldi temp,1
add low,temp
dec temp(temp =0 ιδιο με ldi)
adc high,temp


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 05, 2016, 03:06:04 am
Θέμα 3 Σεπτέμβριος 2013
Σορρυ το εγραψα αργα το βραδυ ...
Θέμα 3 Φεβρουάριος 2014
.include "m16def.inc"
; input Y R18,R17 in the form[ 5bit int, 3 bit fract] [6 bit fract ]
; msb of integer (which is a sign bit) bit15[SBBB B.bbb][bbbb bbxx] fix point sto bit 10 (11-1 giati metrame apo to bit0)
; input Xfl in the 4:4

.def Yfl=R17
.def Yif=R18
.def Yi=R19
.def Xfl=R20
.def Xif=R21
.def Xi=R22
 
 ;sqx(x) 4:4 x 4:4 = 8:8 fix point sto bit 7
muls Xfl,Xfl ;(baginei panta thetikos)
movw Xif:Xfl,R1:R0
;xekinaw to balance point sto bit 11 bit 10 thelei omws epektash proshmoy
; [bbbb bbbb][.bbbb bbbb]-> [0000 0bbb][bbbb b.bbb][bbbb b000]
;panta thetikos
ldi Xif,0

lsl Xfl
rol Xif
rol Xi

lsl Xfl
rol Xif
rol Xi

lsl Xfl
rol Xif
rol Xi
; twra exw metakinhsei to point 3 fores (to idio einai san na ton pollaplasiazw)
; apla to 2^-1 xekinaei pia sto bit 10

;Y/4
;klasika asr einai proshmasmenos
asr Yif
ror Yfl

asr Yif
ror Yfl
;o Y hdh apo thn morfh eisagwghs poy dialexame einai fix point sto 11
; kanw kai mia epektash proshmoy giati mporw

ldi Yi,0
sbrc Yif,7
ser Yi

; exw Y=[ssss ssss][ssBB B.bbb][bbbb bbbb] s=sign
; kai afou einai balanced eimai komple gia treis praxeis

add Yfl,Xfl
adc Yif,Xif
adc Yi,Xi



Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: sotiristsar on February 05, 2016, 12:55:45 pm
Ρε παιδια να ρωτήσω κατι οταν μας λεει οτι εχουμε πχ ενα 12bit αριθμο σημαίνει οτι θα είναι της μορφης 0000xxxx xxxxxxxx (αρα το πρόσημο στο 12ο bit και μετα κανουμε επεκταση προσήμου αν είναι αρνητικό???? )   
ή
της μορφης xxxxxxxx xxxx0000 και αρα το προσημο ειναι στο MSB  γιατι δεν καταλαβα ακριβως απο το προηγουμενα ποστ...


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: rspappas on February 05, 2016, 13:20:34 pm
αν δεν διευκρινιζει, οπως θες, αναφεροντας βεβαια την παραδοχη και λαμβανοντας την υποψιν για τυχον πραξεις.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Nerevar on February 05, 2016, 15:30:19 pm
https://www.thmmy.gr/smf/index.php?topic=63622.0 (https://www.thmmy.gr/smf/index.php?topic=63622.0)

#1


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 05, 2016, 15:54:16 pm
snip

μπορείς να μου εξηγήσεις το κομμάτι που κάνεις
sbrc yif, 7  (υποψιάζομαι ότι εννοούσες sbrc yif, 0)
ser
στην ουσία λες, δες το πρόσημο του bit προσήμου του yif- αν 1 (αρνητικός) βάλε όλα τα MSB 1
η αλλαγή προσήμου πού / πότε γίνεται; θες το -(Υ/4) και όχι το Υ/4

επίσης, το yfl είναι οκ μετά από τα ror, θεωρώντας ότι ξεκίνησε από 0;
δε θα'πρεπε να κάνουμε κάποια έξτρα μόντα προκειμένου να είναι συμπλήρωμα του 2;
πχ έστω yif 1111 1111 (=-1)
asr yif => 1111 1111 (=-1)
ror yil => 1000 0000
δηλαδή δύο προβλήματα- πρώτον λόγω μη ελέγχου overflow το yif παρέμεινε όπως ήτανε, δεύτερον το yil είναι σε μορφή που δεν αντιστοιχεί σε συμπλήρωμα του 2
ακυρο


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 05, 2016, 16:40:52 pm
snip

μπορείς να μου εξηγήσεις το κομμάτι που κάνεις
sbrc yif, 7  (υποψιάζομαι ότι εννοούσες sbrc yif, 0)
ser
στην ουσία λες, δες το πρόσημο του bit προσήμου του yif- αν 1 (αρνητικός) βάλε όλα τα MSB 1
η αλλαγή προσήμου πού / πότε γίνεται; θες το -(Υ/4) και όχι το Υ/4
είναι επέκταση πρόσημου
ldi Yi,0
sbrc Yif,7
ser Yi

ο y έχει από την προηγούμενη ανάλυση όπου s=sign [sBBB B.bbb][bbbb bbxx] μετά από 2 asr ror [sssB B.bbb][bbbb bbbb]
άρα για να τον κάνω επέκταση από 16bit σε 24bit πρεπει να δω εάν είναι θετικός ή αρνητικός (γενικά αυτός ο έλεγχος γίνεται στο MSBit του MSByte) όποτε βλεπω bit7 του yif
εάν είναι το bit7 είναι clear = θετικός skip Yi=0xff  οποτε Υi=0x00
αλλιώς bit7 set γινεται το ser και Yi=0xff


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 05, 2016, 16:47:46 pm
αυτό που προσπαθώ να πω είναι ότι αυτό όμως δεν είναι το -Υ/4 αλλά το +Υ/4, δηλαδή έχεις κάνει την επέκταση προσήμου αλλά όχι την αλλαγή προσήμου


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 05, 2016, 16:49:26 pm
Δεν καταλαβαίνω τι λες είναι +- από μόνος του ο Υ αφού μας τον δίνει σαν προσημασμενο 5bit ακαιρεο κλπ
η πραξη ειναι Χ^2 +Υ/4 δεν βλεπω γιατι να αλλαξω το προσημο του Υ /εδιτ


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: gmtms on February 05, 2016, 16:51:29 pm
μη σκαλώνεις ρε  :P
η πραξη που πρεπει να κανεις είναι 8x - Y/4, εσύ κάνεις τη διαίρεση Υ/4, κάνεις την επέκταση προσήμου και προσθέτεις στο 8χ που υπολόγισες νωρίτερα
προσπαθώ απλά να καταλάβω αν η λύση που ανέβασες περιλαμβάνει την αλλαγή προσήμου (από +Υ/4 σε -Υ/4) ή σου διέφυγε


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on February 05, 2016, 16:53:53 pm
μη σκαλώνεις ρε  :P
η πραξη που πρεπει να κανεις είναι 8x - Y/4, εσύ κάνεις τη διαίρεση Υ/4, κάνεις την επέκταση προσήμου και προσθέτεις στο 8χ που υπολόγισες νωρίτερα
προσπαθώ απλά να καταλάβω αν η λύση που ανέβασες περιλαμβάνει την αλλαγή προσήμου (από +Υ/4 σε -Υ/4) ή σου διέφυγε

Σορρυ βασικα ειμαι μ@@.... το εγραψα στις 2 το βραδυ
Το θεμα ειναι φλεβαρης του 14


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Chester on June 27, 2016, 13:59:08 pm
Μια προσπάθεια λύσης του θέματος 3 Φεβρουαριου 2015.

Αρχικα κανω το X*8.
Μετα το 3*Y και επειτα το αποτελεσμα του δια 8.
Σε αυτο το αποτελεσμα προσθετω το 25.15625
Και τελος αυτο το αφαιρω απο το αποτελεσμα του X*8.

Εστω οτι ονομαζω tempX το αποτελεσμα του Χ*8 και tempY αποτελεσμα του (3Y/8)+25.15625.

Κανω εναν ελεγχο αν tempY>tempX. Εαν οχι τοτε κανω κανονικα την αφαιρεση. Εαν ομως ειναι τοτε εκει τι πρεπει να γινει??
Επεκταση προσημου? Μπορει καποιος να δωσει τα φωτα του και να συμπληρωσει τον κωδικα?

Τελος, δεν ξερω αν οσα εγραψα ειναι σωστα, οποτε οποια παρατηρηση θα βοηθουσε.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on June 27, 2016, 15:20:15 pm
.... Σωστό μου. Φαίνεται. Γενικά συμβουλή είναι η επέκταση πρόσημου και add-adc. Η επέκταση πρόσημου γίνεται με έλεγχο του msb (εάν θές απο έναν 8bit προσημασμένο σε 16 bit προσημασμένο) ή αλλαγή του αριθμού. πχ 0000 1000 με com και μετά inc γίνεται μείων -8 11111000. Αυτό δεν ισχύει για αρίθμους θετικούς όπως 1111 1111 ο οποίος θέλει 8bit plus 1 για να αναπαρασταθεί διότι με com γίνεται 0000 0000 inc 0000 0001 ...και έχεις overflow ...

Κανω εναν ελεγχο αν tempY>tempX. Εαν οχι τοτε κανω κανονικα την αφαιρεση. Εαν ομως ειναι τοτε εκει τι πρεπει να γινει??
Αρκεί η ίδια αφαίρεση καθώς θα βγει αρνητικός (προσημασμένος). Αν θυμάμαι  καλά υπάρχουν μερικές οριακές τιμές που δεν ισχύει αυτό βέβαια.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Chester on June 27, 2016, 17:13:22 pm
Δηλαδη θα μπορουσα να το αφησω ετσι απλα να συμπληρωσω:

arnitikos:
  com tempYMF
  inc tempYMF
  com tempYMD
  inc tempYMD
  com tempYHD
  inc tempYHD
  add tempXMF,tempYMF
  adc tempXMD,tempYMD
  adc tempXHD,tempYHD

?

Το Neg (συμπληρωμα του 2) σε ποια περιπτωση το χρησιμοποιω; Επειδη ειχα στο μυαλο μου αντι για COM kai INC να κανω Neg και μετα SUB, SBC


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on June 27, 2016, 18:31:47 pm
Δηλαδη θα μπορουσα να το αφησω ετσι απλα να συμπληρωσω:
arnitikos:
τίποτα άπλα κάνεις το ίδιο δεν χρειάζεται έλεγχος. Ο έλεγχος γίνεται όταν έχεις ένα προσημασμένο (αρνητικό και τον κάνεις μη προσημασμένο) και ένα μη προσημασμένο οπότε δεν ξέρεις τι θα βγει το πρόσημο

Το Neg (συμπληρωμα του 2) σε ποια περιπτωση το χρησιμοποιω;
Όταν έχεις ένα register... Για 16bit δεν λειτουργεί

quote από παραπάνω
γενικά έχω βρει δυο λύσεις για neg 16 bit
http://www.atmel.com/images/doc0937.pdf

/εδιτ και το inc το κάνεις μια φόρα και ελεγχεις το carry για τα μεγαλύτερα bytes


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Chester on June 27, 2016, 20:26:08 pm
ok,ευχαριστω! Για την ερωτηση θεωριας με τα σταδια εκτελεσης μιας εντολης γνωριζει κανεις κατι; π.χ της εντολης rcall k


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: matzaris on September 12, 2016, 17:42:45 pm
Στις απαντήσεις στο 2ο και 3ο θέμα πρέπει να κάνουμε έλεγχο, π.χ για έναν πίνακα ΝxΝ, όπου Ν είσοδος, αν το NxN είναι μικρότερο από την Ramend και μεγαλύτερο από το 0x0060;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: iliakalos on September 13, 2016, 12:44:06 pm
Στις απαντήσεις στο 2ο και 3ο θέμα πρέπει να κάνουμε έλεγχο, π.χ για έναν πίνακα ΝxΝ, όπου Ν είσοδος, αν το NxN είναι μικρότερο από την Ramend και μεγαλύτερο από το 0x0060;
Όχι από ότι έμαθα δεν χρειάζεται!


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Eilex on February 01, 2017, 02:22:37 am
Μπορεί κάποιος να εξηγήσει τι παίζει με την αφαίρεση όταν είναι unsigned όπως στο θέμα 3 του Φλεβάρη του 2015 γιατί δεν βγάζω άκρη...


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: kaspas on February 01, 2017, 14:15:33 pm
Παιδιά ξέρετε αν μπορούμε να χρησιμοποιήσουμε τις συναρτήσεις που έχει στα φυλλάδιά του;(χωρίς να τις γράψουμε δηλαδή )
Πχ στο θέμα 2 Φεβρ. 2015 θα μπορούσαμε να χρησιμοποιήσουμε την bubble short που έχει ;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: dimikara on February 02, 2017, 19:26:05 pm
Έχει λύσει κανείς τα θέματα Φλεβάρη του 16?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Maylo on June 11, 2017, 17:22:04 pm
Παιδιά θέμα 2  2012 Φλεβάρης , το cosa ( ή το cos2a) πάντα θετικό είναι . Εφόσον όμως δεν μας λέει οτι πρόκειται για προσημασμένο  παρά μόνο για το X , εμείς πρέπει να χρησιμοποιήσουμε " mulsu " έτσι; Το λέω αυτό επειδή σε μία λύση εδώ στο topic διαιρεί το cos2a με 2 χρησιμοποιώντας " asr " και πολλαπλασιάζει με " muls ". Μου διαφεύγει  κάποια παραδοχή που πρέπει να κάνω για να την λύσω;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Bill on June 23, 2017, 17:22:16 pm
Έκανα το θέμα 2 Φλεβάρη 2016.

Απλά για μη προσημασμένα στοιχεία πίνακα.
Όταν λέει προσημασμένο εννοεί ότι το πρώτο bit είναι το πρόσημο και το υπόλοιπο κανονικά λες και ήταν unsigned ή ότι είναι τίποτα συμπλήρωμα ως προς 2 ;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on June 23, 2017, 17:26:01 pm
Έκανα το θέμα 2 Φλεβάρη 2016.

Απλά για μη προσημασμένα στοιχεία πίνακα.
Όταν λέει προσημασμένο εννοεί ότι το πρώτο bit είναι το πρόσημο και το υπόλοιπο κανονικά λες και ήταν unsigned ή ότι είναι τίποτα συμπλήρωμα ως προς 2 ;
προσημασμένοι συνήθως = συμπλήρωμα του δύο αλλιώς το προσδιορίζει.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: anaslout on June 23, 2017, 19:30:06 pm
παιδιά έχει καταλάβει κάποιος πως δουλεύουμε με τη μνήμη προγράμματος?οταν πχ. λέει ένας πίνακας είναι αποθηκευμένος στη μνήμη προγράμματος όπως στο ΄θεμα 2 φλεβάρης του 17 πως το δουλεύουμε?επίσης στα θέματα που ζητάει να γράψουμε σε πίνακα στην SRAm ξέρει κανείς αν ζητάει να γίνει και έλεγχος αν ο πίνακας είναι μέσα στα όρια επιτρεπτών τιμών?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Mr K on June 23, 2017, 20:07:02 pm
παιδιά έχει καταλάβει κάποιος πως δουλεύουμε με τη μνήμη προγράμματος?οταν πχ. λέει ένας πίνακας είναι αποθηκευμένος στη μνήμη προγράμματος όπως στο ΄θεμα 2 φλεβάρης του 17 πως το δουλεύουμε?επίσης στα θέματα που ζητάει να γράψουμε σε πίνακα στην SRAm ξέρει κανείς αν ζητάει να γίνει και έλεγχος αν ο πίνακας είναι μέσα στα όρια επιτρεπτών τιμών?

Μνήμη προγράμματος ή Flash memory: Εκεί όπου γράφονται οι εντολές. Φροντίζεις αρχικά ο πίνακας να μην πέφτει πανω στις αποθηκευμένες εντολές και αυτό το κάνεις με την εντολή .org (πχ $100) στην αρχή και επαναφορά στο .org 0 ώστε να ξεκινήσει η αποθήκευση εντολών στο μηδέν ενώ η αποθήκευση του πίνακα στη θέση $100. Δεύτερον, η ιδιαιτερότητα είναι ότι είναι 16bitη μνήμη, πράγμα που σημαίνει ότι αποθηκεύονται 2 τιμές σε μία θέση (2 δεδομένα σε μία διεύθυνση). Μετακινήσεις μόνο με εντολές lpm, spm μέσω του Register Z.


Για την SRAM:Ξεκινάς απο την αρχή του πίνακα, ξες το μήκος, και όταν το φτάσεις, τελειώνεις το πρόγραμμά σου. Δεν απαιτείται έλεγχος σε κάθε επανάληψη. Απλά έχεις έναν counter που μετρά από το μηδέν μέχρι το τέλος του πίνακα.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: anaslout on June 23, 2017, 20:27:52 pm
Σε ευχαριστώ για την απάντηση.Απλά για την SRAM ρωτούσα αν ζητάει να ελέγχουμε πχ αν ο πίνακας μας θα βγει εκτός ορίων SRAM.πχ στις ασκήσεις που λέει δίνεται ενας πίνακας με αρχική διεύθυνση x και μήκος y.Βρές πχ κάποιες τιμές και βάλτες σε ένα άλλο πίνακα.Θέλει να γίνεραι έλεγχος αν οι τελικές μας διεθύνσεις είναι εντός επιτρεπτών τιμών της μνήμης(πανώ από $0060 και κάτω από διεύθυνση στόιβας)Απο όσο είδα κανένας δε το κάνει αυτό στις λυμένες ασκήσεις,ενώ στα παραδείγματα του κάνει κάτι τέτοιο.Το ζητάει ο πέτρου στην εξέταση αυτό οι θεωρούμε πάντα συμβατικά ότι είμαστε εντός ορίων.

Ακόμη,για τη μνήμη προγράμματος έστω είμαι σε μία συγκεκριμένη διεύθυνση που έχω αποθηκεύμενα τα δεδομένα.Σε κάθε διεύθυνση έχω δύο bytes δεδομένων.Πως θα διαλέξω ποιο byte παίρνω?Κάτι είδα στις λυμένες του πέτρου ότι πολλαπλασίαζει τη διεύθυνση επί 2 αλλά με αυτό το τρόπο δε πάμε σε τελείως άλλη διεύθυνση?
σόρρυ για το μακρυνάρι,απλά είναι τα δύο πράγματα που δεν έχω καταλάβει.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Mr K on June 23, 2017, 21:14:51 pm
Σε ευχαριστώ για την απάντηση.Απλά για την SRAM ρωτούσα αν ζητάει να ελέγχουμε πχ αν ο πίνακας μας θα βγει εκτός ορίων SRAM.πχ στις ασκήσεις που λέει δίνεται ενας πίνακας με αρχική διεύθυνση x και μήκος y.Βρές πχ κάποιες τιμές και βάλτες σε ένα άλλο πίνακα.Θέλει να γίνεραι έλεγχος αν οι τελικές μας διεθύνσεις είναι εντός επιτρεπτών τιμών της μνήμης(πανώ από $0060 και κάτω από διεύθυνση στόιβας)Απο όσο είδα κανένας δε το κάνει αυτό στις λυμένες ασκήσεις,ενώ στα παραδείγματα του κάνει κάτι τέτοιο.Το ζητάει ο πέτρου στην εξέταση αυτό οι θεωρούμε πάντα συμβατικά ότι είμαστε εντός ορίων.

Ακόμη,για τη μνήμη προγράμματος έστω είμαι σε μία συγκεκριμένη διεύθυνση που έχω αποθηκεύμενα τα δεδομένα.Σε κάθε διεύθυνση έχω δύο bytes δεδομένων.Πως θα διαλέξω ποιο byte παίρνω?Κάτι είδα στις λυμένες του πέτρου ότι πολλαπλασίαζει τη διεύθυνση επί 2 αλλά με αυτό το τρόπο δε πάμε σε τελείως άλλη διεύθυνση?
σόρρυ για το μακρυνάρι,απλά είναι τα δύο πράγματα που δεν έχω καταλάβει.

1) Δεν απαιτείται να δείς αμα θα μπλέξεις με τη στοίβα, συμβατικά έχεις το χώρο.

2) πχ αποθηκεύεις το πινακα Table: .dw 0x5876.
Για να πας εκει, αρχικά φορτώνεις στο ZH το 2*Table (2* γιατί έτσι  :P) Μετά ανάλογα με την τιμή του ZL παίρνεις είτε το 1 8bito δεδομένο, είτε το άλλο. Εδώ όταν ZL = 0 παίρνεις το 0x76 και όταν ZL = 1 παίρνεις το 0x58. (Αποθηκεύονται ανα δύο και ανάποδα.) Κάνε δοκιμές στον avr ή/και δες στο datasheet την lpm.   


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: princess_of_the_dawn on June 25, 2017, 20:48:27 pm
Στο θέμα 3 Φεβρουάριος 2011 πρέπει να δώσουμε εμείς τις τιμές τους fx σαν πίνακα στη μνήμη και αν ναι, ποιές τιμές δίνουμε;
Αν όχι, θεωρούμε δεδομένο ότι υπάρχει ένας πίνακας και φορτώνουμε τη δ/νση του στον Z όπου το 1ο στοιχείο αντιπροσωπεύει το 0 κ.ο.κ;
Γενικά μπερδεύομαι λίγο στις ασκήσεις με το τί θεωρείται δεδομένο κάθε φορά και τί όχι... :-\

Επίσης πώς μπορώ να υπολογίσω δεδομένων 1.των αριθμών βιτς για το ακέραιο και το δεκαδικό μέρος 2.των εκάστοτε μετατοπίσεων από τους πολ/σμούς 3. το συνολικό άθροισμα 4. πολ/σμενο επί 3 και 5.δεδομένου ότι ν<=64 πόσα βιτς είναι ο μεγιστος αριθμός για το ακέραιο και το δεκαδικό μέρος ώστε να ξέρω πόσα βυτες θα χρησιμοποιήσω;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: forisonex on June 26, 2017, 00:07:28 am
έχει λύσει κάποιος ολοκληρωμένα τα θέματα του Φεβρουαρίου 2017? Η' έστω τις απαντήσεις στη θεωρία ή την μια απο τις 2 ασκήσεις? ΗΕΕΕLP :-\


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: princess_of_the_dawn on June 26, 2017, 03:37:21 am
Η σχετική διεύθυνση είναι η απόσταση από το πρώτο στοιχείο του πίνακα; Και αν ναι, τί σχετική δ/νση έχει το 1ο στοιχείο τότε; 0;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Επικο Burger on June 26, 2017, 22:56:29 pm
Η σχετική διεύθυνση είναι η απόσταση από το πρώτο στοιχείο του πίνακα; Και αν ναι, τί σχετική δ/νση έχει το 1ο στοιχείο τότε; 0;

Ναι αυτό εχω καταλαβει και εγώ. Αν το πρωτο τηρει προδιαγραφες, τοτε ναι σχετικη διευθυνση = 0.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Vlassis on September 10, 2017, 13:39:52 pm
έχει λύσει κάποιος ολοκληρωμένα τα θέματα του Φεβρουαρίου 2017?
^eatpaper^


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Ροζ συννεφάκι on September 11, 2017, 20:02:09 pm
Στα θέματα Φεβρουαρίου 2017 τι εννοεί όταν λέει πλήρης ακρίβεια; πόσα byte ακέραιο μέρος και πόσα δεκαδικό;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Aristos on September 11, 2017, 20:35:48 pm
@Ροζ συννεφάκι
αφού το ημίτονο το έχεις με ακρίβεια ένα μπάιτ, θα έχεις ένα μπάιτ για το κομμάτι δεξιά της υποδιαστολής. αν δε σε νοιάζει (μάλλον δε μας νοιάζει εδώ) η υπερχείληση, ένα μπάιτ και για το ακέραιο μέρος. σύνολο δύο


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on September 11, 2017, 21:15:13 pm
Παράδειγμα και με λύση της πράξης
Γενικά πλήρη ακρίβεια πηγαίνει για την πράξη να μην χάσεις λόγω υπερχειλίσεις είτε over είτε under επειδή under flow πέφτει πολύ σπάνια ας πούμε εδώ παίζει να έχει καθώς το Υ το κάνει /4 αλλά δεν το πήρα υπόψη μου.
/ εδιτ πριν την πράξη με το +5Χ ξέχασα να βάλω έλεγχο για το carry του ACC1
/εδιτ 2 επίσης το Y είναι προσημασμένο άρα όχι lsr Y αλλά asr Y για να κρατήσει το πρόσημο


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Aristos on September 12, 2017, 17:36:48 pm
@Andromedas

διαφωνώ μαζί σου σε δύο σημεία
1) ο πίνακας με τα ημίτονα αναφέρεται σε γωνίες [1, 89] μοίρες. άρα, η μέγιστη ακρίβεια θα ήταν να αναφέρονται και τα 8 bit, στα ψηφία μετά την υποδιαστολή
2) δε πιστεύω πως η εννοια της ακρίβειας αναφέρεται σε περιπτώσεις overflow. η ακρίβεια έχει να κάνει με το πόσο κοντά είναι το αποτέλεσμα σου στην πραγματική τιμή. αυτό καθορίζεται (κυρίως) από το πόσα bit χρησιμοποιείς για το κομμάτι του αριθμού δεξιά της υποδιαστολής. για overflow, μπορείς να βάλεις έναν έλεγχο και μια σημαία λάθους (την Τ πχ) αλλά αυτό είναι άλλη ιστορία.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Andromedas on September 12, 2017, 18:40:07 pm
@Andromedas

διαφωνώ μαζί σου σε δύο σημεία
1)
2)
για το ένα (1) έχεις δίκιο εάν είναι από  1-89, αλλά δεν έλυσα το θέμα έκανα παράδειγμα για ανάλυση πλήρης ακρίβειας
για το (2) εάν το δεχτεί ο Πετρου καλός αλλιώς πρέπει να λυθεί το over η το under flow. Με το flag η λύση και για το IEEE 754 είναι αποδεκτή αφού αρκετοί kernel σου κάνω επέκταση σαν exception με το overflow flag και μέχρι εδώ φτάνουν οι γνώσεις μου  :-\


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: TheoProt on January 07, 2018, 08:24:59 am
Έχει λύσει κανείς τα θέματα του Σεπτεμβρίου 2017 και μπορεί να τα ανεβάσει;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: laserscout on January 13, 2018, 13:28:32 pm
Έχει λύσει κανείς τα θέματα του Σεπτεμβρίου 2017 και μπορεί να τα ανεβάσει;

Ορίστε το Θέμα 2.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: laserscout on January 13, 2018, 13:43:30 pm
Εγώ να ρωτήσω για τα θέματα του Σεπτεμβρίου 2017, θέμα 3ο

Quote
Ένα κείμενο είναι αποθηκευμένο κατά ASCII σε Ν σελίδες της SRAM.
Οι δύο πρώτες θέσεις του κειμένου περιέχουν τον συνολικό αριθμό των χαρακτήρων του κειμένου.
Να συνταχθεί το πρόγραμμα το οποίο απαριθμεί τις λέξεις του κειμένου οι οποίες έχουν περισσότερους από 5 αλφανουμερικούς χαρακτήρες.
Οι υπάρχοντες χαρακτήρες στίξεις είναι το κόμμα, η τελεία και το διάστημα.

  • Τι εννοεί σελίδες της SRAM; Πως η διευθύνσεις θα είναι μεγαλύτερες από 0xFF και ο pointer μας θα πάει τουλάχιστον 0x{NN}FF;
  • Πρώτες δύο θέσεις = πρώτα 4 byte;
  • Αφού οι υπάρχοντες χαρακτήρες στίξεις είναι αυτοί οι τρεις, μόνο αυτοί οι τρεις θα χωρίζουν τις λέξεις ΚΑΙ όλοι οι υπόλοιποι χαρακτήρες θεωρούνται αλφανουμερικοί.

Τι πιστεύετε;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Ap.Mor. on January 20, 2018, 21:23:13 pm
Μια λύση για το θέμα 2 του Φεβρουαρίου 2017.
Επειδή μόλις ψιλοκατάλαβα πως κινούμαστε στις ασκήσεις με πλήρη ακρίβεια και πως κάνουμε υπολογισμούς υπάρχει περίπτωση να είναι τελείως ότι να ναι! :P


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: windwaker on January 30, 2018, 17:11:17 pm
Ορίστε το Θέμα 2.
Μπορείς  εξηγήσεις αυτή τη γραμμή;
w_sqr: .db 0x00,0x10,0x16,0x1B,0x20,0xA0   ; for w= 0,1,2,3,4,100

Γιατί βάζεις αυτές τις τιμές για ρίζα του W; Πως προκύπτει;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: MarPap on February 01, 2018, 01:13:38 am
Κάποιος τις λύσεις για τα θέματα του Σεπτέμβρη... :-\


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: iliakior on February 01, 2018, 05:14:58 am
Θα μπορούσε κάποιος/α να εξηγήσει την μεθοδολογία και την λογική στις ασκήσεις με πλήρη ακρίβεια ; Βλέπω κώδικες παλαιότερων θεμάτων που έχουν ανεβεί αλλά δεν υπάρχουν κατατοπιστικά σχόλια και δεν βγαίνει νόημα.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: yolanda on February 01, 2018, 11:33:30 am
+1


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Ap.Mor. on February 01, 2018, 14:57:48 pm
Μια λύση για το θέμα 2,Σεπτεμβρίου του 17.
Υπέθεσα πως το Χ είναι ακέραιος μιας και δε δίνει κάποια διευκρίνιση.
Επειδή δεν ξέρω αν τις κάνω σωστά αυτές τις ασκήσεις οποιαδήποτε βοήθεια θα ήταν τέλεια! :D


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Ap.Mor. on February 01, 2018, 15:03:11 pm
Θα μπορούσε κάποιος/α να εξηγήσει την μεθοδολογία και την λογική στις ασκήσεις με πλήρη ακρίβεια ; Βλέπω κώδικες παλαιότερων θεμάτων που έχουν ανεβεί αλλά δεν υπάρχουν κατατοπιστικά σχόλια και δεν βγαίνει νόημα.

Επειδή είχα το ίδιο πρόβλημα,δες στην 5η σελίδα των λυμένων θεμάτων τις λύσεις του andromeda.
Νομίζω τα σχόλια στις λύσεις του είναι αρκετά κατατοπιστικά


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: 00128419 on February 01, 2018, 15:27:46 pm
Από που διαβάζουμε για να κατανοήσουμε τον πρώτο τύπο ασκήσεων? (διαχείριση μνημης με SRAM). Ένα file που υπάρχει στα downloads για κάποιο λόγο δεν με αφήνει να το κατεβάσω


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Ap.Mor. on February 01, 2018, 15:59:49 pm
Εγώ να ρωτήσω για τα θέματα του Σεπτεμβρίου 2017, θέμα 3ο

  • Τι εννοεί σελίδες της SRAM; Πως η διευθύνσεις θα είναι μεγαλύτερες από 0xFF και ο pointer μας θα πάει τουλάχιστον 0x{NN}FF;
  • Πρώτες δύο θέσεις = πρώτα 4 byte;
  • Αφού οι υπάρχοντες χαρακτήρες στίξεις είναι αυτοί οι τρεις, μόνο αυτοί οι τρεις θα χωρίζουν τις λέξεις ΚΑΙ όλοι οι υπόλοιποι χαρακτήρες θεωρούνται αλφανουμερικοί.

Τι πιστεύετε;

Μια προσπάθεια για το 3ο θέμα τους Σεπτεμβρίου '17.

  • Οι πρώτες 2 θέσεις φαντάζομαι έχουν τον αριθμό των χαρακτήρων ο οποίος είναι 2 byte
      Στην πρώτη θέση έχουμε το low και στη δεύτερη το high
  • Επίσης θεώρησα αυτό που λες πως οι υπάρχοντες χαρακτήρες στίξης είναι 3εις και όλοι οι υπόλοιποι αλφανουμερικοί.

Οι N σελίδες της SRAM δεν ξέρω τι είναι! :o


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Argirios on February 01, 2018, 17:14:20 pm
Μια λύση για το θέμα 2,Σεπτεμβρίου του 17.
Υπέθεσα πως το Χ είναι ακέραιος μιας και δε δίνει κάποια διευκρίνιση.
Επειδή δεν ξέρω αν τις κάνω σωστά αυτές τις ασκήσεις οποιαδήποτε βοήθεια θα ήταν τέλεια! :D

για το W νομίζω πρέπει να χρησιμοπιοήσεις lpm όχι ld αφού βρίσκετε στη μνήμη προγράμματος


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Ap.Mor. on February 01, 2018, 19:16:54 pm
για το W νομίζω πρέπει να χρησιμοπιοήσεις lpm όχι ld αφού βρίσκετε στη μνήμη προγράμματος

Ναι έχεις δίκιο!
Το διόρθωσα!


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Ζak Μckracken on February 02, 2018, 00:29:59 am
Έχει προσέξει κανείς/καμιά εάν τόσα χρόνια κάποιες ασκήσεις έχουν ξαναπέσει ολόιδιες ;;;;;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: laserscout on February 02, 2018, 01:17:26 am
Μπορείς  εξηγήσεις αυτή τη γραμμή;
w_sqr: .db 0x00,0x10,0x16,0x1B,0x20,0xA0   ; for w= 0,1,2,3,4,100

Γιατί βάζεις αυτές τις τιμές για ρίζα του W; Πως προκύπτει;

Λέει κάθε byte της τετραγωνικής ρίζας εκφράζεται από 4 bit ακέραιο και 4 bit δεκαδικό. Οπότε τα "δεκαδικά" του αριθμού του αποθηκευμένου πίνακα θα είναι:
2^32^22^12^02^-12^-22^-32^-4
00010000=1
11110000=7
00001000=0.5
00010100=1.25

Οι τιμές που έγραψα στο πρόγραμμα είναι οι πραγματικές ρίζες του 1,2,3,4 και του 100. Τις έγραψα ενδεικτικά για να κάνω τις δοκιμές μου. Με το κομπιουτεράκι τις βρήκα και τις στρογγυλοποίησα στο διάδικο 


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: unfo on February 02, 2018, 11:14:55 am
1   1   1   1   0   0   0   0   =7

Γιατί ??? Δεν είναι 8+4+2+1=15 ?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: The_Traitor on February 02, 2018, 12:14:22 pm
Γιατί ??? Δεν είναι 8+4+2+1=15 ?

Ναι απλά μπέρδεψε την πρόσθεση μάλλον, το υπόλοιπο κομμάτι είναι το σημαντικό   :P


Thanks, κατάλαβα επιτέλους τη φάση με τους κλασματικούς  :D


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: windwaker on February 02, 2018, 13:16:04 pm
Λέει κάθε byte της τετραγωνικής ρίζας εκφράζεται από 4 bit ακέραιο και 4 bit δεκαδικό. Οπότε τα "δεκαδικά" του αριθμού του αποθηκευμένου πίνακα θα είναι:
2^32^22^12^02^-12^-22^-32^-4
00010000=1
11110000=7
00001000=0.5
00010100=1.25

Οι τιμές που έγραψα στο πρόγραμμα είναι οι πραγματικές ρίζες του 1,2,3,4 και του 100. Τις έγραψα ενδεικτικά για να κάνω τις δοκιμές μου. Με το κομπιουτεράκι τις βρήκα και τις στρογγυλοποίησα στο διάδικο 
Ευχαριστώ πολύ φίλε μου! Μου 'χε ξεφύγει η λεπτομέρεια με τα 4+4 bit για κάθε μέρος.  ::)


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Apostolof on February 02, 2018, 15:15:04 pm
Λύσεις με σχολιασμό για:
Febr_2017_2
Sept_2017_3
Sept_2016_2
Febr_2017_3


Η λύση με τον πολλαπλασιασμό δοκιμάστηκε και στο simulator. Από το εργαστήριο ηλεκτρονικής 8))

εδιτ: +βολικό pdf


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: vag178 on February 02, 2018, 16:27:12 pm
Λύσεις με σχολιασμό για:
Febr_2017_2
Sept_2017_3
Sept_2016_2
Febr_2017_3


Η λύση με τον πολλαπλασιασμό δοκιμάστηκε και στο simulator. Από το εργαστήριο ηλεκτρονικής 8))

εδιτ: +βολικό pdf


Όταν κανεις mul το αποτελεσμα παει στους r0,r1


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Kthulu on February 02, 2018, 16:27:23 pm
Λύσεις με σχολιασμό για:
Febr_2017_2
Sept_2017_3
Sept_2016_2
Febr_2017_3


Η λύση με τον πολλαπλασιασμό δοκιμάστηκε και στο simulator. Από το εργαστήριο ηλεκτρονικής 8))

εδιτ: +βολικό pdf

Ευχαριστουμε!!!!  ^hello^ ^clap^ ^super^


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Apostolof on February 02, 2018, 16:45:44 pm

Όταν κανεις mul το αποτελεσμα παει στους r0,r1

Ναι εκεί πάει. Στο θέμα με τους ascii χαρακτήρες έχει ένα λάθος/παράλειψη εκεί.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: vag178 on February 02, 2018, 16:49:05 pm
Ναι εκεί πάει.

Στην πρωτη πριν το loop δεν τ εχεις ετσι. Ακόμα στα macro εχεις @2 αντι για @1. Και στην ( Ν>256 αριθμοί ) εκει που ελενχεις αν ειναι αρτιος εχεις ( SBRC TMP, 0b00000001 ) θέλει  ( SBRC TMP, 0 ).

Αυτά βρηκα, αλλα πλ καλη δουλεια.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Apostolof on February 02, 2018, 16:55:14 pm
Σωστός και για τα δύο!


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: vag178 on February 02, 2018, 17:13:53 pm
Και κατι τελευταιο για το pdf. Στην τελευταια εκει για να παρουμε την τιμη του sin απο το LUT δεν θα επρεπει να κάνουμε:
ldi zh, high(sin<<1)
ldi zl, low(sin<<1)
add zl, THETA
adc zh, zero
lpm SINT, z

Η' το εχεις ετσι επειδη εχεις βαλει το ( .DB ) μετά το ( .ORG ) οποτε ειναι στην αρχη της flash???


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Apostolof on February 02, 2018, 17:37:19 pm
Η' το εχεις ετσι επειδη εχεις βαλει το ( .DB ) μετά το ( .ORG ) οποτε ειναι στην αρχη της flash???

Ναι αυτό σκεφτήκαμε. Αλλά δε ξέρουμε αν ισχύει.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Πάτρικ Αστέρης on February 02, 2018, 18:15:21 pm
exv περασει μικρο εδω και κανα 2 χρονια αλλα εχω σκαλωσει
πως διαιρω με 3;


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Kthulu on February 02, 2018, 18:39:20 pm
exv περασει μικρο εδω και κανα 2 χρονια αλλα εχω σκαλωσει
πως διαιρω με 3;

Φαντάζομαι ψάχνεις κάποιο κ έτσι ώστε το 2^κ να διαιρείται ακριβώς με το 3. Κάνεις κ shifts και μετα πολλαπλασιάζεις με 2^κ/3

Λογικα θα υπαρχει πιο απλος τροπος :P


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: The_Traitor on February 02, 2018, 18:54:01 pm
Φαντάζομαι ψάχνεις κάποιο κ έτσι ώστε το 2^κ να διαιρείται ακριβώς με το 3. Κάνεις κ shifts και μετα πολλαπλασιάζεις με 2^κ/3

Λογικα θα υπαρχει πιο απλος τροπος :P

Δυστυχώς δεν υπάρχει k ώστε να ισχύει η σχέση σου όμως  :( 
(Φαίνεται και με ένα προγραμματάκι στη C, τουλάχιστον από το 1 μέχρι το  107 δεν υπάρχει  :P )
Αν και ο Πάτρικ μάλλον θέλει να τρολάρει, όποιος έχει αποδεκτεί ότι δεν θα γράψει στις 7 ή έχει μείνει με την απορία, μπορεί να τσεκάρει εδώ http://www.avrfreaks.net/forum/division-3 (http://www.avrfreaks.net/forum/division-3)  :D


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Apostolof on February 02, 2018, 19:44:09 pm
Σεπτέμβριος 2016, θέμα 3

Last minute :D


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Apostolof on February 03, 2018, 14:52:33 pm
Τα θέματα μαζί με λύσεις. Ελπίζω να είναι σωστά :P


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: TheoProt on August 29, 2018, 02:11:59 am
Μπορεί κάποιος να εξηγήσει γιατί στο Θέμα 3 Φεβρουαρίου 2014 η πράξη Υ/4 γίνεται με 4 ολισθήσεις προς τα αριστερά ; (ο Υ είναι προσημασμένος 14-bit με 5-bit ακέραιο και 9-bit κλασματικό).


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Talaipa on August 31, 2018, 00:58:14 am
Μπορεί κάποιος να εξηγήσει γιατί στο Θέμα 3 Φεβρουαρίου 2014 η πράξη Υ/4 γίνεται με 4 ολισθήσεις προς τα αριστερά ; (ο Υ είναι προσημασμένος 14-bit με 5-bit ακέραιο και 9-bit κλασματικό).
δεν ξέρω τι φάση.. παντως δεν είναι και οτι καλύτερο να βάζεις στις εξετάσεις sfiftleft shiftright..


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: dimikotz on January 29, 2019, 11:43:54 am
Τα θέματα μαζί με λύσεις. Ελπίζω να είναι σωστά :P

Τα είδη formats πού τα βρίσκουμε ;p?  :P


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: marijuanna on January 29, 2019, 12:16:26 pm
Τα είδη formats πού τα βρίσκουμε ;p?  :P

Τι formats?
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy) 


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: dimikotz on January 29, 2019, 12:25:02 pm
Στις λύσεις του Apostolof που λέει πως για την εντολή MUL o avr θέλει 1.7 format κτλπ στο θέμα 2 του Φεβρουαρίου 2018


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: marijuanna on January 29, 2019, 16:28:17 pm
Στις λύσεις του Apostolof που λέει πως για την εντολή MUL o avr θέλει 1.7 format κτλπ στο θέμα 2 του Φεβρουαρίου 2018

νομιζω αυτο σημαίνει ενα bit για τον ακέραιο και 7 για το δεκαδικό...τωρα ποια είναι ολα αυτα τα φορμάτ και που βρίσκονται δεν ξερω...γκουγκλαρε αλλα γνκ ουτε το βιβλίο τα χει ουτε οι σημειώσεις του παπαευσταθιου είναι τόσο επικεντρωμένες στις πραξεις με δεκαδικους...απ τα παραδείγματα που ανεβασε 1-2 εχουν lookup table που εχει μεσα δεκαδικα (οχι δλδ αυτο καθε αυτό το πρόγραμμα να είναι οι πράξεις με δεκαδικά)... οπότε αν και για τον Πέτρου ήταν ψιλοστάνταρ θεμα οι πράξεις με δεκαδικά δεν ξέρω κατα πόσο είναι και για αυτόν...γτ αν μη τι αλλω θα πρέπει να μας δινει στοιχεια και πληροφορίες για κάτι τέτοιο...θα ναι λιγο κουλό έχοντας κανει μονο ενα παραδειγμα με mantissa (δλδ ο σκοπος ηταν οι ολισθησεις κι οχι καποια πράξη με δεκαδικο) να μας βαλει θέμα με πράξεις με δεκαδικα χωρίς να μας εξηγήσει πως γίνονται και αφήνοντας μας μονο τα βιβλία... είναι σαν να μας λέει κοπειτε και δεν δείχνει για τέτοιος... ταπεινή μου γνώμη ότι τα θέματα που θεωρώ ποιο πιθανά πηγαίνοντας μάθημα είναι με αναδρομές (εξάλλου το πε), γενικά προσπελάσεις στη μνήμη και πραξεις μεταξύ πινακων σε δύο διαφορετικές θεσεις στη μνημη, εύρεση στοιχείου, τοποθέτηση στοιχείου...και ίσως να δίνει έναν ψευδοκώδικα η κώδικα σε C και να ζητά το αντίστοιχο σε assembly...ΞΑΝΑΛΕΩ ταπεινή μου γνώμη δεν παίρνω κανέναν στο λαιμό μου αλλά δεν θεωρώ ότι τα παλιά θέματα Πέτρου θα μας προετοιμάσουν αρκετά για την εξέταση με παπαευσταθιου...
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy) 


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: Apostolof on January 29, 2019, 17:57:34 pm
Υπάρχουν εδώ μερικές πληροφορίες:
https://www.microchip.com/webdoc/avrassembler/avrassembler.wb_FMUL.html

Πάντως το θέμα δε μου το είχε δώσει ολόκληρο, μου είχε κόψει το μισό περίπου γιατί δεν είχα χρησιμοποιήσει τη σωστή MUL ή κάτι τέτοιο.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: dimikotz on January 29, 2019, 21:22:25 pm
νομιζω αυτο σημαίνει ενα bit για τον ακέραιο και 7 για το δεκαδικό...τωρα ποια είναι ολα αυτα τα φορμάτ και που βρίσκονται δεν ξερω...γκουγκλαρε αλλα γνκ ουτε το βιβλίο τα χει ουτε οι σημειώσεις του παπαευσταθιου είναι τόσο επικεντρωμένες στις πραξεις με δεκαδικους...απ τα παραδείγματα που ανεβασε 1-2 εχουν lookup table που εχει μεσα δεκαδικα (οχι δλδ αυτο καθε αυτό το πρόγραμμα να είναι οι πράξεις με δεκαδικά)... οπότε αν και για τον Πέτρου ήταν ψιλοστάνταρ θεμα οι πράξεις με δεκαδικά δεν ξέρω κατα πόσο είναι και για αυτόν...γτ αν μη τι αλλω θα πρέπει να μας δινει στοιχεια και πληροφορίες για κάτι τέτοιο...θα ναι λιγο κουλό έχοντας κανει μονο ενα παραδειγμα με mantissa (δλδ ο σκοπος ηταν οι ολισθησεις κι οχι καποια πράξη με δεκαδικο) να μας βαλει θέμα με πράξεις με δεκαδικα χωρίς να μας εξηγήσει πως γίνονται και αφήνοντας μας μονο τα βιβλία... είναι σαν να μας λέει κοπειτε και δεν δείχνει για τέτοιος... ταπεινή μου γνώμη ότι τα θέματα που θεωρώ ποιο πιθανά πηγαίνοντας μάθημα είναι με αναδρομές (εξάλλου το πε), γενικά προσπελάσεις στη μνήμη και πραξεις μεταξύ πινακων σε δύο διαφορετικές θεσεις στη μνημη, εύρεση στοιχείου, τοποθέτηση στοιχείου...και ίσως να δίνει έναν ψευδοκώδικα η κώδικα σε C και να ζητά το αντίστοιχο σε assembly...ΞΑΝΑΛΕΩ ταπεινή μου γνώμη δεν παίρνω κανέναν στο λαιμό μου αλλά δεν θεωρώ ότι τα παλιά θέματα Πέτρου θα μας προετοιμάσουν αρκετά για την εξέταση με παπαευσταθιου...
sent from mTHMMY (https://play.google.com/store/apps/details?id=gr.thmmy.mthmmy) 
Όλα βγάζουν νόημα για τα formats τώρα ευχαριστώ ;p.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: dimikotz on January 29, 2019, 21:28:35 pm
Υπάρχουν εδώ μερικές πληροφορίες:
https://www.microchip.com/webdoc/avrassembler/avrassembler.wb_FMUL.html

Πάντως το θέμα δε μου το είχε δώσει ολόκληρο, μου είχε κόψει το μισό περίπου γιατί δεν είχα χρησιμοποιήσει τη σωστή MUL ή κάτι τέτοιο.

Λες ήθελε FMUL σκέτο?Επίσης,έχω απορία αν είναιτυπογραφικό ή κάτι που δεν κατάλαβα στις λύσεις  :P.Στο θέμα 2 του 2018 Φεβ. είναι τα 4 rights shifts με LSR και ROR  αντί LSL και ROL?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: rigas on September 18, 2019, 13:51:42 pm
πως γράφουμε συναρτήσεις και πως περναμε τα ορισματα σε στοιβα ; γιατι ειδα οτι στα θεματα φεβρουαριου 19 τον κωδικα τον ζηταει σαν μια συναρτηση


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: allstarabey on September 22, 2019, 00:27:52 am
Στο θεμα 1 απο τα προγραμματα του Ιανουαριου μπορουμε να κανουμε οτι υποθεσεις θελουμε ?
Πχ αν τα νουμερα ειναι μεχρι 255 αρα αποθηκευονται με pop σε απλο καταχωρητη .......

Γιατι απλα λεει οτι ειναι αποθηκευμενα στη στοιβα ενω στα προγραμματα του ειναι πολυ συγκεκριμενα πως ειναι αποθηκευμενα


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: allstarabey on September 22, 2019, 03:52:25 am
Καλησπέρα, μια προσπάθεια για το θέμα 1 των ασκήσεων Ιανουάριου 19.
Καμία άποψη?
Υ. Γ θεώρησα ότι είναι αποθηκευμένο στη πρώτη θέση του stack το N άρα το πρωτο pop είναι αυτό αλλά δεν το έκανα


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: leukosaraphs! on September 22, 2019, 13:57:09 pm
Χωρις να ειμαι σιγουρος, δεν χρειαζεται να πεις οτι ειναι στην στοιβα. Επισης, επειδη λεει να περασεις σαν ορισματα στην στοιβα το Χ (τον πινακα) και το Ν, ειναι λιγο "τραβηγμενη" η παραδοχη σου.

Πιο καλη παραδοχη, ειναι να πεις οτι "Εστω ο πινακας Χ που λες ειναι αποθηκευμενος στην διευθυνση arr_X" και να την φορτωσεις στον register X
Code:
ldi XL, low(arr_X)
ldi XH, high(arr_X)
και να περασεις τον X στην στοιβα.

Ομοιως το Ν, εστω οτι το ξερεις και ειναι αποθηκευμενο σε εναν register .(και να περασεις τον register)

ΥΓ. αν καταλαβα τι ρωτας.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: allstarabey on September 22, 2019, 14:23:44 pm
Χωρις να ειμαι σιγουρος, δεν χρειαζεται να πεις οτι ειναι στην στοιβα. Επισης, επειδη λεει να περασεις σαν ορισματα στην στοιβα το Χ (τον πινακα) και το Ν, ειναι λιγο "τραβηγμενη" η παραδοχη σου.

Πιο καλη παραδοχη, ειναι να πεις οτι "Εστω ο πινακας Χ που λες ειναι αποθηκευμενος στην διευθυνση arr_X" και να την φορτωσεις στον register X
Code:
ldi XL, low(arr_X)
ldi XH, high(arr_X)
και να περασεις τον X στην στοιβα.

Ομοιως το Ν, εστω οτι το ξερεις και ειναι αποθηκευμενο σε εναν register .(και να περασεις τον register)

ΥΓ. αν καταλαβα τι ρωτας.
ευχαριστω σωστη παρατηρηση.
Το αφηνει απλα πολυ φλου οποτε πηγα και με το πιο ευκολο θεωρωντας οτι θα κανω κατι τετοιο στο επομενο αλλα εχεις δικιο ειναι πιο κομπλε.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: leukosaraphs! on September 22, 2019, 15:07:16 pm
Καλησπέρα, μια προσπάθεια για το θέμα 1 των ασκήσεων Ιανουάριου 19.
Καμία άποψη?
Υ. Γ θεώρησα ότι είναι αποθηκευμένο στη πρώτη θέση του stack το N άρα το πρωτο pop είναι αυτό αλλά δεν το έκανα

επισης, τωρα ειδα τον κωδικα που ειχες γραμμενο.

Βασικα σημεια για να μην χασεις τζαμπα μοναδες:

  • Σου λεει να κανεις διαφορες υποθεσεις, αλλα να ειναι λογικες. Πχ να υποθεσεις οτι Χ αποτελειται απο 1-byte αριθμους.
  • Σου λεει να υπολογισεις το αθροισμα. Δεν ειναι λογικη υποθεση να πεις οτι το αποτελεσμα ειναι 8bit. Αν προσθεσεις (οχι και τοσους πολλους) 8bit αριθμους, καποια στιγμη θα υπαρχει υπερχειλιση. Αρα λογικη υποθεση το sum ειναι 16bit αριθμος (αρα θες LOW και HIGH κομματι).
  • (εδω προκειται για λαθος και οχι "κακη υποθεση") Οταν πολ/ζεις 8bit αριθμους, ουσιαστικα το αποτελεσμα σου ειναι 16bit (για αυτο αλλωστε ο AVR χρησιμοποιει τους R1:R0). Αρα απο την δευτερη κιολλας επαναληψη δεν κανεις πολ/σμο 8bit * 8bit, αλλα 8bit * 16bit.
  • Τελος, απο οσο μου ειπαν για την ασκηση 1, ειχε πει οτι οι αριθμοι μπορει να ειναι και Unsigned

ΥΓ. οντως ουτε τα 16bit σου φτανουν για ορισμενες τιμες του Ν και τι τιμες περιεχει ο πινακας, αλλα τουλαχιστον θα δειξεις οτι ξερεις βασικη αριθμητικη (που θελει και να εξετασει).


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: allstarabey on September 22, 2019, 15:23:20 pm
επισης, τωρα ειδα τον κωδικα που ειχες γραμμενο.

Βασικα σημεια για να μην χασεις τζαμπα μοναδες:

  • Σου λεει να κανεις διαφορες υποθεσεις, αλλα να ειναι λογικες. Πχ να υποθεσεις οτι Χ αποτελειται απο 1-byte αριθμους.
  • Σου λεει να υπολογισεις το αθροισμα. Δεν ειναι λογικη υποθεση να πεις οτι το αποτελεσμα ειναι 8bit. Αν προσθεσεις (οχι και τοσους πολλους) 8bit αριθμους, καποια στιγμη θα υπαρχει υπερχειλιση. Αρα λογικη υποθεση το sum ειναι 16bit αριθμος (αρα θες LOW και HIGH κομματι).
  • (εδω προκειται για λαθος και οχι "κακη υποθεση") Οταν πολ/ζεις 8bit αριθμους, ουσιαστικα το αποτελεσμα σου ειναι 16bit (για αυτο αλλωστε ο AVR χρησιμοποιει τους R1:R0). Αρα απο την δευτερη κιολλας επαναληψη δεν κανεις πολ/σμο 8bit * 8bit, αλλα 8bit * 16bit.
  • Τελος, απο οσο μου ειπαν για την ασκηση 1, ειχε πει οτι οι αριθμοι μπορει να ειναι και Unsigned

ΥΓ. οντως ουτε τα 16bit σου φτανουν για ορισμενες τιμες του Ν και τι τιμες περιεχει ο πινακας, αλλα τουλαχιστον θα δειξεις οτι ξερεις βασικη αριθμητικη (που θελει και να εξετασει).

ουπς σωστο απόλυτα , μικρα πραγματα που ειναι μια χαρα παγιδες στην ασκηση .
ευχαριστω πολυυυυ!


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: mpotstyl on September 22, 2019, 15:53:11 pm
leukosaraphs! αυτό με τον πολλαπλασιασμό μπορείς να το εξηγήσεις λίγο παραπάνω ?


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: leukosaraphs! on September 22, 2019, 16:05:15 pm
leukosaraphs! αυτό με τον πολλαπλασιασμό μπορείς να το εξηγήσεις λίγο παραπάνω ?
τον πολ/σμο σαν πολ/σμο στους δυαδικους? η πως γινεται με κωδικα?

Ενας μπακαλικος τροπος για να βρισκεις το μεγεθος ειναι οτι:
στο δεκαδικο οταν κανεις (για παραδειγμα) 20 {2 ψηφια} * 7 {1 ψηφιο} = 140 {3 ψηφια}
αρα καπως αναλογα (και μπακαλιστικα) βγαινει το 8bit * 8bit = 16 bit (προφανως υπαρχουν περιπτωσεις που δεν ξεπερνα τα 8bit το αποτελεσμα).

Στο πως γινεται:
Ουσιαστικα αν εχεις ενα 16bit αποτελεσμα (πχ res_L, res_H, τα low και τα high bits αντιστοιχα πας και κανεις)
Code:
	mul NUM_X, res_L
movw r16, r0
        mul NUM_X, res_H
add r17, r0
movw resL, r16
ουσιαστικα πολ/ζεις τον 8bit αριθμο με τα LOW bits και τον 8bit με τα HIGH bits και τα "ενωνεις" (το εχει και καπου στις διαφανειες).

Τωρα πως κανεις τον πολ/σμο 16 bit (που δεν ξερεις αν ειναι + ή -) με 8 bit (που δεν ξερεις αν ειναι + ή -), ακομα δεν το ανακαλυψα.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: PureForm on September 22, 2019, 16:37:38 pm
@leukosaraphs!,μετα τον 2ο πολ/σμο και προσθετοντας μονο το r0 απο το αποτελεσμα στον r17 δεν χανουμε το r1(το high μερος δλδ) που προεκυψε απο τον 2ο πολ/σμο?γιατι δεν βλεπω να προσθετετε καπου.ρωταω μηπως σου ξεφυγε κατι μπορει να λεω και βλακειες


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: leukosaraphs! on September 22, 2019, 16:43:10 pm
@leukosaraphs!,μετα τον 2ο πολ/σμο και προσθετοντας μονο το r0 απο το αποτελεσμα στον r17 δεν χανουμε το r1(το high μερος δλδ) που προεκυψε απο τον 2ο πολ/σμο?γιατι δεν βλεπω να προσθετετε καπου.ρωταω μηπως σου ξεφυγε κατι μπορει να λεω και βλακειες

ναι ουσιαστικα το εγραψα και παραπανω στο ΥΓ, πολ/ζω 16bit με 8bit μπορω να παρω μεγιστο αποτελεσμα εως και 24bit. Αλλα θεωρησα οτι δεν ζηταει να του δειξουμε ποσο καλα μπορουμε να κανουμε movw τους καταχωρητες και οτι το αποτελεσμα εγω θα το μετραω εως 16bit. Μπορεις αν θες να κανεις ελεγχο αν μετα την προσθεση το Carry ειναι set και διακλαδωνεις σε Error.

Αν θες να παρεις παραπανω των 16bit πρεπει μετα να εχεις μετα 24bit * 8bit που αυτο θα δινει εως 32 bit, και μπλεκεις σε εναν φαυλο κυκλο.


Title: Re: [Συστ. Μικροϋπολογιστών] Λυμένα Θέματα
Post by: PureForm on September 22, 2019, 16:47:36 pm
κομπλε τωρα μετα απο την εξηγηση,γιατι σκεφτηκα οτι αμα μπεις σε αυτον φαυλο κυκλο θα θες και παραπανω καταχωρητες για να παιζεις με movw.