Системное программное обеспечение. Рощин А.В. - 99 стр.

UptoLike

Составители: 

99
in al,61h ; Чтение состояния системного порта В
and al,0fch ; Запрещение звучания (биты 0 и 1)
out 61h,al ; Запись в системный порт В
inc cs:tek_mel ; Переход к адресу след. ноты
inc cs:tek_mel ; след. длительности
ret
muz2: or bl,bl ; = 0 ?
jnz muz3 ; Продолжение
jmp muze ; Выход, если признак конца
muz3: shl bl,1 ; Умножение bl на 2
xor bh,bh ; bh = 0
mov ax,cs:noty[bx] ; В DI частота ноты
; Программирование делителя частоты 2 канала
inc cs:tek_mel ; Переход к адресу след. ноты
inc cs:tek_mel ; и след. длительности
out 42h,al ; Мл.
байт частоты канал 2 таймера
xchg al,ah ; AH
AL
out 42h,al ; Ст.байт частоты
канал 2 таймера
; Разрешение звучания
in al,61h ; Чтение состояния системного порта В
or al,3 ; Разрешение звучания (биты 0 и 1)
out 61h,al ; Запись в системный порт В
ret ; Нормальный выход
muz endp
kbin proc near ; Ввод с клавиатуры
; Процедура совпадает с одноименной в задаче 2.4.2.1.
kbin endp
mel1 db 17,2,255,1,13,2,255,1,17,2,255,1,13,2,255,1,18,2,255,1, 17,2
db 255,1,15,4,255,2, 8,2,255,1,8,2,255,1,8,2,255,1,10,1,255,1
db 12,1,255,1,13,2,255,1,13,2,255,1,13,4,0
mel2 db 1,4,4,4,8,4,4,4,6,8,4,4,3,4,8,8,6,8,1,12,0
noty dw 0eeeh,0e18h,0d49h,0c8eh,0bdfh,0b2fh,0abeh, 9f7h,968h
dw 8e0h,861h,7e8h,777h,70ch,6a5h,647h, 5edh,597h,547h
dw 4fbh,4b4h,470h,430h,3f4h, 3bbh,386h,352h,323h,2f6h,2cbh
dw 2a3h,27dh,25ah,238h,218h,1fah, 1ddh,1c3h,1a9h,192h,17bh
dw 166h,152h,13fh,12dh,11ch,10ch,0fdh,0
code ends
END Start
                                    99



      in   al,61h       ; Чтение состояния системного порта В
      and al,0fch       ; Запрещение звучания (биты 0 и 1)
      out 61h,al        ; Запись в системный порт В
      inc cs:tek_mel ; Переход к адресу след. ноты
      inc cs:tek_mel ; след. длительности
      ret
muz2: or   bl,bl        ;=0?
      jnz muz3          ; Продолжение
      jmp muze          ; Выход, если признак конца
muz3: shl bl,1          ; Умножение bl на 2
      xor bh,bh         ; bh = 0
      mov ax,cs:noty[bx]       ; В DI частота ноты
; Программирование делителя частоты 2 канала
      inc cs:tek_mel ; Переход к адресу след. ноты
      inc cs:tek_mel ; и след. длительности
      out 42h,al        ; Мл.байт частоты ⇒ канал 2 таймера
      xchg al,ah        ; AH ⇔ AL
      out 42h,al        ; Ст.байт частоты ⇒ канал 2 таймера
; Разрешение звучания
      in   al,61h       ; Чтение состояния системного порта В
      or   al,3         ; Разрешение звучания (биты 0 и 1)
      out 61h,al        ; Запись в системный порт В
      ret               ; Нормальный выход
muz endp
kbin proc near          ; Ввод с клавиатуры
; Процедура совпадает с одноименной в задаче 2.4.2.1.
kbin endp
mel1 db    17,2,255,1,13,2,255,1,17,2,255,1,13,2,255,1,18,2,255,1, 17,2
      db   255,1,15,4,255,2, 8,2,255,1,8,2,255,1,8,2,255,1,10,1,255,1
      db   12,1,255,1,13,2,255,1,13,2,255,1,13,4,0
mel2 db    1,4,4,4,8,4,4,4,6,8,4,4,3,4,8,8,6,8,1,12,0
noty dw 0eeeh,0e18h,0d49h,0c8eh,0bdfh,0b2fh,0abeh, 9f7h,968h
      dw 8e0h,861h,7e8h,777h,70ch,6a5h,647h, 5edh,597h,547h
      dw 4fbh,4b4h,470h,430h,3f4h, 3bbh,386h,352h,323h,2f6h,2cbh
      dw 2a3h,27dh,25ah,238h,218h,1fah, 1ddh,1c3h,1a9h,192h,17bh
      dw 166h,152h,13fh,12dh,11ch,10ch,0fdh,0
code ends
      END Start