PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Binär in Dezimal umwandeln in Assembler?



Peter_Holzer
26.03.2007, 19:50
Hallo an alle hier im Forum!

Weiß jemand wie man eine 8bit Binärzahl in eine Dezimalzahl umwandeln kann? Das Ganze in Assembler?

Vielen Dank für eure Hilfe

Peter Holzer

SprinterSB
26.03.2007, 21:33
Mal für eine 16-Bit-Zahl:

1) Wenn die Zahl < 0 ist gibst du ein - aus und ersetzt die Zahl durch ihr n-1 Komplement

2) Solange die Zahl >= 10000 ist ziehst du 10000 ab und merkst, wie oft du den Wert abgezogen hast

3) Analog für 1000, 100, 10, 1

Die Assembler-Befehle zum Vergleichen sind: CP, CPI und CPC, die zum Subtrahieren: SUB, SBC

The very code is left as an exercise to the reader ;-)

Peter_Holzer
27.03.2007, 08:21
Vielen Dank für deine Mühe

Ich habe bereits eine Lösung entwickelt!

Mfg Peter

JanB
27.03.2007, 10:12
Hallo Peter,

Vielen Dank für deine Mühe

Ich habe bereits eine Lösung entwickelt!

Es wäre schön, wenn du deine Lösung hier mal
vorstellen würdest, dann hätten wir alle was davon.

Gruß Jan

Peter_Holzer
27.03.2007, 17:55
Hi!

Ich hatte leider bis jetzt keine Möglichkeit meine Lösung zu posten!

DAS WÄRE MEINE LÖSUNG:

bit0 EQU 0x20
bit1 EQU 0x21
bit2 EQU 0x22
bit3 EQU 0x23
bit4 EQU 0x24
bit5 EQU 0x25
bit6 EQU 0x26
bit7 EQU 0x27
bin EQU 0x28 ;Variable in jener der Binärcode gespeichert ist
ergeb EQU 0x29


main
clrf bit0
clrf bit1
clrf bit2
clrf bit3
clrf bit4
clrf bit5
clrf bit6
clrf bit7

btfsc bin,0
call set_0
btfsc bin,1
call set_1
btfsc bin,2
call set_2
btfsc bin,3
call set_3
btfsc bin,4
call set_4
btfsc bin,5
call set_5
btfsc bin,6
call set_6
btfsc bin,7
call set_7
goto addieren

set_0
movlw D'1'
movwf bit0
return

set_1
movlw D'2'
movwf bit1
return

set_2
movlw D'4'
movwf bit2
return

set_3
movlw D'8'
movwf bit3
return

set_4
movlw D'16'
movwf bit4
return

set_5
movlw D'32'
movwf bit5
return

set_6
movlw D'64'
movwf bit6
return

set_7
movlw D'128'
movwf bit7
return


addieren
movf bit0,0 ;0....kopiert ins w-Reg.
addwf bit1,1 ;1....ergebnis wird in bit1 gespeichert
movf bit1,0
addwf bit2,1
movf bit2,0
addwf bit3,1
movf bit3,0
addwf bit4,1
movf bit4,0
addwf bit5,1
movf bit5,0
addwf bit6,1
movf bit6,0
addwf bit7,1

movf bit7,0
movwf ergeb

END