Moin moin zusammen,
ich brauche dringend eure Hilfe zur Lösung dieser Aufgaben huhu.
Und ich weiß, "du solltest aber selbst lernen/schreiben, nicht
kopieren." Aber das ist jetzt tot oder lebendig. Also ich bin sehr sehr
dankbar für jede Hilfe. Danke euch und sorry wenn es stört.
AUFGABE 1:
Schreiben Sie ein Assembler-Unterprogramm zur Umwandlung eines
ASCII-Zeichens in einen Binärwert.
- Die Adresse des ASCII-Zeichens steht beim Aufruf des Unterprogramms im
X-Register.
- Ist der Wert des ASCII-Zeichens im Bereich 0x30 bis 0x39 wird der
entsprechende Ziffernwert (0 bis 9) als Binärwert beim Rücksprung im
AkkuA übergeben.
- Sonst (Fehlerfall) wird im AkkuA der Wert 0xFF übergeben.
AUFGABE 2:
Schreiben Sie ein Assembler-Unterprogramm zum Bilden des Betrags einer
1-Byte-Zahl, die im Zweierkomplement gegeben ist.
- Aufruf des Unterprogramm mit JSR BETRAG
- Übergabe der Adresse der 1-Byte-Zahl im X-Register, Rückgabe des
Ergebnisses im Akku A.
AUFGABE 3:
Schreiben Sie ein Subroutine in Assembler, die ein Paritätsbit (Even
parity) an Position b7 im Akku A generiert (Even Parity bedeutet, dass
die Summer der Datenbits + Paritybits gerade ist).
- Bei Aufruf der Subroutine steht das Datenwort (7 Bits, b6...b0)
rechtsbündig im Akku A, b7 ist unbestimmt.
- Beim Verlassen der Subroutine soll zusätzlich zum Datenwort b7 im Akku
als Paritätsbit generiert sein.
AUFGABE 4:
Schreiben Sie ein Assembler-Unterprogramm BlkAnz, das die Anzahl der
Blankzeichen (0x20) in einen max. 200 Zeichen langen String zählt. Die
Adresse der ersten Stringzeichens steht im X-Register, der String ist
mit 0x00 terminiert. Die Anzahl der Blankzeichen soll in die Zeile vor
dem ersten Stringzeichen geschrieben werden.
AUFGABE 5:
Zur Abfrage eines Tasters soll ein Unterprogramm (InTaste) in Assembler
geschrieben werden.
- Der Taster liegt an PA0 (Bit= von PortA, Input). Ist der Taster
gedrückt so ist PA0 = 1, bei nicht gedrücktem Taster ist PA0 = 0.
- Zur sicheren Abfrage soll der Taster zweimal im Abstand von ca. 15ms
abgefragt werden.
- Der Rückgabewert im AkkuA soll sein:
+ 0x01, wenn bei beiden Tasterabfragen der Taster gedrückt war.
+ 0x00, wenn bei beiden Tasterabfragen der Taster nicht gedrückt war.
+ 0xFF, wenn bei beiden Tasterabfragen unterschiedliche Ergebisse
lieferten.
- Verwenden Sie für die Wartezeit den Timer. Der Timer-Prescaler ist so
gesetzt, dass ein "Timer-Rick" 0.5μs entspricht.
- Folgende Initialisierung ist bereits gefolgt:
PORTA = 0x0000 ; Adresse PortA
TCNT = 0x0044 ; Timer Counter
TC0 = 0x0050 ; Timer Compare Register 0
TFLG1 = 0x004E ; Timer Interrupt Flag Register,
von TC0: C0F = Bit0
TSCR1 = 0x0046 ; Timer System Control Register
TIOS = 0x0040 ; Timer Input/Output Select
MOVB #0b10010000, TSCR1 ; Enable Timer und Easy Quick Mode
MOVB #0 b0000001, TIOS ; TC0 ist Output Compare
AUFGABE 6:
Gegeben sei ein Mikrorechnersystem (M68HC12, Taktfrequenz = 8Mhz) mit
einem bei Adresse 0x3000 angeschlossenem D/A-Umsetzer (8 bit, Ua=
10mv/LSB). Eine Ausgabe an Adresse 0x3000 erzeugt direkt eine
entsprechende DAU-Ausgangsspannung.
a) Entwickeln Sie ein Programm ab dem Label LOOP (Endlosschleife), das
die Werte in der Funktionstablle "FTAB" nacheinander über "DAUOUT"
ausgibt.
b) Zeichnen Sie die dabei entstehende periodische Funktion Ua(t)
c) Welche Frequenz hat Ua(t)?
DAUOUT = 0x3000 ; Output Register
.AREA MEMORY (ABS)
.ORG 0x4000
FTAB: .DB 30, 70, 100 ; Alle Werte Dezimal
.DB 80, 50, 80
.DB 100, 70, 30
ENDTAB: .DB 0
START: LDS #0x1000 ; Programm-Start hier
JSR SetUp ; System SetUp
LOOP: .... ............ ; Bei Label "LOOP": T(diagramm) = 0
.... ............
.... ............
.... ............
.... ............
.... ............
.... ............
.... ............
.... ............ ; Ende Programmschleife
Come on guys, ich weiß, dass es doch blöd aussieht :D Aber lass mich sein. Ich bin jetzt verzweifelt... Könnte ihr mir helfen? 1,2 Aufgaben wären schon große Hilfe.
Anh Nguyen schrieb: > Könnte ihr mir helfen? 1,2 Aufgaben wären schon große Hilfe. Ich kenne diesen Assembler nicht, ich kann dir aber ein paar Denkanstöße geben.
1 | 1) BIN = @X - 0x30 |
2 | wenn BIN < 0 (MSb gesetzt) |
3 | {
|
4 | Akku = 0xFF |
5 | return |
6 | } |
7 | wenn (BIN - 10) >= 0 (MSb null) |
8 | {
|
9 | Akku = 0xFF |
10 | return |
11 | } |
12 | sonst |
13 | {
|
14 | Akku = BIN |
15 | return |
16 | } |
17 | |
18 | |
19 | 2) Akku = @X |
20 | wenn Akku > 0 (MSb gesetzt) |
21 | {
|
22 | Akku = Akku XOR 0xFF Zweierkomplement bilden, vllt gibts |
23 | Akku = Akku + 1 dafür auch einen ASM Befehl |
24 | return |
25 | } |
26 | sonst |
27 | {
|
28 | return |
29 | } |
Hochschule München ?! Oder arbeitet sonst noch wer mit diesen Dinosaurier-Controllern ?
Anh Nguyen schrieb: >Umwandlung eines >ASCII-Zeichens in einen Binärwert. Das ist ganz einfach. Schau mal in die ASCII-Tabelle, dort siehst du das die Zahlenzeichen 0 bis 9 bei Hex 30 bis Hex 39 liegen. Du brauchst also nur Hex 30 subtrahieren. Zum Beispiel: Hex 39 - Hex 30 = Hex 09
Anh Nguyen schrieb: > ich brauche dringend eure Hilfe zur Lösung dieser Aufgaben huhu. > Und ich weiß, "du solltest aber selbst lernen/schreiben, nicht > kopieren." Aber das ist jetzt tot oder lebendig. Tja, zu spät. Ungefähr 3 Wochen zu spät. Hättest du wenigstens gezeigt, dass du ein Interesse daran hast, die Aufgaben lösen zu können, hätte man sich die Zeit nehmen können, dir die Hinweise zu geben, die du dafür brauchst. So weiß ich als potentiell Helfender, dass meine Zeit garantiert verschwendet ist, denn selbst wenn das fertig ist, hast du immernoch nichts gelernt.
Ohne Worte:
AUFGABE 1:
Schreiben Sie ein Assembler-Unterprogramm zur Umwandlung eines
ASCII-Zeichens in einen Binärwert.
- Die Adresse des ASCII-Zeichens steht beim Aufruf des Unterprogramms im
X-Register.
- Ist der Wert des ASCII-Zeichens im Bereich 0x30 bis 0x39 wird der
entsprechende Ziffernwert (0 bis 9) als Binärwert beim Rücksprung im
AkkuA übergeben.
- Sonst (Fehlerfall) wird im AkkuA der Wert 0xFF übergeben.
Value: ldaa 0,x
suba #$30
bmi _FF
cmpa #10
bcc FF
bra EndVal:
_FF: ldaa #$FF
EndVal: ret
_____________________________________________________________
AUFGABE 4:
Schreiben Sie ein Assembler-Unterprogramm BlkAnz, das die Anzahl der
Blankzeichen (0x20) in einen max. 200 Zeichen langen String zählt. Die
Adresse der ersten Stringzeichens steht im X-Register, der String ist
mit 0x00 terminiert. Die Anzahl der Blankzeichen soll in die Zeile vor
dem ersten Stringzeichen geschrieben werden.
BlkAnz: psha
pshb
pshy
pshx
puly
decy
clrb
LoopBl: ldaa 0,x+
tsta
beq EndLoop
cmpa #$20
bne LoopBl
incb
bra LoopBl
EndLoop: stab 0,y
puly
pulb
pula
ret
___________________________________________________________
A6a:
LOOP ldy #0x3000
LOOP1: ldx #FTAB
LOOP2: ldaa 0,x+
staa 0,y
tsta
bne LOOP2
bra LOOP1
viel Erfolg, Uwe und sei nicht so stinkend faul
Hi Ja, Hilfe brauchst du, aber nicht, indem dir deine Aufgaben gelöst werden. Ihr habt doch das Thema besprochen, da sollte es ein Leichtes sein, mindestens für zwei der Aufgaben eine Lösung zu finden. Wie mir scheint, hast du einfach das falsche Fach belegt. Zumal hier ja nun wirklich nichts Besonderes erwartet wird. Sieh es mal so, ein Häkelkurs oder Sport, Kochen oder sonst was Anderes wär vielleicht eher was, denn auch wenn du hier die Lösungen gelieefert bekommst, du lernst es nicht. Nicht jetzt und auch nicht später Denn es interessiert dich nicht die Bohne. Ein Programmierer wird immer Ehrgeiz entwickeln, eine (eigene) Lösung zu finden. Das ist eine Eigenschaft, die mir bei deinem Post absolut fehlt. Also, vielleicht findest du noch einen Platz in einem anderen Bereich. Gruß oldmax
Und auch wenn Du für z.B. zwei Aufgaben (korrekte) Lösungen präsentierst und zu dem Rest absolut nichts (oder nur Mist) schreibst, sieht der Lehrer/Dozent sofort, dass man Dir geholfen hat und die eigentliche Denkleistung nicht von Dir stammt... Gruß, Thomas
Bei Assembler immer zuerst das Target nennen, am besten gleich im Topic! Ich könnte Dir Lösungen in 8051- oder AVR-Assembler schreiben.
Michael L. schrieb: > Hochschule München ?! Oder arbeitet sonst noch wer mit diesen > Dinosaurier-Controllern ? Äh, ich momentan, beruflich sogar (MC9HS12G). Und nein, ich bin nicht an der Hochschule. Dieser uC ist noch beliebt im Automotive-Umfeld für kleinere Steuergeräte wo es nicht auf hohe Rechenleistung ankommt, sondern eher auf der Preis bei hohen Stückzahlen und langjährige Verfügbarkeit.
Eric B. schrieb: > Michael L. schrieb: >> Hochschule München ?! Oder arbeitet sonst noch wer mit diesen >> Dinosaurier-Controllern ? > > Äh, ich momentan, beruflich sogar (MC9HS12G). > > Und nein, ich bin nicht an der Hochschule. Hm ich könnte schwören, dass ich genau diese Aufgaben vor 10 Jahren dort programmiert habe
Im Handwerk werden noch Lehrlinge gesucht... Wenn man merkt, dass man mit Informatik überfordert ist, warum nicht wechseln?
Vielen Dank danke an alle die mir geholfen haben! S. R. schrieb: > Anh Nguyen schrieb: > Tja, zu spät. Ungefähr 3 Wochen zu spät. > > Hättest du wenigstens gezeigt, dass du ein Interesse daran hast, die > Aufgaben lösen zu können, hätte man sich die Zeit nehmen können, dir die > Hinweise zu geben, die du dafür brauchst. So weiß ich als potentiell > Helfender, dass meine Zeit garantiert verschwendet ist, denn selbst wenn > das fertig ist, hast du immernoch nichts gelernt. Okay, danke dir. Martin Vogel schrieb: > Hi > Ja, Hilfe brauchst du, aber nicht, indem dir deine Aufgaben gelöst > werden. Ihr habt doch das Thema besprochen, da sollte es ein Leichtes > sein, mindestens für zwei der Aufgaben eine Lösung zu finden. Wie mir > scheint, hast du einfach das falsche Fach belegt. Zumal hier ja nun > wirklich nichts Besonderes erwartet wird. Sieh es mal so, ein Häkelkurs > oder Sport, Kochen oder sonst was Anderes wär vielleicht eher was, denn > auch wenn du hier die Lösungen gelieefert bekommst, du lernst es nicht. > Nicht jetzt und auch nicht später Denn es interessiert dich nicht die > Bohne. Ein Programmierer wird immer Ehrgeiz entwickeln, eine (eigene) > Lösung zu finden. Das ist eine Eigenschaft, die mir bei deinem Post > absolut fehlt. Also, vielleicht findest du noch einen Platz in einem > anderen Bereich. > Gruß oldmax Ich verstehe und ich weiß alles was du meinst. Ich bin aber gezwungen Elektrotechnik zu studieren gehen. Wieso, ist eine lange Geschichte. Ich wollte jetzt nur so schnell wie möglich das Studium abschließen und dem eigenen Weg folgen...
Anh Nguyen schrieb: > eine lange Geschichte. Ich wollte jetzt nur so schnell wie möglich "so schnell wie möglich" bedeutet 'du musst rannklotzen'. Mit der Betonung auf 'Du'. Denn andere Leute deine Arbeit machen zu lassen funktioniert in der Technik nicht. Dampfplauderer, die ausser schwafeln selbst nichts können, fliegen da sehr schnell auf. -> wenn du in Minimalzeit fertig werden willst, musst du das Fachgebiet beherrschen. Und zwar alle Fachgebiete, die in deinem Studium gefordert werden.
Anh Nguyen schrieb: > Ich bin aber gezwungen Elektrotechnik zu studieren gehen. Wieso, ist > eine lange Geschichte. Hahaha. Mein Beileid. Wie alt bist du? Grüße vom Facharbeiter mit freien Willen.
Karl Heinz schrieb: > Anh Nguyen schrieb: > >> eine lange Geschichte. Ich wollte jetzt nur so schnell wie möglich > > "so schnell wie möglich" bedeutet 'du musst rannklotzen'. Mit der > Betonung auf 'Du'. Denn andere Leute deine Arbeit machen zu lassen > funktioniert in der Technik nicht. Dampfplauderer, die ausser schwafeln > selbst nichts können, fliegen da sehr schnell auf. > > -> wenn du in Minimalzeit fertig werden willst, musst du das Fachgebiet > beherrschen. Und zwar alle Fachgebiete, die in deinem Studium gefordert > werden. Ich habe schon einen Job, der gar nicht mit Elektrotechnik zu tun hat. Und ich wollte auch nie in diesem Bereich arbeiten, muss aber mein Studium fertig machen. Aber wie gesagt, das ist eine lange Geschichte :) Sorry.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.