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

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

17.06.2009, 16:41. Показов 5588. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а привычная функция main(). . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь(не выше 3-го порядка) постоянного тока с элементами R, L, C, k(ключ), U, E, J. Программа находит переходные токи и напряжения на элементах схемы классическим методом(1 и 2 з-ны. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru