Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler
Регистрация

Восстановить пароль
Повторная активизация e-mail

Ответ
 
Опции темы
Старый 25.03.2010, 14:27   #1
SoundMan
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 27
Репутация: 17
По умолчанию Проблема с int 13h, ah = 02h.

Пытаюсь считать с дискеты 2-ой сектор (в первом находится мой код), но вместо данных в память пишутся одни нули. После вызова int 13h: carry flag сброшен, в ah - 00h (то есть считывание прошло без ошибок) а в al почему-то 02h, хотя я считываю всего один сектор. В памяти по адресу 1000h:0000h - нули. Вот код:

Код:

        org 7c00h
main:
        mov ax, 0h
	mov ds, ax
        ...

        mov ax, 0x1000          ;будем считывать в 1000h:0000h
	mov es, ax
	xor bx, bx
	mov cl, 02h               ;считываем второй сектор
	mov ah, 02h              ;функция считывания
	mov al, 1                  ;кол-во секторов для считывания
	mov ch, 0                 ;цилиндр
	mov dh, 0                 ;головка
	;mov dl, 00h  ;dl не трогаем, биос сам выставляет, откуда происходит загрузка                  
	int	13h 

        jmp 1000:0000          ;прыгаем и попадаем на нули.
times 510 - ($ - main) db 00h
db 055h, 0aah 
times 512 db 0AAh

Запускал на emu8086, BOCHS, VMWare - везде одно и тоже. Рекалибрация дискеты перед считыванием данных тоже не помогает. Что же я делаю не так?
SoundMan вне форума   Ответить с цитированием
Старый 25.03.2010, 14:53   #2
airyashov
Форумчанин
 
Регистрация: 02.04.2008
Сообщений: 358
Репутация: 117
По умолчанию

на чем пишем-то?
вариант 1, во 2 секторе действительно 0
__________________
неплохо пишу на ассемблере для 80х86
icq: 3(один)7748666
mail: airyashov(а)inbox.ru
airyashov вне форума   Ответить с цитированием
Старый 25.03.2010, 15:22   #3
SoundMan
Пользователь
 
Регистрация: 25.05.2008
Сообщений: 27
Репутация: 17
По умолчанию

Пишу на fasm. Нулей там быть не может, я же использую times 512 db 0AAh, т.е. заполняю второй сектор дискеты 0AAh
SoundMan вне форума   Ответить с цитированием
Ответ

Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
int **x Di3el Общие вопросы C/C++ 11 16.12.2009 20:22
Проблема с Int. Explorer Laidy Windows 2 31.10.2008 12:40
из char в int llin Общие вопросы C/C++ 13 11.07.2008 06:51
mov ax,13h int 10h и Borland Pascal виснет..? Siddharta Assembler 8 01.07.2008 11:27
из char в int?? Mika Общие вопросы C/C++ 4 20.06.2008 15:18


19:23.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru