Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/28: Рейтинг темы: голосов - 28, средняя оценка - 4.82
155 / 25 / 6
Регистрация: 06.06.2009
Сообщений: 262

Функции IN, OUT не работают

17.06.2009, 16:41. Показов 5638. Ответов 15
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Изучаю Ассемблер. Сейчас разбираю по примерам учебника Рудакова и Финогенова "Язык Ассемблера: Уроки программирования". Использую компилятор TASM 4.1 и отладчик TD.

Так вот вопрос. При разборе функций IN, OUT они не работают, если можно так сказать. Отладчих их просто проскакивает, ничего не делая. Что может быть. Ради этого в принципе и начал изучать Ассемблер.

P.S. Ассемблер начинают разбирать во всех книгах с реального режима. Но я то все эти программки пишу в Винде в блокноте. Хоть и компилирую в FAR'e, но все равно получается защищенный режим. Могут они из-за этого не работать?

P.S.S. Там еще была глава про ESC-последовательности - спец функции DOS для вывода символов. Так они тоже не работают. Но для них нужено было в CONFIG.SYS прописать путь к какому-то дивайсу. Я его в папке с Виндой нашел, прописал, но что-то не подействовало.

Help, plz. Больше не на кого расчитывать. Уже на третьей книге спотыкаюсь.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
17.06.2009, 16:41
Ответы с готовыми решениями:

Не работают функции <math.h> в методе (функции-члене)
Сделал программу которая решает по формуле задачу. Все работает, но стоило вынести нахождение y в функцию, как компилятор стал писать...

функции не работают
я тут написал программу, но она не работает. выдает ошибки на местах использования функций. как это можно исправить? uses SysUtils,...

не работают функции
каждый раз возникает проблема при вводе любой функции возникают предупреждения и функции не рабтают например &lt;?php $f = fopen(...

15
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
17.06.2009, 19:55
это скорей всего из-за того, что запускаете отладчик из-под фара. Поскольку Фар - это консольное приложение windows, в нем могут некорректно обрабатываться порты ввода/вывода, прямой доступ к видеопамяти, векторы прерываний и др. для отладки пользуйтесь Volkov commander, NC. Для них windows создает более или менее нормальное окружение ДОС. А еще лучше, загружайтесь с дискеты.
1
155 / 25 / 6
Регистрация: 06.06.2009
Сообщений: 262
18.06.2009, 00:31  [ТС]
Спасибо. Сегодня попробую.
0
68 / 24 / 2
Регистрация: 16.05.2009
Сообщений: 73
21.06.2009, 06:18
если вы работаете "из-под винды", то к многим портам ввода-вывода просто нет доступа. В винде доступ можно получить только с помощью аппаратных драйверов. С таймерами и клавой проблем нет, но LPT, COM и ещё множество других закрыты для прямого использования.
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.06.2009, 11:45
Ну с COM потом можно нормально работать через API и при этом управлять его дополнительными линиями, а вот с LPT надо через драйвер, скажем, inpout32.dll или IO.dll
0
Флудер
 Аватар для Ensase
195 / 33 / 11
Регистрация: 23.03.2007
Сообщений: 334
21.06.2009, 13:19
для прямого доступа к регистрам COM-порта тоже нужен драйвер
а по данной теме есть уже готовые решения, например UserPort(легко находится через поисковик) или OpenPorts (http://gl00my.chat.ru/downloads.html)
0
PB
Просто прогер
1292 / 1079 / 13
Регистрация: 13.03.2009
Сообщений: 2,502
21.06.2009, 15:30
Цитата Сообщение от Ensase Посмотреть сообщение
для прямого доступа к регистрам COM-порта тоже нужен драйвер
В большинстве случаев API вполне достаточно.
0
68 / 24 / 2
Регистрация: 16.05.2009
Сообщений: 73
22.06.2009, 08:33
да никто не спорит. У человека ж in и out не работают, а вы ему про API и дрова)))))
0
155 / 25 / 6
Регистрация: 06.06.2009
Сообщений: 262
25.06.2009, 16:15  [ТС]
В принципе я надеюсь дойти до СОМ, LPT и даже PCI.

Но что-то я поспешил сказав, что они заработали. Использование NC и Volkov Commander'a дали только то, что я смог обращаться непосредственно к видеопамять. (раньше я и туда не мог добраться)
Но с функциями IN и OUT дело так и не пошло. Вот первейший пример: отучить маску контроллера прерываний, и установить 1й бит, запретив прерываний от таймера. Время как шло, так и идет. Смотрю в отладчике, он эти функции проскакивает, выполняя следующии (чтобы убедиться перекидывал маску в BL)

