In .txt schreiben
-
Hallo, ich möchte in eine Datei (.txt) schreiben die sich im Register AA befindet.
Ich möchte aber nicht das das so aussieht:Test1Test2Test3
Sondern so:
Test1 Test2 Test3
Hat wer eine Idee
LG
-
Hallo.
Ein Register mit dem Namen AA worin sich eine Datei befinden soll, kenne ich zwar nicht, aber dafür kann man CR(13) und LF(10) verwenden, welche die Ausgabe jeweils an den Anfang der nächsten Zeile setzt.Der Inhalt der Datei sollte dann so aussehen:
"Test1",10,13,"Test2",10,13,"Test3"Dirk
-
Wie nutzt man das denn? Google sagt nichts...
-
LightBoom schrieb:
Wie nutzt man das denn? Google sagt nichts...
Für die Zeichen-Ausgabe am Bildschirm bei einer x86-CPU im Real-Mode oder im V86-Mode über die BIOS-Funktion "TELETYPE OUTPUT" werden auch Steuerzeichen wie 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) enspechend ausgeführt.
--------V-100E-------------------------------
INT 10 - VIDEO - TELETYPE OUTPUT
AH = 0Eh
AL = character to write
BH = page number
BL = foreground color (graphics modes only)
Return: nothing
Desc: display a character on the screen, advancing the cursor and scrolling
the screen as necessary
Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
and do the expected things
IBM PC ROMs dated 1981/4/24 and 1981/10/19 require that BH be the same
as the current active page
BUG: if the write causes the screen to scroll, BP is destroyed by BIOSes
for which AH=06h destroys BP
SeeAlso: AH=02h,AH=06h,AH=0AhWie man eine Datei Erzeugen, Beschreiben, oder in den Speicher laden und anzeigen lassen kann hängt aber ganz von dem verwendeten OS ab.
Für welche Zielplattform soll es denn eigentlich sein?Dirk
-
Für mein kleines Hobby OS
-
LightBoom schrieb:
Für mein kleines Hobby OS
Dann wird es etwas komplizierter.
Weil im Bios selber gibt es keine Funktionen zum Laden und Beschreiben von Dateien, weil das richtet sich auch nach dem verwendeten Dateisystem.
Sondern es gibt dann nur den "int 13h", womit man von einem Datenträger bestimmte Sectoren laden und beschreiben kann.File Allocation Table
http://de.wikipedia.org/wiki/File_Allocation_TableINT_13H
http://en.wikipedia.org/wiki/INT_13HDirk
-
Danke Dirk, aber das ganze sollte eigentlich im RAM gemacht werden, weil ich noch keinen Dateisystemtreiber habe.
-
Dann definiere doch mal, was eine Datei für Dich ist.
-
Das sind Bits, und ich meinte so was wie HFS+, NTFS, FAT12/16/32, ext2/3/4, exFAT, ...
-
Dann gibt es auch noch die Möglichkeit den Textbildschirm selber zu beschreiben.
mov ax,cs mov ds,ax mov ax,0B800h ; Segment-Adresse vom Textbildschirm mov es,ax mov ah,3 ; Offset-Adresse des Textbildschirms berechnen xor bh,bh ; von der Cursorposition int 10h xor cx,cx add dl,dl ; Spalte (verdoppeln) mov cl,dl xor ax,ax mov al,dh ; Zeile mov bx,160 ; Anzahl Bytes einer Zeile(ASCII,Attribut,..) mul bx mov dx,ax ; Zeilen-Offset merken add ax,cx ; Zeile+Spalte mov di,ax ;-------------- lea si,T1 mov cx,T1_len cld R1: lodsb ; get byte from DS:SI stosb ; store byte in ES:DI inc di ; jump over attribut byte loop R1 add dx,160 ; in die nächste Zeile mov di,dx lea si,T2 mov cx,T2_len R2: lodsb ; get byte from DS:SI stosb ; store byte in ES:DI inc di ; jump over attribut byte loop R2 add dx,160 ; in die nächste Zeile mov di,dx lea si,T3 mov cx,T3_len R3: lodsb ; get byte from DS:SI stosb ; store byte in ES:DI inc di ; jump over attribut byte loop R3 jmp $ T1 DB "Test1" T1_len = ($-T1) ; $ = Offset-Adresse von dieser Stelle T2 DB "Test2" T2_len = ($-T2) T3 DB "Test3" T3_len = ($-T3)
Ich hoffe das ich dort keinen Fehlen mit eingebaut habe.
Sonst bitte bescheid sagen.RBIL->inter61a.zip->INTERRUP.A
--------V-1003-------------------------------
INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
AH = 03h
BH = page number
0-3 in modes 2&3
0-7 in modes 0&1
0 in graphics modes
Return: AX = 0000h (Phoenix BIOS)
CH = start scan line
CL = end scan line
DH = row (00h is top)
DL = column (00h is left)
Notes: a separate cursor is maintained for each of up to 8 display pages
many ROM BIOSes incorrectly return the default size for a color display
(start 06h, end 07h) when a monochrome display is attached
With PhysTechSoft's PTS ROM-DOS the BH value is ignored on entry.
SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h,MEM 0040h:0050h,MEM 0040h:0060hDirk
-
Was freecrac da oben für den Zeilenumbruch anspricht, sind "ASCII"-Codes: http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
-
92 schrieb:
Was freecrac da oben für den Zeilenumbruch anspricht, sind "ASCII"-Codes: http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange
Oder genauer gesagt solche Steuerzeichen:
http://de.wikipedia.org/wiki/SteuerzeichenDirk