Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Три вопроса по теории Assembler'a

Модерирует : ShIvADeSt

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

YackoN



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Доброго времени суток всем.Ребят,если кто знает,помогите мне,пожалуйста.Завтра экзамен,а ответы на несколько вопросов найти не могу.(((
 
АССЕМБЛЕР АРХИТЕКТУРЫ 8088/8086
 
1)Перечислить все способы чтения клавиатуры
 
2)Для чего нужен флаг дополнительного переноса
 
3)Какие сегменты адресуют регистры SI и DI
 
Очень прошу,если кто знает,помогите мне,пожалуйста.
 
Заранее спасибо большое!!!!

Всего записей: 196 | Зарегистр. 30-03-2003 | Отправлено: 12:11 14-06-2006 | Исправлено: YackoN, 18:53 14-06-2006
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Перечислить все способы чтения клавиатуры

Под конкретную платформу или вообще?
а) Функции операционной системы
б) прерывания биоса
в) работа с контролерром напрямую.
Естественно каждый пункт, что стоит выше, работает через тех, кто ниже.

Цитата:
Для чего нужен флаг дополнительного переноса

Это когда то давно его часто использовали. Сейчас - практически неиспользуют.
Он устанавливается в 1, если есть перенос с 3 в 4 розряд (биты считаем классически 76543210). Использовался командами десятичнодвоичных операций типа AAA.  
Есть такой способ записи чисел - в одном байте две цифры. Вот там они и надо были.

Цитата:
Какие сегменты адресуют регистры SI и DI

По умолчанию кажеться сегмент данных, но можно переопределить. (но с ответом на этот вопрос не уверен)

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 13:56 14-06-2006
YackoN



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim
 
на счет "чтения клавиатуры" мне сказали следующее:  
----------------------------------------
Способы чтения клавиатуры:
-Прерывания
-Прямой доступ к памяти
-Использование порта 60h
-------------------------------------------
 
Это верно или нет?
 
 
Добавлено:
Мне общие понятия нужны,не заточенные под конкретную систему и платформу

Всего записей: 196 | Зарегистр. 30-03-2003 | Отправлено: 14:54 14-06-2006
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
YackoN
Цитата:
Мне общие понятия нужны,не заточенные под конкретную систему и платформу

Цитата:
-Использование порта 60h

Это - под конкретную платформу. (IBM PC)

Цитата:
-Прямой доступ к памяти

Не всегда возможен. Всю зависит от архитектуры.
Хотя давай посмотрим на этот вопрос с другой стороны.
А какие вообще существуют методы чтения с клавиатуры?
Например в очень "древнем" компьютере на базе К580ИК80 (очень похож на Z80) использовался следующий метод. Проц время от времени (2-3 раза/сек) прерывался и опрашивал уровни на выводах матрицы клавиатуры.  
Но потом и до сих пор используют другой метод - контролер сам опрашивает клавиатуру и при надобности "дёргает" прерывание процессора, который потом читает готовые скан-коды - номер кнопки/комбинации кнопок. Именно "кнопок", так как для контролера клавиатуры нет понятия руский/украинский/английский.

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 15:09 14-06-2006
YackoN



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
А что вообще делает порт 60h ?

Всего записей: 196 | Зарегистр. 30-03-2003 | Отправлено: 15:34 14-06-2006
OdesitVadim



Advanced Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Да видимо учишся часто
Порт 60h связан с контролером клавиатуры. Почитай
http://www.did.ru/interes/7.html
http://www.lib.csu.ru/DL/bases/prg/frolov/books/bsp/v02/ch2.htm

----------
Press any key to continue or any other key to exit
Пишите так, чтобы не было стыдно за нобелевскую премию.

Всего записей: 1568 | Зарегистр. 19-09-2003 | Отправлено: 15:39 14-06-2006
YackoN



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OdesitVadim
 
Во! Большое спасибо!!!!!!

Всего записей: 196 | Зарегистр. 30-03-2003 | Отправлено: 15:45 14-06-2006
OldGopher



