Непонятные процедуры

Тема в разделе "WASM.BEGINNERS", создана пользователем jora, 27 май 2008.

  1. jora

    jora New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2008
    Сообщения:
    9
    Помогите разобраться что делают следующие процедуры, они связаны, но я не могу понять зачем тут таймер и что передается через порт 43h:
    Код (Text):
    1. getticks proc
    2.     mov ah,00h
    3.     int 1ah
    4.     mov ax, cx
    5.     shl eax, 16
    6.     mov ax, dx
    7.     ret              
    8. getticks endp
    Код (Text):
    1. start_sound proc
    2.     mov al, 0b6h
    3.     out 43h, al            
    4.     mov ax, tone        
    5.     out 42h, al            
    6.     xchg al,ah            
    7.     out 42h, al            
    8.  
    9.     in al, 61h     
    10.     or al, 3       
    11.     out 61h, al          
    12.     ret                    
    13. start_sound     endp
     
  2. ring4

    ring4 New Member

    Публикаций:
    0
    Регистрация:
    19 ноя 2006
    Сообщения:
    279
    если мне не изменяет память, то через 43н проходит управляющий регистр первого таймера.
    -- канал 2 режим 3
    дальше пойдет писк через динамик
    in al, 61h - устанавливает состояние порта в ал
    or al, 3 -устанавливает байты 0 и 1 в 1
    out 61h, al - тепреь динамик включен
     
  3. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    jora
    getticks - получение "времени"
    int 1Ah - http://www.codenet.ru/progr/dos/int_0019.php
    В eax заносится число тиков.

    start_sound - инициализация спикера
    Юров, Зубков, Гуголь и т.д....
     
  4. jora

    jora New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2008
    Сообщения:
    9
    токачто "порезал" процедуру инициализации спикера до
    Код (Text):
    1. start_sound proc
    2.     in al, 61h     
    3.     or al, 3       
    4.     out 61h, al          
    5.     ret                    
    6. start_sound     endp
    разницы не заметил. нужны ли те строки что в первом моем посту?
     
  5. Vov4ick

    Vov4ick Владимир

    Публикаций:
    0
    Регистрация:
    8 окт 2006
    Сообщения:
    581
    Адрес:
    МО
    Те строчки устанавливают режим канала таймера - генерация меандра с необх. периодом. 61 порт разрешает направление звука на динамик. Хорошо это описано в небезызвестной IO.PRT.
     
  6. jora

    jora New Member

    Публикаций:
    0
    Регистрация:
    3 фев 2008
    Сообщения:
    9
    подскажите еще что эта процедура делает

    Код (Text):
    1. CLR proc
    2.     cld                
    3.     mov cx,0a000h
    4.     mov es,cx
    5.     xor di,di  
    6.     mov cx, divisor
    7.     mov ax, cx
    8.     shl ax, 6  
    9.     mov ch, cl
    10.     xor cl, cl  
    11.     add cx, ax
    12.     mov bx, 320*200
    13.     sub bx, cx      
    14.     mov al,1
    15.     rep stosb  
    16.     mov al,2
    17.     mov cx, bx
    18.     rep stosb   ­
    19.     ret
    20. CLR endp
     
  7. _basmp_

    _basmp_ New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2005
    Сообщения:
    2.939
    jora
    беглым взглядом закрашивает экран (vga, режим 13h) двумя цветами. Сперва 1-м (дивизор*256+дивизор*64=дивизор*320 точек = дивизор линий), потом 2-м (до конца).
     
  8. Xerx

    Xerx Алексей

    Публикаций:
    0
    Регистрация:
    17 фев 2005
    Сообщения:
    528
    Адрес:
    Russia
    Причем вроде синим и зеленым...

    UPD: хотя от палитры зависит.