2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




 
 Вывести на экран содержимое сектора диска A [Упр. BIOS]
Сообщение07.06.2011, 07:05 
я начал писать и вроде считывает с сектора но не то наверное.и не знаю как вывести на экран,не работает правильно(
если возможно помогите пожалуйста.
код: [ скачать ] [ спрятать ]
Используется синтаксис Pascal
begin
asm
mov al,01h
mov ah,02h

mov ch, 00h
mov cl, 01h
mov dh, 00h
mov dl, 00h

mov ax,cs
mov es,ax
{mov ah, 02h
mov al, 01h}


int 13h

mov si,bx

mov di,2
mov cx,di
lea dx,cx

{mov ah,09h
lea dx,es
int 21h}


mov ah,40h
int 21h

end;
 

 
 
 
 Re: вывести на экран содержимое сектора диска A(Floppy)
Сообщение07.06.2011, 11:19 
А почему именно floppy - 13-е прерывание позволяет читать любые диски/блочные устройства. А флоппи сейчас днем с огнем не сыщешь.

 
 
 
 Re: вывести на экран содержимое сектора диска A(Floppy)
Сообщение07.06.2011, 14:15 
можно и на флешку,я не знал что прокатит.я не знаю как вывести на экран содержимое.

 
 
 
 Re: вывести на экран содержимое сектора диска A(Floppy)
Сообщение08.06.2011, 12:36 
zombie2478 в сообщении #454986 писал(а):
я начал писать и вроде считывает с сектора но не то наверное
При вызове функции чтения секторов (int 13h, ah=02h), необходимо в регистровой паре es:bx передать указатель (far ptr) на буфер чтения.
Выводить содержимое сектора можно, конечно, как у Вас (нужно только правильно определить значения регистров при вызове: bx=1 (stdout), ds:dx - указатель на буфер вывода, cx - количество байт для вывода). В итоге имеем:
код: [ скачать ] [ спрятать ]
Используется синтаксис ASM
    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).

 
 
 
 Re: вывести на экран содержимое сектора диска A(Floppy)
Сообщение08.06.2011, 21:45 
спасибо

 
 
 [ Сообщений: 5 ] 


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group