GELÖST Assembler - Quellcode für Texteingabe

Diskutiere Assembler - Quellcode für Texteingabe im Programmierung Forum im Bereich Programmierung; Hi Ich habe mit Assembler (NASM) ein kleines Betriebssystem erstellt welches einen CPU Check durchführt und das System neu starten kann. :blush...
#1
P

Pinball

Threadstarter
Dabei seit
29.07.2009
Beiträge
58
Alter
24
Hi

Ich habe mit Assembler (NASM) ein kleines Betriebssystem erstellt welches einen CPU Check durchführt und das System neu starten kann. :blush

Hier meine Projekt Seite

Nun möchte ich aber auch, wie in DOS, eine einfache Texteingabe machen. Man sollte einfach einen Text eingeben können, speichern und öffnen brauche ich erst später.

hab schon mit int 21h probiert, habs aber nicht richtig verstanden.

kennt ihr eine gute Seite auf der das gut erklärt wird (hab gegooglet ohne erfolg)

oder habt ihr selber erfahrung mit in 21h oder anderen funktioen?

hoffe ihr könnt mir helfen

Pinball
 
#3
P

Pinball

Threadstarter
Dabei seit
29.07.2009
Beiträge
58
Alter
24
Danke für die schnelle Antwort, aber auf dieser Seite war ich schon mal. Mit der beschreibung kann ich nicht viel anfangen.

Ich hoffe das ihr noch eine gute Seite kennt.

EDIT:

Ein beispiel Code wäre gut. Wenn jemand eine Seite kennt auf der ein Open Source code mit dem int 21h ist möge sich bitte auch melden.

Danke
 
Zuletzt bearbeitet:
#4
S

seppjo

Gast
Ich bin kein 8086 Assembler Profi. Du musst Dir das aber so vorstellen.
21h ist ein funktionsdispatcher. Also vorpogrammierte Systemroutinen.
Insgesamt gibt es wohl 77 dieser Routinen.
http://bbc.nvg.org/doc/Master%20512%20Technical%20Guide/m512techb_int21.htm
An diese musst du Parameter übergeben damit entsprechend die Funktion ausgeführt wird.
http://de.wikibooks.org/wiki/Assembler_(80x86_Prozessor)-Programmierung:_Spr%C3%BCnge_und_Schleifen
Viel detaillierter wirst du das nicht finden.

Beispiel von mir:
Ich will jetzt Funktion 0 nutzen.

z.B.
AH=0 setzen (AH ist immer die Funktionsnummer)
CS=Segment Adresse des PSP
danach kommt int 21h und die Funktion wird ausgeführt.

code:
mov ah, 0
mov cs, pspadd
int 21h

Zum einen input Text lesen solltest du also Funktion 0Ah nutzen.

code:
mov ah,0ah
mov dx,input
int 21h

input: db "255 bytes max",0


Ich hoffe das hilft wir ein wenig. Wie schon gesagt ich bin kein 8086 Assembler Profi. Das hat mich schon immer die Adressierung genervt. Mein liebling war der 68000 Prozessor. :D
 
#5
P

Pinball

Threadstarter
Dabei seit
29.07.2009
Beiträge
58
Alter
24
Ich habs mit deinem Code ausprobiert
code:
mov ah,0ah
mov dx,input
int 21h

input: db "255 bytes max",0

Doch als mein Test PC gestartet hat, hat er nur noch mein "(c)2009 by Sammy Geis" angezeigt. Ich hatte den Code zu meiner v1.2 hinzugefügt. Im anhang ist ein Foto vom Desktop.
 

Anhänge

#6
S

seppjo

Gast
Weisst du überthaupt was du mit diesen Funktionen machst oder tippst du einfach nur ein was ich hier schreibe. So Trivial wirst du in Assembler nicht einen Editor programmieren. Ausserdem programmierst du ja die Routinen gerade nicht selbst sondern rufst mit den 21h Interrupts DOS Routinen auf.
Hast du diese Dokus gelesen und verstanden?
http://bbc.nvg.org/doc/Master%20512%20Technical%20Guide/m512techb_int21.htm

