Вопрос № 35758: Ребят вот моя программка по Калашникову.
Запускаем. Почему буквы которые я ввожу с клавы отображаются в одном месте, а мне надо чтоб как как бы в текстовом редакторе.
(в DosNav...) Код прилагаю. Обьясните ошибку.
Если несложно можно испр...Вопрос № 35767: Здравствуйте уважаемые эксперты.
1. Скажите пожалуйста, где можно найти информацию о функциях в Ассемблере. Может вы поможете?
Пример: ax, 9h
ax,21h
То есть специальные зарезервированные числа, которые заносят в регистры и получается...Вопрос № 35769: Здраствуйте уважаемые эксперты.
1. Мне нужно создать резидентныйобработчик прерываний, который
будет перехватывать прерывание09h, создавать текстовый файл
и записывать в этот файл последний символ из буфера клавиатуры.
Программа ас...
Вопрос № 35.758
Ребят вот моя программка по Калашникову.
Запускаем. Почему буквы которые я ввожу с клавы отображаются в одном месте, а мне надо чтоб как как бы в текстовом редакторе.
(в DosNav...) Код прилагаю. Обьясните ошибку.
Если несложно можно исправить с пояснением код моей проги, ну если несложно будет.
Приложение:
Отправлен: 19.02.2006, 23:15
Вопрос задал: Baim (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, Baim!
cseg segment
assume cs:cseg,ds:cseg,es:cseg,ss:cseg
org 100h
Vyhod db " You selected ESC!",13,10,"$"
cseg ends
end begin
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 19.02.2006, 23:27 Оценка за ответ: 5
Отвечает: PRiSon
Здравствуйте, Baim!
У Вас ошибка в подпрограмме.
Каждый раз при вызове Sym proc выполняется строка mov di,3900 те начало вывода символов. Плюс лишняя строка в процедуре add di,2(зачем эта строка два раза???)
Исправление в приложении.
cseg segment
assume cs:cseg,ds:cseg,es:cseg,ss:cseg
org 100h
Start:
mov ax,3
int 16
mov di,3900 ;<----------------------
Begin:
mov ah,10h
int 16h
cmp al,0
jz Begin
cmp al,1Bh
jz Quit
mov cx,12
cic:
call Sym
jmp Begin
loop cic
Quit:
mov dx,offset Vyhod
mov ah,9h
int 21h
int 20h
Sym proc
push es
push ax
mov ax,0B800h
mov es,ax
pop ax
mov ah,29
mov es:[di],ax
add di,2
pop es
ret
Sym endp
Vyhod db " You selected ESC!",13,10,"$"
cseg ends
end Start
--------- Стремление - значит получится.
Ответ отправил: PRiSon (статус: 3-ий класс)
Отправлен: 20.02.2006, 07:16 Оценка за ответ: 5
Вопрос № 35.767
Здравствуйте уважаемые эксперты.
1. Скажите пожалуйста, где можно найти информацию о функциях в Ассемблере. Может вы поможете?
Пример: ax, 9h
ax,21h
То есть специальные зарезервированные числа, которые заносят в регистры и получается либо обращение к составным частям компа, либо выполнение определенных реакций (действий) DOS?
2. Плюс мне нужен учебный материал по работе с DOS (учебник) - ((хороший)).
:-)))
Спасибо.
Отправлен: 20.02.2006, 01:08
Вопрос задал: Retcom (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: PRiSon
Здравствуйте, Retcom!
Вот Дорогой Друг ссылки которые помогут тебе....
http://www.kalashnikoff.ru/Assembler/prog/
http://www.wasm.ru/publist.php?list=7
Удачи!!!
--------- Стремление - значит получится.
Ответ отправил: PRiSon (статус: 3-ий класс)
Отправлен: 20.02.2006, 09:28 Оценка за ответ: 5 Комментарий оценки: Спасибо
Отвечает: Boriss
Здравствуйте, Retcom!
Это функции не ассемблера, а операционной системы
Вы можете скачать хороший и компактный справочник по DOS 4.0. Этого вполне достаточно для решения большинства задач
Есть и перевод на русский, но в нем отсутствует описание работы с мышью, в частности. Может и еще чего нет - болше не анализировал
И самое полное описание можно найти на странице Ralf Brown
http://www-2.cs.cmu.edu/afs/cs.cmu.edu/user/ralf/pub/WWW/
Прикреплённый файл: Загрузить >> Срок хранения файла на сервере RusFAQ.ru составляет 30 суток с момента отправки ответа. --------- Вывод - то место в тексте, где вы устали думать
Ответ отправил: Boriss (статус: Профессор)
Отправлен: 20.02.2006, 13:28 Оценка за ответ: 5 Комментарий оценки: Спасибо
Вопрос № 35.769
Здраствуйте уважаемые эксперты.
1. Мне нужно создать резидентныйобработчик прерываний, который
будет перехватывать прерывание09h, создавать текстовый файл
и записывать в этот файл последний символ из буфера клавиатуры.
Программа ассемблируется илинкуется, при работе она
перехватывает прерывания и даже сосдает файл. Но файл без
расширения и символы не заносятся.
Текст программы привожу ниже.
2.Чем отличаются int20h, ret, ah,4Ch int 21h ?
Приложение:
Отправлен: 20.02.2006, 02:18
Вопрос задал: Gogenot (статус: Посетитель)
Всего ответов: 2 Мини-форум вопроса >>> (сообщений: 0)
Отвечает: Евгений Иванов
Здравствуйте, Gogenot!
Во первых, ты портишь флаги, нужно вот так:
В обработчике 9 прерывания не устанавливаешь правильный DS:
Int_09h_proc proc
cli
pushf
pusha
push es
push cs
pop ds
Здесь тоже глупости у тебя. Вот так нужно:
push ds ;сохраним ds
push ax mov ax,40h
mov ds, ax
mov bx,word ptr 0000h:[01Ah] ;считываем из буфера клавиатуры
;адрес последнего символа
mov dx, [bx]
pop ax
удачи.
--------- Что имеем - не храним, потерявши - плачем
Ответ отправил: Евгений Иванов (статус: Профессор)
Отправлен: 20.02.2006, 08:34 Оценка за ответ: 5 Комментарий оценки: Спасибо большое.
Отвечает: PRiSon
Здравствуйте, Gogenot!
Немного добавлю.
Ret - Выход из процедуры. (можно завершить программу командой RET в начале PSP есть int 20h куда после RET и произойдёт скачёк.)
int 20h - выход из дос программы.
mov ax,4c00h - выход из exe программы.
--------- Стремление - значит получится.
Ответ отправил: PRiSon (статус: 3-ий класс)
Отправлен: 20.02.2006, 09:24 Оценка за ответ: 5 Комментарий оценки: Именно это мне и нужно было узнать. Спасибо.