;Запрещение прерываний от таймера
.586
text segment use16
assume CS:text
main proc
mov AX, data
mov DS, AX
in AL, 21h
mov BL, AL
or BL, 1
out 21h, BL
mov AX, 4C00h
int 21h
main endp
text ends
end

Подскажите что-нибудь, или в самом деле с дискеты грузиться придется.
0
Айхрень...
 Аватар для Paulie
306 / 176 / 7
Регистрация: 02.06.2009
Сообщений: 1,077
25.06.2009, 16:38
Не уверен, но может VMWare и DOS 6.22 поможет?
0
155 / 25 / 6
Регистрация: 06.06.2009
Сообщений: 262
25.06.2009, 16:49  [ТС]
Сори, какую-то бракованную прогу показал. Вот нужная. Так отладчик должен эти функции проскакивать?

Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
.586
text    segment use16
    assume  CS:text
main    proc
    in  AL, 21h
    mov BL, AL
    or  BL, 1
    and BL, 0FEh
    mov AL, BL
    out 21h, AL
    mov AX, 4C00h
    int 21h
main    endp    
text    ends
    end main
0
68 / 24 / 2
Регистрация: 16.05.2009
Сообщений: 73
01.07.2009, 18:44
код странный.....
строкой:
Assembler
1
or      BL, 1
вы устанавливаете 0-вой бит.
а строкой:
Assembler
1
and     BL, 0FEh
тут же его сбрасываете. Как понимать? уберите вторую.
достаточно:
Assembler
1
2
3
in al,21h
or al,1
out 21h,al
А если вы хотите хорошо изучить аппаратку, то приобретите ещё системник. какой-нибудь 200-ник. Это лучший путь. А когда хорошо изучите, то такие вещи в винде уже сможете делать, но программируя драйверы.
0
155 / 25 / 6
Регистрация: 06.06.2009
Сообщений: 262
05.07.2009, 11:23  [ТС]
Я нашел старый ноут Celeron 330Мгц, ОЗУ 98Mbt. Так на нем можно изучать аппарутку? Принцип же тот же.
И 2й вопрос, на этот ноут можно поставить DOS?
0
 Аватар для Goodwin98
2537 / 833 / 10
Регистрация: 31.05.2009
Сообщений: 1,668
05.07.2009, 19:46
Вообще какая разница, на каком компе ставить Дос? В реальном режиме они почти все одинаковы. Единственное, что вам нужно в нем - это флоппик или сидиром, чтоб грузиться в дос с них, если не хотите заниматься мазохизмом ставя его на жесткий диск.
Или даже поставьте вирт. машину (Virtual PC,Virtual Box, DosBox, VMWare и т.д.) и ставте дос в ней. Тогда даже перезагружаться не придется.
0
68 / 24 / 2
Регистрация: 16.05.2009
Сообщений: 73
11.07.2009, 15:08
лучше для изучения все-таки отдельная машина. Потом когда начнёте изучать защищенный режим, виртуальные тачки не помогут. При попытке в ДОСе на вирт тачке перейти в защищенный режим, VMWare у меня выпадал с исключением. Остальные проги ждет та же участь (уверен, ведь сама эмуляция вирт. машин - это функционал Винды, а проги - всего лишь оболочки).
Ставьте на ноут DOS (пока пойдет для экспериментов). Но лучше все-таки PC. Я уверен что если покопаться - можно найти по дешёвке старенький..... у мя лежат на эти случаи 600-ник и вообще 486(самое сложное было оперативу для него надыбать). На ноуте особо в железе не потыкаешься..... Может вы захотите свои собственные PCI-устройства мутить (в наше время это не так уж и сложно).
0
1779 / 757 / 153
Регистрация: 03.06.2009
Сообщений: 5,940
11.07.2009, 15:51
А еще отличный вариант, это сделать загрузочную флешку. Грузится очень быстро и работает на порядок быстрей, чем с флопиком, да и надежней, наконец.
Для себя сделал как на писано тут все работает отлично!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
11.07.2009, 15:51
Помогаю со студенческими работами здесь

Не работают функции
Всем доброго времени суток! Возникла такая проблема, впервые в жизни, не понимаю почему... Раньше все так делал всегда и работало, а...

Не работают функции)
package com.company; import java.io.*; import java.util.Arrays; import java.util.Scanner; public class Main { static...

Не работают функции
Код: #include &quot;pch.h&quot; #include &lt;iostream&gt; #include &lt;algorithm&gt; #include &lt;ctime&gt; #include &lt;cstdlib&gt; #include &lt;string&gt; ...

Не работают функции
Приветствую. Никак не могу понять, какую библиотеку надо скачивать. Скачал программку http://pure-basic.narod.ru/project/skrinhot.html ...

Не работают функции
Не работают то ли функции, то ли неправильно к ним обращаюсь. Есть 3 функции: Выделение строки из под строки: void substr(char v,...


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

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru