PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Assembler


Seppo
2004-07-17, 14:13:08
Ich habe Probleme in Assembler folgendes Programm zu schreiben:
Aus einem Datenwort w will ich die Anzahl der gesetzen Bits berechnen. Also z.B. w=10=1010 => gesetzte Bits = 2

Folgende Befehle kann man verwenden

Gast
2004-07-17, 16:11:03
irgendwie fehlt mir in der tabelle, welche befehle das cf und das zf setzen. ich rate einfach mal, vielleicht hilft es dir ein wenig.

zf= zeroflag= (ist 1 wenn der accu = 0 ist sonst 0)
ich denke jeder befehl, der den accu verändern kann, muss dieses flag setzen.

cf= carryflag= (es gibt rechenoperationen, bei denen das ergebnis nicht in den accu passt, sondern um 1 bit grösser sind. das cf nimmt dieses bit dann auf)
kandidaten, die cf setzen sind: add, sub, sra, sll

wie ich es ungefähr machen würde:

1. die zu untersuchende zahl in den accu schreiben
2. dann mit sra oder sll ein bit ins cf schieben
3. wenn cf gesetzt ist, auf ein zähler eins draufaddieren (accu sichern, zähler verändern, accu wiederherstellen)
4. wenn accu <>0 mit 2. weitermachen
5. zähler ausgeben

Seppo
2004-07-17, 17:16:58
Super, das hat mir echt geholfen:up: