WMmail.ru - сервис почтовых рассылок

вторник, 29 октября 2013 г.

RFpro.ru: Ассемблер? Это просто! Учимся программировать

 
Если выпуск не отображается, вы можете прочесть его на сайте Отказаться от рекламы
  
  
Пробиотические моющие средства Probioway! Первым 100 покупателям скидка 20% на год в подарок!
  
  
Сайт медицинской организации Сайт медицинской организации
идеи, советы, готовые решения

  Выбери свой подарок. Выбери свой подарок.
Мобильный маркетинг с выгодой!

   Tivoli Audio Радиоприемник Tivoli Audio Cappellini Model Tivoli Audio Радиоприемник Tivoli Audio Cappellini Model
Купить за 12590 руб. Подробнее...

 
  

  Мои подписки      Мои группы      Мои новости     
        Автор 
Калашников О.А.
      
  
Компьютеры и интернет   →   Софт   →   Программирование   →   RFpro.ru: Ассемблер? Это просто! Учимся программировать
  
RFpro.ru: Ассемблер? Это просто! Учимся программировать
 
 

Хостинг портала RFpro.ru:
Московский хостер
Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64

РАССЫЛКИ ПОРТАЛА RFPRO.RU

Лучшие эксперты по данной тематике

Асмик Гаряка
Статус: Советник
Рейтинг: 10653
• повысить рейтинг »
Коцюрбенко Алексей aka Жерар
Статус: Советник
Рейтинг: 3992
• повысить рейтинг »
Абаянцев Юрий Леонидович aka Ayl
Статус: Профессионал
Рейтинг: 1762
• повысить рейтинг »

/ КОМПЬЮТЕРЫ И СОФТ / Программирование / Assembler (Ассемблер)

Номер выпуска:1549
Дата выхода:30.10.2013, 02:00
Администратор рассылки:Лысков Игорь Витальевич (Старший модератор)
Подписчиков / экспертов:45 / 23
Вопросов / ответов:1 / 1

Консультация # 187592: Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Здравствуйте, необходимо написать программу удовлетворяющую данному условию: Составить на языке Ассемблера программу инициализации БИС 8259А в соответствии с алгоритмом, приведенным на рисунке 2: режим приоритетов простой; сигнал прерывания IRQj воспринимается по фронту; адрес контроллера прерыва...


Консультация # 187592:

Уважаемые эксперты! Пожалуйста, ответьте на вопрос: Здравствуйте, необходимо написать программу удовлетворяющую данному условию: Составить на языке Ассемблера программу инициализации БИС 8259А в соответствии с алгоритмом, приведенным на рисунке 2: режим приоритетов простой; сигнал прерывания IRQj воспринимается по фронту; адрес контроллера прерываний - 20H; новый базовый вектор для IRQ0 -A0Н. Вариант 19.
Нужно использовать 32-х разрядные API функции, 32-х разрядные регистры, предпочтительно использовать ассемблер MASM

Дата отправки: 27.10.2013, 01:33
Вопрос задал: Посетитель - 397588 (Посетитель)
Всего ответов: 1
Страница онлайн-консультации »


Консультирует Лысков Игорь Витальевич (Старший модератор):

Здравствуйте, Посетитель - 397588!
Вот Вам переделанная программа, которая "по аналогии"
Полагаю, отличия найдете самостоятельно.
Будут вопросы, спрашивайте в мини-форуме.

