INT 13h AH=00h resets the disk controller and recalibrates the drive: the heads go back to cylinder 0 so that the controller knows where they are again. Nothing on the disk changes. After a failed read, write or seek it brings the hardware back into a known state, and the next attempt often works. For a hard disk number (80h and up) most BIOSes reset the floppy controller as well.

The classic retry loop:

MOV SI, 3 ; three tries
TRY1:
MOV AX, 0201h ; read one sector
INT 13h ; (CX, DX, ES:BX set up before)
JNC OK1 ; success
MOV AH, 00h ; failed: reset the drive...
INT 13h ; (DL still holds the drive)
DEC SI
JNZ TRY1 ; ...and try again
; three failures: report the error
OK1:

The example resets the first hard disk and then reads the status of the last operation with AH=01h:

prints: reset 80h: ok, last status 00
MOV AH, 00h ; BIOS disk: reset
MOV DL, 80h ; the first hard disk
INT 13h
MOV DX, OFFSET OK1
JNC SHOW1 ; CF = 0: done
MOV DX, OFFSET BAD1
SHOW1:
MOV AH, 09h
INT 21h
MOV AH, 01h ; BIOS disk: status of the last operation
MOV DL, 80h
INT 13h ; AH = status, 00h = no error
MOV AL, AH
CALL PHEX2
OK1 DB "reset 80h: ok, last status $"
BAD1 DB "reset 80h: failed, last status $"
PHEX2 PROC NEAR ; print AL as two hex digits; keeps every register
PUSH AX
PUSH CX
PUSH DX
MOV DH, AL ; keep the byte
MOV CL, 4
SHR AL, CL ; the high nibble
CALL HEXN1
MOV AL, DH
AND AL, 0Fh ; the low nibble
CALL HEXN1
POP DX
POP CX
POP AX
RET
HEXN1:
ADD AL, "0"
CMP AL, "9"
JBE HEXN2
ADD AL, 7 ; past "9": "A".."F"
HEXN2:
MOV DL, AL
MOV AH, 02h
INT 21h
RET
PHEX2 ENDP

Pitfalls

Do not reset after every successful operation: a recalibration moves the heads to track 0 and costs time. On a floppy, error 06h (disk changed) is not a failure but a warning that the disk in the drive is a new one; retry, and drop anything cached from the old disk. In DOSBox-X the reset always succeeds when no disk images are attached, since there is no controller state to lose.