User Tag List

Страница 14 из 14 ПерваяПервая ... 1011121314
Показано с 131 по 140 из 140

Тема: Помогите новичку с ассемблером!

Комбинированный просмотр

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #1

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Пользовал. Там да, бывало. Альтернативщину только старался не трогать.
    А ты уверен, что вызываемый в обработчике чужой код (плеер музыки, например) её не трогает?

  2. #1
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  3. #2

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А ты уверен, что вызываемый в обработчике чужой код (плеер музыки, например) её не трогает?
    чужой пока не использовал.

  4. #3

    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,286
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    91
    Поблагодарили
    39 сообщений
    Mentioned
    8 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Т.е. музыку на прерываниях не играл?

  5. #4

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Т.е. музыку на прерываниях не играл?
    ну только по книжке "Как написать игру...". В книге кстати авторы любят push/pop где надо и где не надо ставить. И еще их любимая команда ex (sp),hl - ненавижу, затрудняет чтение кода!

  6. #5

    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,866
    Спасибо Благодарностей отдано 
    328
    Спасибо Благодарностей получено 
    310
    Поблагодарили
    234 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Andrew771, самый простой вариант

    при таком вызове гарантированно не будет проблем с проигрыванием музыки

    push hl,de,bc,af
    exx
    ex af,af'
    push hl,de,bc,af
    push ix,iy
    call play_music
    pop iy,ix
    pop af,bc,de,hl
    exx
    ex af,af'
    pop af,bc,de,hl
    С уважением,
    Jerri / Red Triangle.

  7. #6

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Опять про прерывания.
    Объясните, почему это не работает? Вроде всё правильно нафигачил

    Код:
    			org	24000
    
    			call	im_on
    
    			ret
    
    ; процедура в прерывании
    
    im_procedure		push	af
    			push	bc
    			push	de
    			push	hl
    
    			exx
    			ex	af,af'
    
    			push	af
    			push	bc
    			push	de
    			push	hl
    
    			push	ix
    			push	iy
    
    			ld	a,3
    			call	8859
    
    			pop	iy
    			pop	ix
    
    			pop	hl
    			pop	de
    			pop	bc
    			pop	af
    
    			exx
    			ex	af,af'
    
    			pop	hl
    			pop	de
    			pop	bc
    			pop	af
    
    			jp	56
    
    
    ; включение 2-го режима прерываний
    
    im_on			di
    
    			ld	hl,64512
    			ld	de,64513
    			ld	bc,256
    			ld	(hl),253
    			ldir
    
    			ld	hl,im_procedure
    			ld	(65021),hl
    
    			ld	a,252
    			ld	i,a
    			im	2
    
    			ei
    
    			ret

  8. #7

    Регистрация
    07.02.2008
    Адрес
    г. Рязань
    Сообщений
    2,928
    Спасибо Благодарностей отдано 
    37
    Спасибо Благодарностей получено 
    124
    Поблагодарили
    44 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Andrew771 Посмотреть сообщение
    Код:
    			ld	hl,im_procedure
    			ld	(65021),hl
    Тут беда. В 65021 надо засовывать не адрес обработчика, а сам обработчик. Если хочется, чтобы он был в другом месте, надо сделать JP туда, напримеор, так:
    Код:
             ld a,#c3        ; jp
             ld (65021),a
             ld hl,im_procedure
             ld (65022),hl
    PS А главная беда этого примера - десятичные числа.

  9. #8

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Alex Rider Посмотреть сообщение
    В 65021 надо засовывать не адрес обработчика, а сам обработчик.
    Спасибо, заработало. Понял. Я думал, там просто адрес нужно, а оказыца вот.

  10. #9

    Регистрация
    01.03.2005
    Адрес
    Саранск
    Сообщений
    5,830
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    247
    Поблагодарили
    106 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Прерыванию делаются примерно так (у меня в примере на прерываниях висит музыка). Можно без ldir'а, если сразу туда ассемблировать.

    Код:
    imtab		equ #be00 //таблица вектора прерываний (257 байт)
    int_jump	equ #bdbd //обработчик
    
    start
    	di:ld sp,#6000
    	xor a:out (#fe),a
    // прерывания
    	ld hl,imtab:ld a,h,i,a
    	ld a,low int_jump
    	ld (hl),a:inc l:jr nz,$-2
    	inc h:ld (hl),a
    	ld hl,obrab,e,a,d,a,bc,obrab_len:ldir
    	im 2
    	call music // init music
    	ei
    
    loop	
    	halt
    	jr loop
    	
    	
    obrab	//обработчик прерываний (работает с адреса #bdbd)
    	push af,hl,bc,de,ix,iy
    	exx
    	push hl,de,bc
    	ex af,af'
    	push af
    	call music+5
    	pop af
    	ex af,af'
    	pop bc,de,hl	
    	exx
    	pop iy,ix,de,bc,hl,af
    	ei
    	ret
    obrab_len	equ $-obrab
    
    music	incbin "music.cod"	//пт3-модуль с плеером
    Последний раз редактировалось Shadow Maker; 08.05.2014 в 14:16.
    Свирепый агрессивно-депрессивный мордовец!
    Не уверен - не напрягай!

    Не сдавайся. Дыши?

    Virtual TR-DOS

  11. #10

    Регистрация
    29.12.2010
    Адрес
    Москва
    Сообщений
    1,869
    Спасибо Благодарностей отдано 
    142
    Спасибо Благодарностей получено 
    110
    Поблагодарили
    66 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Shadow Maker Посмотреть сообщение
    Прерыванию делаются примерно так (у меня в примере на прерываниях висит музыка).
    ну практиццки то же самое

Страница 14 из 14 ПерваяПервая ... 1011121314

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Помогите новичку
    от Миша в разделе Разный софт
    Ответов: 54
    Последнее: 23.06.2011, 09:08
  2. Помогите разобраться с ассемблером
    от casperzx в разделе Программирование
    Ответов: 7
    Последнее: 07.09.2010, 22:27
  3. CP/M помогите новичку!
    от scooby-do в разделе Оси
    Ответов: 13
    Последнее: 12.05.2007, 19:41
  4. Помогите новичку.
    от tmp_online в разделе Программирование
    Ответов: 6
    Последнее: 03.03.2007, 11:36
  5. Помогите новичку!!!
    от Mister в разделе Несортированное железо
    Ответов: 19
    Последнее: 23.01.2007, 04:14

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •