Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- org 100h
- section .text
- global _start
- _start: mov DL, 80h
- call readSector
- mov DX, sector;
- call printData
- ; Call to exit
- mov ax, 0x4c00 ; ah == 0x4c al == 0x00
- int 0x21
- ; DL - Drive number (80h first HDD)
- getDriveParameters:
- mov AH, 08h
- int 13h
- mov [driveParameters], AH
- mov [driveParameters+1], BL
- mov [driveParameters+2], DL
- mov [driveParameters+3], DH
- mov [driveParameters+4], CL
- mov [driveParameters+5], CH
- mov [driveParameters+6], byte 36 ; $
- ret
- ; DL - номер диска (0=диск A...; 80H=тв.диск 0; 81H=тв.диск 1)
- ; DH - номер головки чтения/записи
- ; CH - номер дорожки (цилиндра)(0-n) =¬
- ; CL - номер сектора (1-n) ===========¦== См. замечание ниже.
- ; AL - число секторов (в сумме не больше чем один цилиндр)
- ;ES:BX - адрес буфера вызывающей программы
- readSector:
- mov BX, sector
- mov AH, 02h
- mov DL, 80h
- mov CH, 0
- mov CL, 1
- mov AL, 8
- int 13h
- mov [sector+4096], AH
- mov [sector+4097], byte 24h
- ret
- ;DS:DX = адрес строки, заканчивающейся символом '$' (ASCII 24H)
- printData:
- mov AH, 0x9
- int 0x21
- ret
- section .data
- driveParameters times 7 db 0
- sector times 4098 db 0
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement