Форум программистов, компьютерный форум CyberForum.ru

Ошибка в коде с прерыванием 21h - C++

Восстановить пароль Регистрация
 
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.06.2013, 13:13     Ошибка в коде с прерыванием 21h #1
Добрый день, помогите найти решение проблемы, мне необходимо найти файл по заданным условиям, я вызываю 21 прерывание и функцию 4eH. В CX я передаю значение атрибутов(файлы и директории), а в DX (путь) строку text, по идее, на выходе AX должно выводиться значение, указывающее на наличие или отсутствие ошибки, но в итоге всегда пусто. И второй вопрос, в DTA должен находиться путь к данному файлу, однако я не знаю что это такое (DTA) и как мне вывести информацию оттуда, если кто-нибудь знает, помогите пожалуйста. Код программы привожу ниже.
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream.h>
#include <dos.h>
 
void main(){
char text[64];
cin>>text;
_AH=(0x4e);
_CX=(0x10);  
_DX=*text;
geninterrupt(0x21);
int a=_AX;
cout<<a<<endl;
 
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.06.2013, 13:13     Ошибка в коде с прерыванием 21h
Посмотрите здесь:

C++ ошибка в коде.
Ошибка в коде C++
C++ Ошибка в коде
Ошибка в коде C++
C++ Ошибка в коде
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2013, 13:22     Ошибка в коде с прерыванием 21h #2
Не очень понятно, как ты прямо с плюсов хочешь достучаться до регистров. По идее для этого предназначены асм-вставки, а geninterrupt вообще
void geninterrupt(int intr)

Прототип:
dos.h
Описание:
Эта функция не определена стандар*том ANSI С.
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.06.2013, 13:26  [ТС]     Ошибка в коде с прерыванием 21h #3
taras atavin, у меня это удавалось, к примеру мышь в программах, системное время.
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
13.06.2013, 13:29     Ошибка в коде с прерыванием 21h #4
Скажи. что ты хочешь сделать, возможно ты используешь не те механизмы.
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.06.2013, 13:35  [ТС]     Ошибка в коде с прерыванием 21h #5
stima, вообще я пишу проводник под дос, пока мне необходимо сделать хотя бы вывод файлов и директорий, которые находятся в заданном каталоге, для этого я планирую сначала вызывать 4eh а затем функцию 4fh, но я столкнулся с двумя проблемами, первая заключается в том, что a=_AX не выводится, я пытался это исправить, поставил функцию вызова прерывания перед _AH=... , по-моему получилось, однако на существующие и не существующие файлы он выводит 93, если я правильно помню. А вторая проблема в том, что я не знаю как читать данные из области DTA
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
13.06.2013, 13:43     Ошибка в коде с прерыванием 21h #6
На какой ОСи вы работаете? Т.е. пишите код.
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.06.2013, 13:45  [ТС]     Ошибка в коде с прерыванием 21h #7
stima, DOS(FreeDOS 1.1)
stima
429 / 284 / 16
Регистрация: 22.03.2011
Сообщений: 923
Завершенные тесты: 1
13.06.2013, 13:56     Ошибка в коде с прерыванием 21h #8
компилятор какой?

п.с. Вообще Вам в раздел асма, или вообще на форум к freedos)
Sid1057
5 / 5 / 2
Регистрация: 22.02.2013
Сообщений: 174
13.06.2013, 14:34  [ТС]     Ошибка в коде с прерыванием 21h #9
stima, turbo c++ 1.0 ну всё-же я пытаюсь его сделать средствами c++, хотя насчет асм вставок тоже задумывался, но как в таком случае значение из переменной внутри асм кода передать переменной в c++
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.06.2013, 14:43     Ошибка в коде с прерыванием 21h
Еще ссылки по теме:

C++ Ошибка в коде
C++ Ошибка в коде
Ошибка в коде C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
taras atavin
Ушёл с форума.
 Аватар для taras atavin
3569 / 1752 / 91
Регистрация: 24.11.2009
Сообщений: 27,619
13.06.2013, 14:43     Ошибка в коде с прерыванием 21h #10
Пиши на сисемблере, низкий уровень обсуждай в других разделах. Это не паскаль всё таки. И не мешало бы налепить хотя бы оболочечных функций по верх асма, если системное API страдает дефицитом уровня.
Yandex
Объявления
13.06.2013, 14:43     Ошибка в коде с прерыванием 21h
Ответ Создать тему
Опции темы

Текущее время: 00:14. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru