77 lines
No EOL
984 B
NASM
77 lines
No EOL
984 B
NASM
read_sector:
|
|
push bp
|
|
mov bp,sp
|
|
; +4 block num
|
|
; +6 offset
|
|
; +8 segment
|
|
; +A sector num
|
|
push ax
|
|
push bx
|
|
push dx
|
|
push cx
|
|
|
|
mov ax,word [bp+04h]
|
|
mov bx,18
|
|
xor dx,dx
|
|
div bx
|
|
|
|
; ax - track, dx - sector
|
|
inc dl
|
|
mov cl,dl
|
|
|
|
mov bx,2
|
|
xor dx,dx
|
|
div bx
|
|
|
|
mov ch,al
|
|
shl dx,8
|
|
|
|
mov bx,word [bp+06h]
|
|
mov es,word [bp+08h]
|
|
mov ax,word [bp+0Ah]
|
|
mov dl,byte [drive_num]
|
|
mov ah,02h
|
|
int 13h
|
|
|
|
pop cx
|
|
pop dx
|
|
pop bx
|
|
pop ax
|
|
|
|
mov bp,sp
|
|
pop bp
|
|
ret 08h
|
|
|
|
;read_sector:
|
|
;push bp
|
|
;mov bp,sp
|
|
; +4 block num
|
|
; +6 offset
|
|
; +8 segment
|
|
; +A sector num
|
|
|
|
;mov ax,word [bp+04h]
|
|
;mov word [ata_lbaadrl],ax
|
|
|
|
;mov ax,word [bp+06h]
|
|
;mov word [ata_buf_off],ax
|
|
|
|
;mov ax,word [bp+08h]
|
|
;mov word [ata_buf_seg],ax
|
|
|
|
;mov ax,word [bp+0Ah]
|
|
;mov word [ata_num_sec],ax
|
|
|
|
;push ds
|
|
;mov ax,cs
|
|
;mov ds,ax
|
|
|
|
;mov ah,42h
|
|
;mov dl,80h
|
|
;mov si,ata_packet
|
|
;int 13h
|
|
;pop ds
|
|
|
|
;mov bp,sp
|
|
;pop bp
|
|
;ret 08h |