INT 13 im C Programm



  • moin

    Ich möchte in meinen C Programm eine Assembler Routine mit einbauen, zum Physikalischen lesen von der Diskette

    hier die Assembler Routine

    __asm
    {
        push es
    
        //mov ES:BX, test ????
    
        mov ah, 2
        mov al, 1  ; Anzahl Sectoren
        mov ch, 0  ; Spur
        mov cl, 1  ; Sector
        mov dh, 0  ; Seite
        mov dl, 0  ; Laufwerk
        int 13h
    
        pop es
    
    }
    

    in ES:BX werden die Daten reingeschrieben (512 Byte)
    mit Push/Pop habe ich versucht das Register ES zu sichern, funzt aber nicht so.......es gibt da einen Schweren Fehler

    hat jemand eine Idee wie ich die Daten in den Buffer cBuffer[600]=""; reingeschrieben bekomme ?

    MfG



  • Vielleicht so:

    __asm
    {
        push es
    
        mov AX, seg Test
        mov ES, AX
        mov BX, offset Test
    
        mov ah, 2
        mov al, 1  ; Anzahl Sectoren
        mov ch, 0  ; Spur
        mov cl, 1  ; Sector
        mov dh, 0  ; Seite
        mov dl, 0  ; Laufwerk
        int 13h
    
        pop es
    }
    

    Das __asm keyword sieht mir nach visual c++ aus. Verwendest du ganz sicher einen 16bit compiler?

    [ Dieser Beitrag wurde am 18.08.2002 um 12:12 Uhr von cd9000 editiert. ]



  • Das Problem an sich hat ja nicht viel mit dem int 13h zu tun, aber was solls...

    Mit "offset" funktioniert das bei MS VC++ jedenfalls net, das habe ich schon probiert... Leider weiss ich auch net, wie man sonst das Offset herausbekommen koennte 😕


Anmelden zum Antworten