Achso kleiner Nachtrag:
Ich selbst hab bisher noch nie DOS Routinen aufgerufen. Hab nur versucht das Dir ein wenig näher zu bringen.
Hast du die Beispiele aus der Assembler wiki schon getestet? Da ist doch super erklärt wie die das machen mit Biespielprogrammen.
Achso und wenn du kein DOS geladen hast können logischer Weise auch die 21h DOS Interrupts nicht funktionieren.
 
#7
P

Pinball

Threadstarter
Dabei seit
29.07.2009
Beiträge
58
Alter
24
So etwas später aber Winboard könnte ich dauernd nicht aufrufen, jetzt geht es aber wieder.

Ja/nein ich mache "learning by doing". Mit meinem jetzigen code habe ich mich ca. 2 Monate beschäftigt. Hab aus vielen Tutorials gelernt und dann zusammengefasst. Nun möchte ich weiter mit der Texteingabe machen. Da ich aber bis jetzt keine Seite gefunden habe bei der man das einfach lernt, hab ich hier meine frage gestellt.

Ich kenn mich also nur mit meinem jetzigen code aus.

Ich habe aber tatsächlich kein Dos geladen, da ich keins hab. Ausser die Uralten 8" MS-DOS Disketten.

Heute hab ich schon mal einen Code gelernt mit dem ich den Bildschirm "säubern" kann:

clear:
mov ax,03
int 10h
 
#8
S

seppjo

Gast
Ja, es gab ein kleines Problem ;)

Deine Interrupts sind immer schon vorprogrammierte Routinen.
int 10h sind z.B. BIOS Routinen die du durchläufst
http://de.wikibooks.org/wiki/Interrupts_80x86/_INT_10

int 21h sind DOS Befehle. Also kannst du den int 21h und alle weitern DOS Interrupts von deiner Liste streichen, da diese Funktionen ja nicht in deinem System zur Verfügung stehen.

Hier hast du eine Komplettübersicht aller Interrupts auf dem PC. Mit deinem System wirst du nur die BIOS Interrupts nutzen können.
http://de.wikibooks.org/wiki/Interrupts_80x86
Deine Eingaben musst du also mit int 16 machen.
http://de.wikibooks.org/wiki/Interrupts_80x86/_INT_16
Die Stringverwaltung musst du selbst in Assembler coden. Solche Funktionen stehen im BIOS noch nicht zur Verfügung. Machst du aber am Besten über eine Schleife die in einen Speicherbereich schreibt den du in deinem code reserviert hast. Vergesse nicht nach der Schleife eine 0 an den String zu hängen. Damit du das Stringende erkennst.
 
#9
P

Pinball

Threadstarter
Dabei seit
29.07.2009
Beiträge
58
Alter
24
:danke

Die Seite ist echt gut. Ich werde mir alles durchlesen.
Hab anscheinend das mit dem DOS Interrupt übersehen:D

Damit müsste meine Frage gelöst sein.
 
#10
S

seppjo

Gast
Freut mich wenn ich ein wenig helfen konnte. :up
Viel Erfolg beim Assembler Programmieren.
 
Thema:

Assembler - Quellcode für Texteingabe

Sucheingaben

tastatur eingabe assembler

,

assambler eingabe

,

einlesen tastatur assembler

Assembler - Quellcode für Texteingabe - Ähnliche Themen

  • WIKI - Assembler

    WIKI - Assembler: Weiterlesen...
  • WIKI - Assembler

    WIKI - Assembler: Weiterlesen...
  • GELÖST Fragen zu Assembler

    GELÖST Fragen zu Assembler: Obwohl Assembler die reinste Folter für das Gehirn ist, bin ich am überlegen, ob ich es doch lernen sollte. Anscheinend werden immer noch einige...
  • GELÖST Suche freie Assembler 32 und 64 Entwicklungsumgebung

    GELÖST Suche freie Assembler 32 und 64 Entwicklungsumgebung: Hallo, das Thema sagt eigentlich alles. Ich suche ne open Source oder Freeware Entwicklungsumgebung für Assembler. Das Programmieren ist das...
  • Suche "Netwide Assembler" und "RaWrite"

    Suche "Netwide Assembler" und "RaWrite": Kann mir jemand sagen wo ich "Netwide Assembler (NASM)" und "RaWrite" kriege und das kostenlos??
  • Ähnliche Themen

    Oben