Вопрос № 25635: ПРивет многоуважаемые эксперты !!!
У меня почему-то не работает одна процедура она должна сохранять нулевую видео страницу переносом в первую видео страницу.
ПООМООГИИТЕЕЕ!!!
Ничего немогу понять.
Первая процедура Save_Screen переноси...Вопрос № 25638: Уважаемые экперты!
Скажите пожалуйста, как на ASM-е работать с CD-ROM (и подобными до DVD-RW), а именно:
1. Узнать буквы у имеющихся CD-ROM;
2. Проверить наличие компакт диска в приводе;
3. Как считать информацию с диска (файла, дорож...Вопрос № 25639: 1. CSEG segment
assume CS:CSEG, DS:CSEG, SS:CSEG
org 100h
BEGIN:
MOV AH, 86h
MOV DX,1388h ; задержка 5 секунд
INT 15h
; проблема такая: задержка не работает, устанавливается флаг CF в 1, т.е. системный...
Вопрос № 25.635
ПРивет многоуважаемые эксперты !!!
У меня почему-то не работает одна процедура она должна сохранять нулевую видео страницу переносом в первую видео страницу.
ПООМООГИИТЕЕЕ!!!
Ничего немогу понять.
Первая процедура Save_Screen переносит байты из 0 страницы в 1 а вторая процедура Restor_Screen обратно последняя возвращяет белеберду какую-то.
Приложение прилагается.
Конечно алгоритм ни ахти какой но всё-же .
Приложение:
Отправлен: 01.09.2005, 07:55
Вопрос задал: PRiSon (статус: Посетитель)
Всего ответов: 3 Мини-форум вопроса >>> (сообщений: 4)
Отвечает: Sager
Здравствуйте, PRiSon!
Адрес первой видеостраницы не 0D800h, а 0В900h. Дальше, ты забыл поставить префикс rep перед movsw, в cx ты ложишь 4000, а надо 2000, так как команда movsw сразу передает по два байта - 2000*2=4000
Вроде все, должно работать.
Ответ отправил: Sager (статус: 6-ой класс)
Отправлен: 01.09.2005, 08:59
Отвечает: Калашников О.А.
Здравствуйте, PRiSon!
Используйте префикс REP вместе с MOVSW.
Подробней об этом префиксе и командах работы со строками читайте тут:
http://kalashnikoff.ru/Assembler/issues/012.htm
---
Оптимальный пример копирования экрана можно найти тут:
http://kalashnikoff.ru/Assembler/issues/encl/028/DISPLAY.asm.htm
--------- Всё отлично!!!
Ответ отправил: Калашников О.А. (статус: *Админ)
Отправлен: 01.09.2005, 10:35 Оценка за ответ: 5 Комментарий оценки: Спасибо !! Я понимаю что у ВАС самый Оптимальный Вариант но понимаете я хочу сам написать сам помыслить так сказать логитмы и тогдалее.
Отвечает: newinfo2005
Здравствуйте, PRiSon!
Так все нормально,но у тебя всего 3 ошибки.
1.0 стр-ob800h 1 стр-0b900h и т.д.
2.вместо movsw надо rep movsw
3.и в cx надо загрузить 2000 а не 4000 так как ты загружаешь слово а не байт.
Приложение:
--------- Хочу стать умным и...много денег и халявного инета.
Ответ отправил: newinfo2005 (статус: 5-ый класс)
Отправлен: 01.09.2005, 13:15
Вопрос № 25.638
Уважаемые экперты!
Скажите пожалуйста, как на ASM-е работать с CD-ROM (и подобными до DVD-RW), а именно:
1. Узнать буквы у имеющихся CD-ROM;
2. Проверить наличие компакт диска в приводе;
3. Как считать информацию с диска (файла, дорожки)
Желательно с исходниками =)
; проблема такая: задержка не работает, устанавливается флаг CF в 1, т.е. системный таймер был занят
; нужно сделать следующее: после запуско должно пройти 5 сек. и выйти строка mes.
MOV AX,09h
MOV DX,offset mes
INT 21h
INT 20h
mes db 'message',0Ah,0Dh,'$'
CSEG ends
end BEGIN
2. Как пользоваться функцией BIOS int 08h
Как я понимаю, то это что-то типа задержки
Что означает следующее:
MOV AL, 20h
OUT 20h, al
3. Можно ли ассемблерной программой зупустить исполнимый файл.
Т.е. типа run path путь к файлу
path db 'C:Hello.exe'
4. Как работает jna, т.е. в каком случае происходит переход?
как изменяются флаги при:
cmp 6,5
cmp 5,6
cmp 5,5
5. Вася Пупкин задовал вам вопос про проверку на нажатие клавиш!
Нужно сделать следующее:
Приостановить выполнение программы,
ожидать от пользователя клавиш 0-6,
остальное игнорировать, доже Enter, если можно!, т.е. как я понимаю ожидать прерывания от клавиатуры, если пользователь нажал клавишу, то сделать проверку на принадлежность диапазону 0-6, если цифра не входит в диапазон, то начать ожидание вновь!
Это тяжело сделать?
Отвечает: Калашников О.А.
Здравствуйте, Терсков Алексей Николаевич!
3. Запустить исполняемый файл можно, воспользовавшись функцией 4Bh прерывания 21h. Функция требует подготовки. Описание и пример можно найти тут:
http://kalashnikoff.ru/Assembler (выпуск № 29)
---
Ответы на все остальные вопросы вы также найдёте в архиве по указанной выше ссылке...
--------- Всё отлично!!!
Ответ отправил: Калашников О.А. (статус: *Админ)
Отправлен: 01.09.2005, 10:29 Оценка за ответ: 5 Комментарий оценки: Ну и подготовочка!
Отвечает: Sager
Здравствуйте, Терсков Алексей Николаевич!
1)
mov ah, 86h
mov cx, число_секунд
mov dx, число_микросекунд
int 15h
3)можно. подробнее читай 29 выпуск калшникова, т.к. здесь вызовом
одного прерывания не обойтись - нужно много чего сделать.
4)Переход произойдет при cmp 5,6
в первом случае
pf=0
zf=0
во втором случае
cf=1
pf=1
af=1
sf=1
в третьем
af=0
zf=1
sf=0
5)
again:
mov ah,10h
int 16h
cmp al,'0'-1
jna again
cmp al,'6'
ja again
int 20h; srabotaet if you press 0-6
Ответ отправил: Sager (статус: 6-ой класс)
Отправлен: 01.09.2005, 11:11
Отвечает: newinfo2005
Здравствуйте, Терсков Алексей Николаевич!
1.Я точно сам не знаю,но надо еще указать пользовательский байт в es:bx
в AL загрузить 0
2.Да-да вызывается примерно 18.2 раз в секунду,его можно использовать для обработки событий зависищях от времени.А то что ты указал это когда прерывание закончен закончено. Магическая последовательность такова:
MOV AL, 20h;послать сигнал Конец-Прерывания
OUT 20h, al; контроллеру прерываний 8259
3.Я думаю ничего не будет если я тебе из справочника покажу инфу:
4.ниже или равны.
cmp 6,5;на cf & zf это не повлияют
cmp 5,6;cf=1 & zf=0,cf=1 & zf=1 или
cmp 5,5;cf=0 & zf=1
5.h1:mov ah,0
int 16h
cmp al,0;если 0 то в ah содержится расширенный код.
je h1
cmp ah,'1';и тут уже проверяешь нажатие клавиш можно так же и кодами ascii
cmp ah,13;вроде бы определяет на нажатие ентер.
Приложение:
--------- Хочу стать умным и...много денег и халявного инета.
Ответ отправил: newinfo2005 (статус: 5-ый класс)
Отправлен: 01.09.2005, 15:05