求dosbox tc 音乐播放器代码 c语言


#include <dos.h>
#define INIT_T2 0xb6
#define PORT_T2 0x42
#define CTRL_T 0x43
#define PORT_PB 0x61
void sing(int frq,int ms)
{
unsigned char value;
union
{
unsigned int divisor;
unsigned char d[2];
}tone;
if(frq!=0) tone.divisor=1193180/frq;
outportb(CTRL_T, INIT_T2);
outportb(PORT_T2, tone.d[0]);
outportb(PORT_T2, tone.d[1]);
value=inportb(PORT_PB);
outportb(PORT_PB, (value|0x03));
delay(ms);
outportb(PORT_PB, (value&0xfc));
}

要求用到上面的代码

main方法调用一下看看

 
#include <dos.h>
#define INIT_T2 0xb6
#define PORT_T2 0x42
#define CTRL_T 0x43
#define PORT_PB 0x61
void sing(int frq,int ms)
{
unsigned char value;
union
{
unsigned int divisor;
unsigned char d[2];
}tone;
if(frq!=0) tone.divisor=1193180/frq;
outportb(CTRL_T, INIT_T2);
outportb(PORT_T2, tone.d[0]);
outportb(PORT_T2, tone.d[1]);
value=inportb(PORT_PB);
outportb(PORT_PB, (value|0x03));
delay(ms);
outportb(PORT_PB, (value&0xfc));
}

int main() {
    clrscr();

    sing(262, 1000);

    sing(294, 1000);

    sing(330, 1000);

    sing(349, 1000);

    sing(392, 1000);

    sing(440, 1000);

    sing(494, 1000);

    sing(523, 1000);

    return 0;
}

您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632
  • 这篇博客: 汇编语言——dosbox的相关操作中的 -p 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 跳过循环执行过程
    在这里插入图片描述

  • 以下回答由chatgpt基于相关博客总结生成:

    由于问题描述不够明确,无法准确回答该问题。需要更具体的需求和情境以及提供更多的信息和代码才能给出具体的解决方案。