Beiträge anzeigen

Diese Sektion erlaubt es dir alle Beiträge dieses Mitglieds zu sehen. Beachte, dass du nur solche Beiträge sehen kannst, zu denen du auch Zugriffsrechte hast.


Nachrichten - PMTheQuick

Seiten: 1 [2]
21
Lowlevel-Coding / Re: Ein paar Fragen...
« am: 17. April 2007, 12:39 »
Danke Danke Danke  :-) Habs jetzt geschafft mit nur folgenden Zeilen:

1x im Code_times db 2562x im Codemov cx,_times
Weiss jemand jetzt noch was der C++ Fehler bedeutet?

Gruss
PMTheQuick  8-)

EDIT: Und jetzt versuch ich mal in den Protected Mode zu wechseln ...
22
Lowlevel-Coding / Re: Ein paar Fragen...
« am: 16. April 2007, 17:25 »
Ok Danke. Das geht nunmal. Zu Limit stimmt es kommt immer "CS.Limit" und anderes bei Bochs... Wie muss ich es proggen, das das Limit weg ist und ich unendliche Zeichenketten kann speichern?

Gruss
PMTheQuick ;)
23
Lowlevel-Coding / Ein paar Fragen...
« am: 16. April 2007, 16:58 »
Hi,

also ich hab jetzt nen funktionierenden C++-Kernel dank einem Tutorial... (PS: http://biehler-josef.de/ Echt gut, sogar nen Tutorial wie man nen Brainfuck-Interpreter schreibt... :) )... Nun, das geht ja alles... Hab auch nen Befehl um Texte auszugeben und Texte einzulesen (Solange einlesen bis Enter gedrückt wird...) Nun, jetzt habe ich nen paar Fragen:

1. Bei jeder Compilierung mit dem TurboC++-Compiler gibts ne Warnung aus:
Turbo C  Version 2.01  Copyright (c) 1987, 1988 Borland International
kernel.cpp:
Warning kernel.cpp 16: Non-portable pointer assignment in function main

        Available memory 434810

2. Wenn man beim eingeben die RückTaste drückt, geht nur der Cursor zurück, der Text bleibt also... Beispiel:

Cursor ganz hinten: PMTheQuick_
Jetzt drück ich die Rücktaste nen paar mal: PMTheQuick
Es sollte aber so aussehen: PMTheQ_

3. Nach einigen Zeichen bleibt es auf einmal hängen und geht nicht mehr weiter... Ich will aber auch lange Strings ermitteln können! Was ist das Problem :?

4. Sollte ich noch irgendetwas verbessern daran?

Meine Proggis:
NASM
Turbo C++ Compiler 2.01
JLoc

So... Und nun noch mein Code:

start.asm
[BITS 16]
EXTERN _main
start:

jmp 07c0h:main_entry

main_entry:
mov ax,cs
mov ds,ax
mov es,ax
cli
mov ss,ax
mov sp,9000h
sti


mov ah,02h
mov al,1
mov cl,2
mov ch,0
mov dl,0
mov dh,0
lea bx,[kernel]
int 13h


call _main
jmp $

;##Funktion zur Stringausgabe / Begrenzungszeichen: ASCII 0
GLOBAL _boot
_boot db "QuickOS 1.00",13,10,0
GLOBAL _enter
_enter db "ENTER",13,10,0
GLOBAL _newline
_newline db 13,10,0

GLOBAL _prnt
_prnt:
push bp
mov bp, sp
push ax
push si
mov ax, [bp + 4]
mov si,ax

prnt1:
mov al,[si]
cmp al,0
JE prnte
inc si
mov ah,0eh
int 10h
jmp prnt1

prnte:
pop si
pop ax
pop bp
ret

GLOBAL _strget
_strget:
       xor ah,ah ; Funktion 00h
       int 16h     ; Ausfüren
       cmp al, 0Dh ; Enter
       je short str_get_end ; Wenn Enter dann beenden
          mov [si], al   ; Speichere Zeichen
          inc SI
              mov ah, 0Eh   ; Ausgabe
              mov bx, 0007h
              int 10h
       jmp _strget          ; Neustart
       str_get_end:         ; String mit 0 Beenden
       xor al,al
       mov [si], al
       ret

times 510-($-$$) db 0 ;wichtig: Hier die Datei mit so vielen Bytes füllen, bis es genau 510 sind
dw 0aa55h ;Bootsignatur anhängen
kernel:

kernel.cpp
extern prnt(char *var);
extern strget();
extern char boot;
extern char enter;
extern char newline;

int main()
{
char *str;
char key[2];
int i;
str=&boot;
prnt(str);

while(1) {
str=strget();
prnt(str);
prnt(&newline);
}

}

make.txt
ALL:
start.obj
kernel.obj
DATA: 0F0000 MAIN.after MAIN.i_after
*,DGROUP
,,,FONT
FINAL: 0F0000 100000-FINAL.length FINAL.start-0F0000
*,kernel.obj
MAIN: 0F0000 0F0000 0
*

compile.bat
@echo OFF
nasm -f obj start.asm -o start.obj
tcc -c kernel.cpp
jloc make.txt kernel.bin
PAUSE

So... Danke im vorraus,

Gruss
PMTheQuick ;)

EDIT: Ich will es mit dem C++ Kernel übrigens UNBEDINGT so lassen, das Booten & Funktionen in ASM und Funktionen-Aufrufe in C++ sind....  :-)
Seiten: 1 [2]

Einloggen