Eύρεση του αριθμού των bit που απαιτούνται

συζητήσεις για assembly

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
galatsi86
Δημοσιεύσεις: 2
Εγγραφή: 25 Δεκ 2011 13:26

Eύρεση του αριθμού των bit που απαιτούνται

Δημοσίευση από galatsi86 » 25 Δεκ 2011 15:59

Καλησπέρα και χρόνια πολλά σε όλους :pint:

Χρειάζομαι έναν αλγοριθμο σε intel assembly που υπολογίζει τον αριθμό των bit που απαιτούνται για την αναπαράσταση ενος δεκαδικού αριθμού σε binary.
Για να γινω αντιληπτός το 2 είναι binary 00000010b αρα χρειάζονται 2 bit για την αναπαράσταση του. To 128 είναι binary 10000000b άρα 8 bit κ.ο.κ

Οποιαδήποτε βοήθεια θα ηταν ευπρόσδεκτη.

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

Eύρεση του αριθμού των bit που απαιτούνται

Δημοσίευση από LightForce » 26 Δεκ 2011 23:54

Γεια,

Ώσπου αριθμός σου να γίνει μηδέν κάνε του δεξιά ολίσθηση και αύξανε κατά 1 τον αριθμό των bits.

GReaper
Δημοσιεύσεις: 48
Εγγραφή: 11 Δεκ 2010 21:47
Επικοινωνία:

Eύρεση του αριθμού των bit που απαιτούνται

Δημοσίευση από GReaper » 29 Δεκ 2011 13:05

Ψάξε για την εντολή "BSR", γρήγορη και απλή.

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

Eύρεση του αριθμού των bit που απαιτούνται

Δημοσίευση από LightForce » 29 Δεκ 2011 14:17

GReaper έγραψε:Ψάξε για την εντολή "BSR", γρήγορη και απλή.
Μία παρατήρηση. Σε 80386 και μετέπειτα επεξεργαστές μόνο.

galatsi86
Δημοσιεύσεις: 2
Εγγραφή: 25 Δεκ 2011 13:26

Eύρεση του αριθμού των bit που απαιτούνται

Δημοσίευση από galatsi86 » 01 Ιαν 2012 20:51

Ευχαριστώ για τις απαντήσεις.
GReaper έγραψε:Ψάξε για την εντολή "BSR", γρήγορη και απλή.
Έψαξα και μάλλον δεν την υποστηρίζει ο emulator 8086.
LightForce έγραψε:Γεια,

Ώσπου αριθμός σου να γίνει μηδέν κάνε του δεξιά ολίσθηση και αύξανε κατά 1 τον αριθμό των bits.
Έκανα όπως είπες μα το αποτέλεσμα είναι λανθασμένο.

Αν έχετε την διάθεση ρίξτε μια ματιά στον κώδικα. Καλή Χρονιά! :)

Κώδικας: Επιλογή όλων

#fasm#

org 0x100
jmp start

num dw 255
nbits dw 0

start:

shr [num],1
inc [nbits]
cmp [num],0
je done
loop start:

done:

LightForce
WebDev Moderator
Δημοσιεύσεις: 3812
Εγγραφή: 13 Απρ 2003 23:49

Eύρεση του αριθμού των bit που απαιτούνται

Δημοσίευση από LightForce » 02 Ιαν 2012 16:07

Aντικατέστησε την

Κώδικας: Επιλογή όλων

loop start

με

Κώδικας: Επιλογή όλων

jmp start
Δοκίμασε έτσι:

Κώδικας: Επιλογή όλων

start:

cmp [num],0
je done
shr [num],1
inc [nbits]
jmp start

done: 

Απάντηση

Επιστροφή στο “Assembly”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης