TheComputaNerd
Gesperrt
Code:
mov ax, 0x1000
mov es, ax
mov ds, ax
mov ah, 2
mov dh, 2
int 10h
mov si, welcome
call print
loop:
mov si, prompt
call print
mov di, buffer
call keyboard
mov si, buffer
cmp byte [si], 0
jc loop
mov si, buffer
mov di, cmd_help
call strcmp
je .help
mov si, buffer
mov di, cmd_h
call strcmp
je .help
mov si, buffer
mov di, cmd_write
call strcmp
je .write
mov si, buffer
mov di, cmd_read
call strcmp
je .read
mov si, badcomm
call print
jmp loop
.help:
mov si, command1
call print
jmp loop
.write:
mov ax, 0x2000
mov es, ax
mov bx,0
mov ah, 2
mov al, 1
mov dl, 0
mov dh, 1
mov ch, 0
mov cl, 7
int 13h
jc loop
.read:
mov ax, 0x2000
mov es, ax
mov bx,0
mov ah, 2
mov al, 1
mov dl, 0
mov dh, 1
mov ch, 0
mov cl, 7
int 13h
je loop
mov si, yes
call print
jmp loop
yes db "a byte was found in the 7th sector", 13, 10, 0
cmd_read db "read", 0
cmd_write db "write", 0
command1 db "folgende kommandos stehen ihnen zur verf", 129, "gung:", 13, 10, 0
badcomm db "es wurde ein unbekannter befehl eingegeben", 13, 10, 0
cmd_help db "help", 0
cmd_h db "-h", 0
prompt db "#>", 0
welcome db "nerdix version 0.1.0", 13, 10, 0
buffer times 64 db 0
print:
lodsb
or al, al
jz .done
mov ah, 0eh
int 10h
jmp print
.done:
ret
keyboard:
xor cl, cl
keyboard1:
mov ah, 0
int 0x16 ; wait for keypress
cmp al, 0x0D ; enter pressed?
je .return
mov ah, 0x0E
int 0x10 ; print out character
stosb ; put character in buffer
inc cl
jmp keyboard1
.return:
mov al, 0
stosb
mov ah, 0x0E
mov al, 0x0D
int 0x10
mov al, 0x0A
int 0x10 ; newline
ret
strcmp:
mov al, [si]
mov bl, [di]
cmp al, bl
jne .not
cmp al, 0
je done
inc di
inc si
jmp strcmp
.not:
clc
ret
done:
stc
ret
times 512 - ($ - $$) hlt
wenn ich read oder write eingebe, dann gehe ich halt zurück zu der main funktion, aber die eingabe dann ist nicht ,ehr gültig. also es ignoiert es sozusagen. noch was:
wenn ich write eingebe, soll es eigentlich was in ein sektor schreiben. es sollte dann acuh eine anchricht in den terminal kommen(in linux unter qemu), dass es da rein geschrieben wurde. aber leider kommt da keine nachricht. ich bibn echt sprachlos
