Вопрос № 23274: Скажите пожалуйста, что за функции базовой версии DOS для:
последовательной записи?
последовательного чтения?
Дле чего они нужны?
Еще мне нужны две команды для инициализации
регистра DS, полгагая, что имя сегмента д...Вопрос № 23275: Привет, мощные кодеры.
Это снова LvT.
Мой вопрос касается нюансов работы загрузчика
в вин32 или в самом скилле программирования,
я не знаю. Но недавно я натолкнулся на пример кода
(в паке масм32), в котором можно было использовать...Вопрос № 23287: Мне нужно вывести на экран символ(ы) с помощью прерываний BIOS (это задачку мне такую загадали). Какая пара прерывание-функция для этого используется?
Тупой поиск по всем функциям 16-го прерывания меня не просветил. Я подозреваю, что BIOS не имее...
Вопрос № 23.274
Скажите пожалуйста, что за функции базовой версии DOS для:
Еще мне нужны две команды для инициализации
регистра DS, полгагая, что имя сегмента данных DATSEG.
Так ли это выглядить будет?:
mov ax,DATSEG
mov ds,ax
Верно?
Отправлен: 09.07.2005, 19:14
Вопрос задал: Терсков Алексей Николаевич (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: Ayl
Здравствуйте, Терсков Алексей Николаевич!
2. Да, правильно. Именно так и будет. Еще можно так:
push DATSEG
pop ds
1. запись и чтение из файла всегда будут последовательными до того момента, пока ты не изменишь указатель файла с помощью функции 42h прерывания 21h.
Чтение из файла: функция 3fh прерывания 21h
Чтение из файла: функция 40h прерывания 21h
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 11.07.2005, 12:56
Вопрос № 23.275
Привет, мощные кодеры.
Это снова LvT.
Мой вопрос касается нюансов работы загрузчика
в вин32 или в самом скилле программирования,
я не знаю. Но недавно я натолкнулся на пример кода
(в паке масм32), в котором можно было использовать
функции API, не используя секцию импорта...
Кодер вроде клялся, что не вирмейкер,
но что любит писать совместимый код.
Короче, он использует что-то интересное.
Если кто видел, то, плиз, объясните ламеру.
Заранее огромно благодарен...
Sir LvT de said...
The best wishes, grretings and respects :D
Отправлен: 09.07.2005, 19:41
Вопрос задал: Skarrywizzard (статус: Посетитель)
Всего ответов отправлено: 1
Отвечает: John Freeman
Здравствуйте, Skarrywizzard!
А что странного? В WIN32 для создания процессa USER уровня используется CreateProcess, соответственно на входе в код любой программы имеем в стэке адрес возврата в диапазоне Kernel32.dll, от этого и пляшем просто чтением памяти разбирая заголовок kernel32....
Пример на WASM.ru вот здесь
http://wasm.ru/srclist.php?list=6
Название - Kernel(by Yoda)
--------- You're trying to take me They trying to make me This is the only Gives me the only thing Tired of lying, I'm tired of lying The only thing I inderstand is what I feel...
Ответ отправил: John Freeman (статус: Профессор)
Отправлен: 10.07.2005, 22:02 Оценка за ответ: 5
Вопрос № 23.287
Мне нужно вывести на экран символ(ы) с помощью прерываний BIOS (это задачку мне такую загадали). Какая пара прерывание-функция для этого используется?
Тупой поиск по всем функциям 16-го прерывания меня не просветил. Я подозреваю, что BIOS не имеет функции "вывести символ на экран" но наверняка имеет что-нибудь вроде "flash какой-нибудь буфер"
Подскажие как "правильно" использовать BIOS прерывания для вывода на дисплей.
Мой уровень:
Калашников - урок 8 (начинаем работать с файлами)
Iczelion - tutorial 3 (простое окно)
ЗЫ у меня Windows XP стоят, если для них какие трюки требуются (как
mov ax, 3
int 10H
чтобы прямой вывод в видеобуфер работал) предупредите пожалуйста.
Когда пишу 16-bit DOS код, время уходит не столько на изучение ассемблера, сколько на выяснения почему опять нормальный код не работает :)
Отправлен: 10.07.2005, 11:48
Вопрос задала: Janno (статус: Посетитель)
Всего ответов отправлено: 2
Отвечает: Евгений Иванов
Здравствуйте, Janno!
используй 16 прерывание, функцию 10.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 10.07.2005, 13:35
Отвечает: Ayl
Здравствуйте, Janno!
Функции BIOS для вывода символов находятся в прерывании 10h - работа с видеокартой.
Можешь использовать одну из следующих функций:
09h - вывести один или несколько одинаковых символов с заданным атрибутом (AH = 9, AL = символ, BH = страница, BL = атрибут, CX = кол-во символов).
0ah - вывести один или несколько символов без изменения аттрибута в позиции символа (AH = 0ah, AL = символ, BH = страница, CX = кол-во символов).
--------- Трудное - то, что можно сделать немедленно. Невозможное - то, для выполнения чего требуется немного больше времени
Ответ отправил: Ayl (статус: Профессор)
Отправлен: 11.07.2005, 13:04 Оценка за ответ: 5 Комментарий оценки: ответ в самую точу!