Код :
 	.model	small  	.data old_kbd	dd	? string	db	"Laboratornaja rabota #2" str_len=$-string  	.stack	256  	.code   bflag	db	0       	;флаг нажатой клавиши ESC       main	proc			;главная процедура 	mov	ax, @data 	mov	ds, ax		;настройка сегмента данных  	CLI			;запрещаем все прерывания ;Перепрограммируем ведущий ПКП 	mov	cl, 0a0h	;процедура выполнения повторной инициализации 	call	reinit		;ведущего ПКП с базовым вектором 0a0h                   ;Сохраним старый вектор                          	mov	ax, 35a1h  	int	21h                                                               	mov	word ptr old_kbd, bx    ;сохраняем старый 	mov	word ptr old_kbd+2, es  ;базовый адрес  ;Запишим в таблицу адрес нашего обработчика прерывания 	mov	ax, 25a1h 	mov	dx, offset new_kbd 	push	ds 	push	cs 	pop	ds		;ds=cs настроили ds на начало сегмента кода 	int	21h 	pop	ds		;вернем старое значение  ;Запрет на уровне регистра маски всех прерываний кроме от клавиатуры 	mov	al, 11111101b 	out	21h, al 	STI  ;Цикл ожидания нажатия клавиши ESC m1: 	mov	al, cs:bflag 	or	al, al     	jz	m1             ;восстанавливаем старый вектор 	CLI 	mov	ax, 25a1h 	push	ds 	lds	dx, old_kbd 	int	21h 	pop	ds  ;Перепрограммируем ПКП в режиме по-умолчанию 	mov	cl, 08h 	call	reinit 	mov	al, 10111000b	;разрешены таймер, клавиатура, ведомый контроллер и НГМД 	out	21h, al 	STI  ;Завершаем процедуру и передаем управление MS DOS 	mov	ax, 4c00h 	int	21h main	endp  ;Текст нового обработчика прерывания  от клавиатуры new_kbd proc	far 	push	ax 	push	ds 	push	es 	push	di 	push	si 	push	cx 	in	al, 60h		;считываем из выходного порта контроллера  	push	ax 				; разрешим дальнейшую обработку клавиатуры 	in      al, 61h         ; читаем состояние клавиатуры         or      al, 10000000b   ; взводим бит 7         out     61h, al		; отправляем в порт         and     al, 01111111b   ; сбрасываем обратно бит 7         out     61h, al         ; отправляем в порт         mov     al, 20h         ; сброс контроллера прерываний         out     20h, al 	pop	ax  	cmp	al, 01h		;клавиатуры скан-код клавиши ESC 	jne	m2 	mov	cs:bflag, al	;пометим, что была нажата ESC m2: 	test	al, 80h 	jnz	kbd_ret  	mov	ax, @data 	mov	ds, ax 	mov	cx, str_len  	lea	si, string m3: 	lodsb 	mov	ah, 0eh 	int	10h 	loop	m3 kbd_ret: 	pop	cx 	pop	si 	pop	di 	pop	es 	pop	ds 	pop	ax   	iret new_kbd	endp  ;Процедура инициализации ведущего ПКП ;Базовый адрес в процедуру передается через CL reinit	proc 	mov	al, 00010001b		;ICW1 	out	20h, al 	mov	al, cl 	out	21h, al 	mov	al, 00000100b		;ICW3 	out	21h, al 	mov	al, 00001101b		;ICW4 	out	21h, al 	ret reinit	endp  	end	main

Консультировал: Лысков Игорь Витальевич (Старший модератор)
Дата отправки: 27.10.2013, 05:09
Рейтинг ответа:

НЕ одобряю 0 одобряю!


Оценить выпуск | Задать вопрос экспертам

главная страница  |  стать участником  |  получить консультацию
техническая поддержка  |  восстановить логин/пароль

Дорогой читатель!
Команда портала RFPRO.RU благодарит Вас за то, что Вы пользуетесь нашими услугами. Вы только что прочли очередной выпуск рассылки. Мы старались. Пожалуйста, оцените его. Если совет помог Вам, если Вам понравился ответ, Вы можете поблагодарить автора - для этого в каждом ответе есть специальные ссылки. Вы можете оставить отзыв о работе портале. Нам очень важно знать Ваше мнение. Вы можете поближе познакомиться с жизнью портала, посетив наш форум, почитав журнал, который издают наши эксперты. Если у Вас есть желание помочь людям, поделиться своими знаниями, Вы можете зарегистрироваться экспертом. Заходите - у нас интересно!
МЫ РАБОТАЕМ ДЛЯ ВАС!


 
 
Комментировать выпуск
     В избранное

Прошлые выпуски
RFpro.ru: Ассемблер? Это просто! Учимся программировать    26 октября 2013, 20:34
RFpro.ru: Ассемблер? Это просто! Учимся программировать    18 октября 2013, 17:33
RFpro.ru: Ассемблер? Это просто! Учимся программировать    10 сентября 2013, 23:03

Все выпуски рассылки
 
 

Subscribe рекомендует
 
Компьютеры и интернет  →   рассылки   и   группы
  
Семейное право и права детей в России
Получение и обмен информацией о правовых аспектах регулирования семейных отношений. Свободное консультирование по темам семейного права, жилищного права супругов, наследственного права, прав детей, трудового законодательства и социальной политики.
Темы: 102   Участники: 693
  Свое дело
В данной группе будут публиковаться идеи для открытия собственного дела. Мы зарабатываем тут: Gogetlinks - Продвигай и зарабатывай Miralinks - Размещай ...
Темы: 3728   Участники: 16836
  Интернет для начинающих пользователей
Группа начинающих пользователей Интернета. Советы, статьи, инструкции новичкам. Если вы недавно подключились к Интернету и у вас на счет него есть куча ...
Темы: 3964   Участники: 23808
 
 
 
Подписан адрес: admin10383.deep@blogger.com
Код этой рассылки: comp.prog.assembler
Архив рассылки
Отписаться:  На сайте  Почтой
Поддержка подписчиков
Убрать рекламу
Другие рассылки этой тематики
Другие рассылки этого автора
 
Рассылка производится: Subscribe.Ru / ЗАО «Интернет-Проекты» / О компании / Политика конфиденциальности

Комментариев нет:

Отправить комментарий