Директива END
предписывает TASM прервать сборку, а также указывает точку входа в программу. В исходном коде TASM должна быть только одна такая директива, обычно в последней строке. Из-за вашей опечатки TASM собирает только подпрограмму PLAY
, и он недостаточно умен, чтобы предупредить вас, что PROC PLAY
не завершен правильно.
Измените END PLAY
на ENDP PLAY
, и ваша программа будет работать .
Обновление : Я собрал вашу программу с помощью
> tasm Meow.asm
Turbo Assembler Version 4.0 Copyright (c) 1988, 1993 Borland International
Assembling file: Meow.asm
Error messages: None
Warning messages: None
Passes: 1
, а затем скомпоновал и запустил в DOSBox на Windows 10 64-битных:
> ver
> DOSBox version 0.74-2. Reported DOS version 5.00.
> tlink Meow.obj
Turbo Link Version 3.01 Copyright (c) 1987,1990 Borland International
> Meow.exe
>
, и он сыграл два тона с высоким и низким тоном, длительностью примерно 0,8 секунды каждый, а затем завершил работу, как и ожидалось. . Вы также можете добавить несколько фиктивных инструкций в pause2
, но, как правило, измерение времени с помощью jne pause2
очень ненадежно на новых компьютерах, особенно с эмуляторами.