Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

loading kernel i ispisivanje stringova

[es] :: Asembler :: loading kernel i ispisivanje stringova

[ Pregleda: 2517 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

glupi

Član broj: 836
Poruke: 199
*.cmu.carnet.hr.



Profil

icon loading kernel i ispisivanje stringova24.12.2004. u 21:09 - pre 200 meseci
Imam jedan problem koji vjerujem da nije kompliciran za rijesit ali meni predstavlja problem. Imam loader koji ide na prvi sektor diskete i koji ispise nesto i ucita kernel koji se isto nalazi na disketi iza loadera. On ljepo ucita taj kernel (dobro nije to kernel ali ce valjda postat jednog dana) i mogu iz njega ispisivat karaktere ali ne i stringove. Zasto i kako?
Probao sam i sa forom call pa pop adresu stringa ali isto nije htio ispisat string.


loader
Code:

[ORG 0]
jmp 07C0h:start

banner  db      '_______ Loader',13,10,0

start:
        mov ax, cs
        mov ds, ax
        mov es, ax

        mov si, banner
stat:
        lodsb

        cmp al, 0
        je reset_floppy

        mov ah, 0Eh
        mov bx, 7
        int 0x10

        jmp stat


reset_floppy:                     
        mov ax, 0          
        mov dl, 0           
        int 13h            
        jc reset_floppy            


read_floppy:
        mov ax, 1000h       
        mov es, ax          
        mov bx, 0           

        mov ah, 2           ; Load disk data to ES:BX
        mov al, 12          ; Load 5 sectors
        mov ch, 0           ; Cylinder=0
        mov cl, 2           ; Sector=2
        mov dh, 0           ; Head=0
        mov dl, 0           ; Drive=0
        int 13h             ; Read!
        jc read_floppy             

        mov ah,0eh
        mov al, 41h
        mov bx, 7
        int 0x10

        jmp 1000h:0000      ; Jump to the program


times 510-($-$$) db 0
dw 0AA55h



kernel
Code:


[ORG 0]

jmp main

s_mesg  db      'kernel v0.1 LOADED',13,0
s_help  db      'H - help',13,10,'R - reboot',13,10,0

main:
        mov si, s_mesg
        call prints
        mov si, s_help
        call prints
        jmp read

prints:
        lodsb

        cmp al, 0
        je read

        mov ah, 0Eh
        mov bx, 7
        int 0x10

        jmp prints
        ret

read:
        xor ah,ah ;u al slovo
        int 0x16

        cmp al, 48h
        call help
        cmp al, 52h
        jmp reboot

        call printc
        jmp read

help:
        mov si, s_help
        call prints
        ret

printc:
        mov ah, 0Eh
        mov bx, 7
        int 0x10
        ret

reboot:
        int 0x19
 
Odgovor na temu

BaCkSpAcE

Član broj: 10
Poruke: 518
*.vdial.verat.net.



Profil

icon Re: loading kernel i ispisivanje stringova02.01.2005. u 00:11 - pre 200 meseci
Greska je u tzv. kernelu:
Code:
 
read:
        xor ah,ah ;u al slovo
        int 0x16

        cmp al, 48h
        call help
        cmp al, 52h
        jmp reboot

        call printc
        jmp read


Ne mozes posle cmp da ides call, vec moras neki jump, ali sa nekim uslovom (je, jne, jz...)... U tvom slucaju bi najbolje bilo da umesto call help napises je help, ali bi onda morao i help da prepravis... posto ga vise ne pozivamo sa call, onda nam ne treba ret, vec umesto toga pisemo jmp read... To bi bilo to...
 
Odgovor na temu

Sundance

Član broj: 7510
Poruke: 2559
*.sava.sczg.hr.



Profil

icon Re: loading kernel i ispisivanje stringova04.01.2005. u 00:17 - pre 200 meseci
http://www.elitesecurity.org/tema/83766
 
Odgovor na temu

[es] :: Asembler :: loading kernel i ispisivanje stringova

[ Pregleda: 2517 | Odgovora: 2 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.