я начал писать и вроде считывает с сектора но не то наверное
При вызове функции чтения секторов
(int 13h, ah=02h), необходимо в регистровой паре
es:bx передать указатель
(far ptr) на буфер чтения.
Выводить содержимое сектора можно, конечно, как у Вас (нужно только правильно определить значения регистров при вызове:
bx=1 (stdout),
ds:dx - указатель на буфер вывода,
cx - количество байт для вывода). В итоге имеем:
mov ax, cs
mov es, ax
mov bx, offset buf
mov ax, 0201h ; чтение сектора, кол-во секторов
mov cx, 1 ; дорожка, сектор
mov dx, 0 ; головка, номер устройства
int 13h
jc err ; ошибка?
push ds
mov ax, cs
mov ds, ax
mov dx, bx
mov bx, 1 ; stdout
mov cx, 512
mov ah, 040h
int 21h
pop ds
err:ret
buf:db 512 dup(?)
Но это хорошо, если в считанном секторе печатаемые символы, например, какой-либо текст. А в общем случае выводят т.н. дамп (пример - команда
D утилиты
debug).