GCMH Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 Στο "τελείως" τέλος θα μπει. Εκεί στην τελευταία πρόσθεση που κάνεις. Μετά το ";;PROSTHESI TOU PROIGOUMENOU APOTELESMATOS ME TIS IMERES TON XRONON" Το 8000 (8000Η) στο δεκαεξαδικό είναι το 32768 στο δεκαδικό που είναι το "1000 0000 0000 0000" στο δυαδικό! Δεν φαίνεται τώρα;
alkisg Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 Μιας και ήσουν πολύ κοντά και σε μπλέξαμε, στέλνω τη λύση σε Assembly/Pascal. Δεν χρειάζονται cmp, jmp κτλ, μόνο cbw. Απλά διάβασέ τη από το link που σου έδωσα. > program test; var nmeres1, mnves1, xrovia1: byte; nmeres2, mnves2, xrovia2: byte; diafora_nmerwv, diafora_mnvwv, diafora_xrovwv: byte; suvolikes_meres: integer; begin nmeres1 := 02; mnves1 := 05; xrovia1 := 01; nmeres2 := 08; mnves2 := 08; xrovia2 := 08; asm mov al,nmeres1 sub al,nmeres2 mov diafora_nmerwv,al cbw mov suvolikes_meres,ax mov al,mnves1 sub al,mnves2 mov diafora_mnvwv,al cbw mov bx,30 imul bx add suvolikes_meres,ax mov al,xrovia1 sub al,xrovia2 mov diafora_xrovwv,al cbw mov bx,360 imul bx add suvolikes_meres,ax end; Writeln('H assembly upologise: ', suvolikes_meres); Writeln('H pascal upologizei: ', nmeres1-nmeres2 + 30*(mnves1-mnves2) + 360*(xrovia1-xrovia2)); end.
gtroza Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 nmeres1-nmeres2 + 30*(mnves1-mnves2) + 360*(xrovia1-xrovia2)); είσαι σίγουρος alkisg ? .
gtroza Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 EDIT: Γραψε λαθος! Τωρα καταλαβα τι εννοεις! Απ'το τελευταιο edit που εκανες κι εσυ! lolΝα σου πω την αληθεια με μπερδευει πολυ αυτος ο τροπος που διαλεξες... και θα πρεπει να αλλαξω ολο το προγραμμα που εχω φτιαξει μεχρι στιγμης. Δεν εχω το χρονο... αυριο πρεπει να την παραδωσω! τα ξαναλέμε μετά την παράδοση εύχομαι καλή επιτυχία .
alkisg Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 Αυτό δε ζήταγε; Τελος, το περιεχομενο της θεσης μνημης 0207 θα πολλαπλασιαζεται με το 30 και θα προστιθεται στη θεση μνημης 0206. Το ιδιο με τη θεση μνημης 0208, δηλαδη θα πολλαπλασιαζεται με το 360 - Πως;;;; και θα προστιθεται με το περιεχομενο της θεσης μνημης 0206. Εννοείς ανάποδα, nmeres2-nmeres1; ε, αυτό είναι... φιλολογικό ζήτημα!
anvc Δημοσ. 4 Ιουνίου 2008 Μέλος Δημοσ. 4 Ιουνίου 2008 Το 8000 (8000Η) στο δεκαεξαδικό είναι το 32768 στο δεκαδικό που είναι το "1000 0000 0000 0000" στο δυαδικό! Δεν φαίνεται τώρα; Δε μου το δεχεται και δε μπορω να καταλαβω γιατι... μου βγαζει το εξης σφαλμα: Wrong Parameters: AND BX,8000H (το δοκιμασα και χωρις Η) First operand is undefined variable(?) EDIT: Το ιδιο σφαλμα γραφει και για το CMP BX,0000h :cry:
anvc Δημοσ. 4 Ιουνίου 2008 Μέλος Δημοσ. 4 Ιουνίου 2008 τα ξαναλέμε μετά την παράδοση εύχομαι καλή επιτυχία . Να 'σαι καλα! Σ'ευχαριστω παρα πολυ για τη βοηθεια και για το χρονο σου!!!
GCMH Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 Kαι εγώ δεν μπορώ να το καταλάβω. Εναλλακτικά: AND BH,80H ή AND BH,128
gtroza Δημοσ. 4 Ιουνίου 2008 Δημοσ. 4 Ιουνίου 2008 Να 'σαι καλα! Σ'ευχαριστω παρα πολυ για τη βοηθεια και για το χρονο σου!!! νάσαι καλά αλλά ήταν για τον προσωπικό μου εγωϊσμό ! .
anvc Δημοσ. 4 Ιουνίου 2008 Μέλος Δημοσ. 4 Ιουνίου 2008 Kαι εγώ δεν μπορώ να το καταλάβω.Εναλλακτικά: AND BH,80H ή AND BH,128 Ακυρο!!!! Μισο λεπτο!
anvc Δημοσ. 5 Ιουνίου 2008 Μέλος Δημοσ. 5 Ιουνίου 2008 Το δοκιμασα... μου βγαζει το νουμερο "25890" αντι για 1171. Δε θελει με τιποτααααααααα!!! Μου φαινεται τζαμπα το παιδευω και παιδευω κι εσας!!!
alkisg Δημοσ. 5 Ιουνίου 2008 Δημοσ. 5 Ιουνίου 2008 Αν το κάνεις με τον τρόπο που προσπαθείς τώρα, θα πρέπει εκτός από το NEGation να κρατήσεις σε μία ακόμα θέση μνήμης το πρόσημο, ώστε στο τέλος να χρησιμοποιήσεις κι άλλες compare για να δεις αν θα πρέπει να κάνεις πρόσθεση ή αφαίρεση. Π.χ. για τους μήνες: έστω ότι βγαίνει FF = 255 => κάνεις compare => βλεπεις ότι αντιστοιχεί στο -1 => εδώ πρέπει να θυμηθείς το πρόσημο => το κάνεις NEGate => γίνεται 1. Παρακάτω, πολλαπλασιάζεις με 30 για να πάρεις τις μέρες => πρέπει να κοιτάξεις το πρόσημο που ήταν αρνητικό => να ξανακάνεις NEGate => να πάρεις αποτέλεσμα -30 => μετά να κάνεις την πρόσθεση. Γι' αυτό σου βγάζει λάθος αποτελέσματα. Δυσκολεύει πάρα πολύ έτσι, χωρίς λόγο. Απορώ γιατί δε χρησιμοποιείς τη λύση που έγραψα παραπάνω. Τέλος πάντων, καληνύχτα και καλή επιτυχία αύριο.
anvc Δημοσ. 5 Ιουνίου 2008 Μέλος Δημοσ. 5 Ιουνίου 2008 Απορώ γιατί δε χρησιμοποιείς τη λύση που έγραψα παραπάνω. Τέλος πάντων, καληνύχτα και καλή επιτυχία αύριο. Sorry απλα οταν ειδα το δικο σου προγραμμα μπερδευτηκα. Επειδη δεν ειδα να εχεις διευθυνσεις μνημης κλπ και δυσκολευομαι να το κατανοησω και να το γραψω σαν assembly! Γιατι συνδιασες τις 2 γλωσσες;
GCMH Δημοσ. 5 Ιουνίου 2008 Δημοσ. 5 Ιουνίου 2008 >MOV AX,00 MOV BX,00 MOV CX,00 ;1H AFAIRESI - IMERON MOV AL,[200H] SUB AL,[203H] MOV [206H],AL ;2H AFAIRESI - MINON MOV AL,[201H] SUB AL,[204H] MOV [207H],AL ;3H AFAIRESI - XRONON MOV AL,[202H] SUB AL,[205H] MOV [208H],AL ;;POLLAPLASIASMOS MINON ME TO 30 GIA NA GINOUN MERES MOV AL,[207H] MOV BL,1EH IMUL BL MOV [209H],AX ;POLLAPLASIASMOS XRONON ME TO 360 GIA NA GINOUN MERES [color="Blue"][b]MOV AL,[208H] CBW MOV BX,0168H [/b][/color] IMUL BX MOV [20BH],AX MOV [20DH],DX ;PROSTHESI IMERON ME TIS IMERES TON MINON MOV BX,[209H] [color="#0000ff"][b]MOV AL,[206H] CBW ADD BX,AX[/b][/color] MOV [20FH],BX ;;PROSTHESI TOU PROIGOUMENOU APOTELESMATOS ME TIS IMERES TON XRONON [color="#0000ff"][b]MOV AX,[20BH][/b] [/color] ADD AX,BX [color="#0000ff"][b]mov bx,ax and bh,80h jz noneg neg ax noneg: [/b] [/color] ;TO APOTELESMA KATAXOREITAI SE 16BITO KATAXORITI MOV [211H],AX HLT ;TELOS PROGRAMMATOS Τώρα βγαίνει... Απορώ γιατί δε χρησιμοποιείς τη λύση που έγραψα παραπάνω. Φαντάζομαι θα θέλει να χρησιμοποιήσει κάτι που έγραψε μόνος ώστε να μάθει. Κανείς δεν αμφισβητεί όμως ότι η λύση που έδωσες είναι πιο κομψή... Καληνύχτα και καλά αποτελέσματα!
anvc Δημοσ. 5 Ιουνίου 2008 Μέλος Δημοσ. 5 Ιουνίου 2008 Τωρα δε μου δεχεται την τιμη FF στο MOV BH,FFh... αν βαλω 00h το δεχεται! Ξερεις γιατι; Sorry παιδιαααααααααααα!!! Μη με βρισετε!
Προτεινόμενες αναρτήσεις
Αρχειοθετημένο
Αυτό το θέμα έχει αρχειοθετηθεί και είναι κλειστό για περαιτέρω απαντήσεις.