App installieren
How to install the app on iOS
Follow along with the video below to see how to install our site as a web app on your home screen.
Anmerkung: This feature may not be available in some browsers.
Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
Assembler für Anfänger
- Ersteller megatron
- Erstellt am
megatron
Vice Admiral Special
- Mitglied seit
- 27.03.2003
- Beiträge
- 999
- Renomée
- 0
- Prozessor
- A64 3800+
- Mainboard
- MSI mit KT800
- Kühlung
- Arctic Cooling
- Speicher
- 2x512MB
- Grafikprozessor
- Ati Radeon X850XT
- HDD
- Seagate 160GB, Hitachi 250GB IDE
- Optisches Laufwerk
- Pioneer DVD, LG DVDRW
- Soundkarte
- CL Audigy 4
- Netzteil
- Enermax
Hab irgendwie leichtfertig nen Kurs in Assemblerprogrammierung belegt und hab nun ein kleines Problem damit.
Konkret mit einer wahrscheinlich recht einfachen Aufgabe...
Es geht darum eine Zahl als String in einem kleinen C-Programm einzulesen, diese dann an eine Assember-Datei zu übergeben, in der die Länge des String ermittelt wird. Danach soll das ganze in eine BCD-Zahl umgewandlt werden die wiederum als String zurück gegeben wird.
Gegeben ist folgendes Beispiel:
"3514622130" sollte im Hexdump 00 00 00 00 00 35 14 62 21 30 liefern
Nach einigem rumprobieren funktioniert zumindest schonmal das ermitteln der Stringlänge bei vorgegebenen Arrays als String (char[])
Sobald ich aber mit printf oder scanf im Main anfange schwankt das ganze zwischen wirren Returnwerten und Speicherzugriffsfehlern.
Hat zufällig einer Ahnung was da wie zu machen ist?
Konkret mit einer wahrscheinlich recht einfachen Aufgabe...
Es geht darum eine Zahl als String in einem kleinen C-Programm einzulesen, diese dann an eine Assember-Datei zu übergeben, in der die Länge des String ermittelt wird. Danach soll das ganze in eine BCD-Zahl umgewandlt werden die wiederum als String zurück gegeben wird.
Gegeben ist folgendes Beispiel:
"3514622130" sollte im Hexdump 00 00 00 00 00 35 14 62 21 30 liefern
Nach einigem rumprobieren funktioniert zumindest schonmal das ermitteln der Stringlänge bei vorgegebenen Arrays als String (char[])
Sobald ich aber mit printf oder scanf im Main anfange schwankt das ganze zwischen wirren Returnwerten und Speicherzugriffsfehlern.
Hat zufällig einer Ahnung was da wie zu machen ist?
Ich kenn mich mit den Zahlenformaten leider nicht so wirklich aus (bei signed/unsigned integer nach big/little endian hörts auf ... a bisserl Float kenn ich auch noch).
Schau mal im Netz nach "The Art of Assembly Language" - das Assemblerbuch überhaupt. Kostenlos
Schreib einfach mal wie so eine BCD Zahl auszusehen hat, vielleicht kann ich dir dann weiterhelfen - bin bis Sonntag Abend aber net da.
Ach ja - 8086, 386 Real Mode oder 386 Protected Mode Assembler?
Schau mal im Netz nach "The Art of Assembly Language" - das Assemblerbuch überhaupt. Kostenlos
Schreib einfach mal wie so eine BCD Zahl auszusehen hat, vielleicht kann ich dir dann weiterhelfen - bin bis Sonntag Abend aber net da.
Ach ja - 8086, 386 Real Mode oder 386 Protected Mode Assembler?
AFAIR wird bei den BCD jeweils ein Nibble zur Darstellung der zehn Ziffern des Dezimalsystems verwendet, d.h. 0x0 bis 0x9 stellen die dezimalen Ziffern 0..9 dar, 0xA..0xF bleiben ungenutzt. D.h. 10 würde man in BCD als 0x10 darstellen etc.
Exr
Vice Admiral Special
- Mitglied seit
- 24.07.2002
- Beiträge
- 634
- Renomée
- 3
Speicher- und Zugriffsfehler hört sich für mich erstmal nach unsachgemässem Gebrauch von scanf an. Dort muss immer die Adresse der Variablen stehen, in die die Daten eingelesen werden.
Beispiel:
Nur um hier fundamentale Probleme auszuschließen.
exr
Beispiel:
Code:
int A;
scanf("%d",&A);
Nur um hier fundamentale Probleme auszuschließen.
exr
Sargnagel
Commodore Special
- Mitglied seit
- 31.12.2001
- Beiträge
- 477
- Renomée
- 1
Ich hoffe, Dein String ist mit '\0' terminiert! Wenn nicht, dann wundern mich die Fehler im Zusammenhang mit printf/scanf überhaupt nicht.Original geschrieben von megatron
Nach einigem rumprobieren funktioniert zumindest schonmal das ermitteln der Stringlänge bei vorgegebenen Arrays als String (char[])
Sobald ich aber mit printf oder scanf im Main anfange schwankt das ganze zwischen wirren Returnwerten und Speicherzugriffsfehlern.
Hat zufällig einer Ahnung was da wie zu machen ist?
Exr
Vice Admiral Special
- Mitglied seit
- 24.07.2002
- Beiträge
- 634
- Renomée
- 3
Original geschrieben von Sargnagel
Ich hoffe, Dein String ist mit '\0' terminiert! Wenn nicht, dann wundern mich die Fehler im Zusammenhang mit printf/scanf überhaupt nicht.
Haha! Das erzeugt immer die coolsten Fehler. Da schreibt man zwei Strings in den Speicher, wobei einer nicht mit '\0' abgeschlossen ist. Ergebnis: beim Ausgeben des ersten Strings hängt der zweite hinten an. Wenn man da nicht sofort drauf kommt, dass das '\0' fehlt, kann man ganz schön viel Zeit damit verbringen nach der Lösung zu suchen!
exr
1. hast du beim übergeben beachtet den base pointer zu retten .. etc.
2. wie beschreibst du den string ? normal ist das ja eine anordung von zeichen, welchen dann in hex scheibweise, ganz andere hexgrößen haben => ascii
2. wie beschreibst du den string ? normal ist das ja eine anordung von zeichen, welchen dann in hex scheibweise, ganz andere hexgrößen haben => ascii
mj
Technische Administration, Dinosaurier, ,
- Mitglied seit
- 17.10.2000
- Beiträge
- 19.529
- Renomée
- 272
- Standort
- Austin, TX
- Mein Laptop
- 2,4kg schwer
- Prozessor
- eckig... glaub ich
- Mainboard
- quadratisch, praktisch, gut
- Kühlung
- kühler?
- Speicher
- ja
- Grafikprozessor
- auch
- Display
- viel bunt
- HDD
- ist drin
- Optisches Laufwerk
- ist auch drin (irgendwo)
- Soundkarte
- tut manchmal tuuut
- Gehäuse
- mit aufkleber!
- Netzteil
- so mit kabel und so... voll toll
- Betriebssystem
- das eine da das wo dingenskirchen halt, nech?
- Webbrowser
- so ein teil da... so grün und so
- Verschiedenes
- nunu!
Hast du denn getestet, ob die Übergabe des Strings an das Assembler-Programm korrekt funktioniert?
megatron
Vice Admiral Special
- Mitglied seit
- 27.03.2003
- Beiträge
- 999
- Renomée
- 0
- Prozessor
- A64 3800+
- Mainboard
- MSI mit KT800
- Kühlung
- Arctic Cooling
- Speicher
- 2x512MB
- Grafikprozessor
- Ati Radeon X850XT
- HDD
- Seagate 160GB, Hitachi 250GB IDE
- Optisches Laufwerk
- Pioneer DVD, LG DVDRW
- Soundkarte
- CL Audigy 4
- Netzteil
- Enermax
Hab mittlerweile nochmal so gescahut - ich glaub ich hab da bissle was vergessen gehabt - sowas wie cld ist gewiss nicht verkehrt
Ich musste feststellen dass der Prof da während der Übung sogar weitere Tips gegeben hatte. "Dummerweise" war ich da irgendwie eher abwesend...
Aber thx für die vielen Antworten - ich sollte hier vielleicht doch ab und an mal vorbei schauen
Ich musste feststellen dass der Prof da während der Übung sogar weitere Tips gegeben hatte. "Dummerweise" war ich da irgendwie eher abwesend...
Aber thx für die vielen Antworten - ich sollte hier vielleicht doch ab und an mal vorbei schauen