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

Discussion in 'WASM.BEGINNERS' started by jora, May 27, 2008.

  1. jora

    jora New Member

    Blog Posts:
    0
    Joined:
    Feb 3, 2008
    Messages:
    9
    Помогите разобраться что делают следующие процедуры, они связаны, но я не могу понять зачем тут таймер и что передается через порт 43h:
    Code (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
    Code (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

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

    Xerx Алексей

    Blog Posts:
    0
    Joined:
    Feb 17, 2005
    Messages:
    528
    Location:
    Russia
    jora
    getticks - получение "времени"
    int 1Ah - http://www.codenet.ru/progr/dos/int_0019.php
    В eax заносится число тиков.

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

    jora New Member

    Blog Posts:
    0
    Joined:
    Feb 3, 2008
    Messages:
    9
    токачто "порезал" процедуру инициализации спикера до
    Code (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 Владимир

    Blog Posts:
    0
    Joined:
    Oct 8, 2006
    Messages:
    581
    Location:
    МО
    Те строчки устанавливают режим канала таймера - генерация меандра с необх. периодом. 61 порт разрешает направление звука на динамик. Хорошо это описано в небезызвестной IO.PRT.
     
  6. jora

    jora New Member

    Blog Posts:
    0
    Joined:
    Feb 3, 2008
    Messages:
    9
    подскажите еще что эта процедура делает

    Code (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

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

    Xerx Алексей

    Blog Posts:
    0
    Joined:
    Feb 17, 2005
    Messages:
    528
    Location:
    Russia
    Причем вроде синим и зеленым...

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