![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 19
|
![]()
Здравствуйте! Написал простенькую программу для чтения и вывода имени файла из корнемого каталога дискеты.
Код:
Пробовал и функцию 02 int 21h. Код:
|
![]() |
![]() |
![]() |
#2 |
Пользователь
Регистрация: 25.05.2011
Сообщений: 13
|
![]()
я не спец, но по ходу надо настроить сегментный регистр ds? и если не ошибаюсь то это .com программа?
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 19
|
![]()
да, это COM программа, а зачем ds то настраивать?
|
![]() |
![]() |
![]() |
#4 |
Пользователь
Регистрация: 25.05.2011
Сообщений: 13
|
![]()
недавно резидент писал, строку на экран надо было выкинуть, при не настроенном ds выводился мусор, а после:
mov ax,cs mov ds,ax всё пучком! |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 19
|
![]()
не, не помогает... да ведь в COM программе все сегментные регистры и так настроены одинаково. Самое главное то, что в dx при вызове функции 02h значение первой буквы правильно записано, но ничего не выводится... А если в dx просто число какое-нибудь пихнуть(например, аски код той же буквы), то все выведется нормально. Не понимаю, как такое может быть.
|
![]() |
![]() |
![]() |
#6 | |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
имя файла не в юникоде случайно?
> Не понимаю, как такое может быть. для кода символа используется 1 байт (DL) а не 2 (DX). Опять же, похоже, что Цитата:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
|
![]() |
![]() |
![]() |
#7 |
Форумчанин
Регистрация: 16.01.2011
Сообщений: 325
|
![]()
Alex071, если я не ошибаюсь, в dl перед вызовом функции 2 int 13h должен быть указан номер диска: 0 - диск А, 1 - диск В и т.д.
|
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 19
|
![]()
Нет, имя не в юникоде. dx нечайно написал, но в dl все равно попадает правильное значение - 53h (код 'T'), проверял в отладчике. Смысл в том, что если еще дополнительно написать mov dl,53h (т.е. значение dl как было 53h, так и остается) то все выведется.. Такое ощущение, что показывает, что сектор с дискеты прочитался, а на самом деле не прочиталось нефига. Программу выполняю на виртуальной машине и сектор читаю с виртуальной дискеты. Может, здесь ключ проблемы..?
Последний раз редактировалось Alex071; 26.05.2011 в 21:21. |
![]() |
![]() |
![]() |
#9 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
![]()
> но в dl все равно попадает правильное значение - 53h (код 'T'), проверял в отладчике
> если еще дополнительно написать mov dl,53h хм.. тогда или отладчик врёт, или одно из двух. Осталось запустить что-то типа: Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 26.05.2011
Сообщений: 19
|
![]()
В отладчике строку пропускает, как и надо а если без него то не пропускает. Я в панике ))
|
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
резидентная программа (обработка функции 9h прерывания 21h) | Dimarik | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 25.02.2011 10:38 |
Ничего не пойму (Сокращенные функции) Язык С. | Wisher717 | Помощь студентам | 7 | 25.01.2010 21:49 |