Assembler ladowanie danych z sektoru

0

Witam,

Potrzebuje wczytac sektory z dysku (dyskietka 1.44m) uzywajac przerywnika 13.2h w NASM assemblerze 8086. Na ekranie powinny byc wyswietlane po 16 bajtow w kazdej linijce jako hex, i na poczatku linijki offset pamieci, niestety cos mi nie wychodzi i nie bardzo rozumiem jak ma to dzialac.

Rutyny do wczytywania:
https://gist.github.com/anonymous/a94894d6a8713197952f9df069c174dd

Rutyny do wyswietlania hex i numerow:
https://gist.github.com/anonymous/8acab8cb8240c0bed0d4c7961f45511d

Aktualnie wyglada to tak:
https://gist.github.com/anonymous/40eb8a70cbf6acd310bc61f9fc170a47

w przerywniku 13.2h pisze ze buffer to es:bx - nie do konca rozumiem co mam tutaj zrobic. Moge dac jakis adress np 0D000h i wtedy do niego pomiedzy 0d000h a 0d512h bedzie zaladowany sektor, i uzywajac czegos jak mov bx, 0d000h+1 moge odczytywac te dane czy kompletnie zle to rozumiem?

Dzieki za pomoc

0

buffer to es:bx - nie do konca rozumiem co mam tutaj zrobic. Moge dac jakis adress np 0D000h i wtedy do niego pomiedzy 0d000h a 0d512h bedzie zaladowany sektor

Jak już to między 0D000h a 0D1FFh włącznie.

; On input:
; CX = Number of sectors to read
; AX = Starting sector
; ES:BX => Buffer to read to

ES:BX oznacza że do tych rejestrów zapisujesz adres bufora do którego dane będą czytane. Jeśli czytasz jeden sektor, wystarczy 512 bajtów.
Możesz sobie uprościć sprawę segmentu es, wykonując sekwencję

push ds
pop es

w ten sposób es będzie tym samym co ds, czyli „domyślnym” segmentem danych programu.
sam bufor pod NASMem rezerwujesz sobie tak

bufor resb 512

Pełne wywołanie funkcji ReadSectors wyglądałoby tak:

push ds
pop es
...
mov cx,1
mov ax, 999 ; nr sektora
mov bx, bufor
call ReadSectors
...
bufor resb 512
0

Dzieki za odpowiedz. Sektor laduje sie do buforu.

Kod:
https://gist.github.com/anonymous/d29a80b0b05840f8f34fd88bd7a1fa4e

Z jakiegos powodu mi inaczej sie troszke wyswietla niz skonczonego boot loadera.

na moim wyswietla sie: 9DE9 019D 0001
a na skonczonym: E9 9D 01 00

1 użytkowników online, w tym zalogowanych: 0, gości: 1