Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.12.2015, 23:42   #1
Annie Square
Новичок
Джуниор
 
Регистрация: 28.12.2015
Сообщений: 1
По умолчанию Помогите с дописанием программы для лабораторной работы.

Я уже написала музыкальные ноты и захендлила на кнопку 'M' мелодию.
Сейчас пытаюсь реализовать другую кнопку при нажатии которой мелодия приостановится, а при повторном нажатии музыка опять начнёт играть с того же места. Не понимаю как сделать что то вроде "метки", чтобы музыка играла именно с того места где и была остановка. Какие нибудь идеи? Работаю GUI Turbo Assembler (TASM)
Код:
TITLE   MUSIC.EXE
STACKSG SEGMENT PARA    STACK   'Stack'
    DW  128 DUP(?)
STACKSG ENDS
DATASG  SEGMENT PARA    'Data'

DATASG  ENDS
CODESG  SEGMENT PARA    'Code'
ASSUME  CS:CODESG, DS:DATASG, SS:STACKSG, ES:NOTHING
SOUND   PROC
    PUSH    AX
    PUSH    BX
    PUSH    CX
    PUSH    DX
    PUSH    DI
    MOV AL, 0B6H
    OUT 43H, AL
    MOV DX, 14H
    MOV AX, 4F38H
    DIV DI
    OUT 42H, AL
    MOV AL, AH
    OUT 42H, AL
    IN  AL, 61H
    MOV AH, AL
    OR  AL, 3
    OUT 61H, AL
L1: MOV CX, 6801
L2: LOOP    L2
    DEC BX
    JNZ L1
    MOV AL, AH
    OUT 61H, AL
    POP DI
    POP DX
    POP CX
    POP BX
    POP AX
    RET
SOUND   ENDP
MAIN    PROC
    MOV BX, 50
L3: MOV AH, 0
    INT 16H
    CMP AL, 'x'
    JE  EXIT
    CMP AL, 'q'
    JE  DO 
    CMP AL, 'w'
    JE  RE
    CMP AL, 'e'
    JE  MI
    CMP AL, 'r'
    JE  FA
    CMP AL, 't'
    JE  SOL
    CMP AL, 'y'
    JE  LA
    CMP AL, 'u'
    JE  CI
    CMP AL, 'm'
    JE  MEL
    JNZ L3
DO: MOV DI, 131
    CALL    SOUND
    JMP L3
RE: MOV DI, 147
    CALL    SOUND
    JMP L3
MI: MOV DI, 165
    CALL    SOUND
    JMP L3
FA: MOV DI, 175
    CALL    SOUND
    JMP L3
SOL:    MOV DI, 196
    CALL    SOUND
    JMP L3
LA: MOV DI, 220
    CALL    SOUND
    JMP L3
CI: MOV DI, 247
    CALL    SOUND
    JMP L3
EXIT:   MOV AH, 00H
    MOV AL, 03H
    INT 10H
    MOV AX, 4C00H
    INT 21H
    RET
MEL:    

L4: LOOP L4
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 196
    CALL    SOUND
    MOV DI, 196
    CALL    SOUND
    MOV DI, 175
    CALL    SOUND
    MOV DI, 165
    CALL    SOUND
    MOV DI, 220
    CALL    SOUND
    MOV DI, 220
    CALL    SOUND
    MOV DI, 196
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    MOV DI, 147
    CALL    SOUND
    JMP L4
MAIN    ENDP
CODESG  ENDS
END MAIN

Последний раз редактировалось Annie Square; 29.12.2015 в 00:03.
Annie Square вне форума Ответить с цитированием
Старый 01.01.2016, 20:39   #2
R71MT
Участник клуба
 
Аватар для R71MT
 
Регистрация: 16.06.2011
Сообщений: 1,428
По умолчанию

..ИМХО, таким способом паузу не организуешь.
Используй функции Sound Blaster, MIDI или DMA
Нашедшего выход - затаптывают первым..
R71MT вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тема лабораторной работы music66 Операционные системы общие вопросы 1 15.04.2011 18:03
разработка программы для выполнения виртуальной лабораторной seleter Помощь студентам 1 18.11.2010 02:26
программа для лабораторной работы "Генетические алгоритмы" maximp Фриланс 2 11.11.2010 20:14
Исправление лабораторной работы... Sudeki Помощь студентам 0 07.12.2009 18:37
помогите разобраться с заданием лабораторной работы tiger Помощь студентам 2 26.09.2009 00:38