Silver Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
(Е)SI:DS
(Е)DI:ES - по умолчанию...  

Всего записей: 3802 | Зарегистр. 25-10-2001 | Отправлено: 17:31 14-06-2006 | Исправлено: OldGopher, 17:35 14-06-2006
YackoN



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
OldGopher
 
Во,большое спасибо!!!!! Вроде на все вопросы теперь имею ответы!
Большое Вам спасибо,Господа!!!!!!

Всего записей: 196 | Зарегистр. 30-03-2003 | Отправлено: 17:36 14-06-2006
zMD

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Если подразумевается архитектура 8088/8086 процессоров, то:
 
3)Какие сегменты адресуют регистры SI и DI
При работе со строковыми командами (movs/movsb/movsw, cmps/cmpsb/cmpsw, scas/scasb/scasw) регистр si указывает смещение относительно сегмента ds, а регистр di относительно es (пара ds:si и es:di). В остальных командах (арифметических, логических, сдвига etc), di и si адресуют сегмент данных ds.
 
2)Для чего нужен флаг дополнительного переноса
Он участвует в операциях коррекции (DAA, DAS) упакованных двоично-десятичных чисел.
 
1)Перечислить все способы чтения клавиатуры
Все?
Боюсь, никто не помнит всех функций всех прерываний, из основных прерываний int16h, int21h, и более экзотическое прерывание кассетного магнитофона int15h ... а есть и более интересные способы.

Всего записей: 7 | Зарегистр. 14-06-2006 | Отправлено: 19:00 14-06-2006
AerissRB

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Расскажите, плиз, про 16-е прерывание, а именно функции 10h, 11h, 12h, 5h. В HELPERе, почему-то описаны только с 0 по 2...

Всего записей: 3 | Зарегистр. 17-06-2006 | Отправлено: 22:36 19-06-2006
A_V

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
AerissRB
читай RBIL, там все есть:
HTML: _http://qbasic.narod.ru/files/docs/RBIL61.HTM.rar
HLP: _http://qbasic.narod.ru/files/docs/Intwin.rar

Всего записей: 770 | Зарегистр. 07-04-2002 | Отправлено: 23:09 19-06-2006
AerissRB

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
A_V
спасибо за ссылки. Нашла всё, что нужно)

Всего записей: 3 | Зарегистр. 17-06-2006 | Отправлено: 23:31 19-06-2006
begem0t



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору

почему исходники начинаются с
CSEG segment
org 100h
Start:
******
а заканчиваются
CSEG ends
end Start
 
както напоминает перекрывающиеся вложенные циклы, что не есть правильно

Всего записей: 901 | Зарегистр. 06-01-2003 | Отправлено: 08:26 21-07-2006
Mickey_from_nsk

Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
begem0t
Если не ошибаюсь,
end Start показывает точку входа в программу.
Ты можешь метку Start: ставить в произвольном месте. И называть ее как угодно. А в операторе end указывать, какая точка программы является точкой ее запуска.

Всего записей: 636 | Зарегистр. 21-10-2002 | Отправлено: 09:56 21-07-2006
begem0t



Advanced Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
т.е. точка входа располагается внутри любого сегмента а указатель на нее всегда в конце исходника?

Всего записей: 901 | Зарегистр. 06-01-2003 | Отправлено: 10:35 21-07-2006
MoKC0DeR



Full Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
почему исходники начинаются с  
CSEG segment  

начало сегмента

Цитата:
 
org 100h  
 

указатель адреса в сегменте. 100h обчыно использовалься в com программах т.к. перед ним идет PSP

Цитата:
 
Start:  
 

метка

Цитата:
 
CSEG ends  
 

конец сегмента

Цитата:
 
end Start  
 

конец исходника с указанием точки запуска программы. В данном случае программа начинается с метки Start
 

Всего записей: 510 | Зарегистр. 31-03-2004 | Отправлено: 23:05 22-07-2006
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Прикладное программирование » Три вопроса по теории Assembler'a


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru