中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 跪求把这段汇编转换成C语言!!谢谢啦!!!
作者:
标题: 跪求把这段汇编转换成C语言!!谢谢啦!!! 上一主题 | 下一主题
zj57421017
新手上路





积分 5
发帖 2
注册 2010-5-7
状态 离线
『楼 主』:  跪求把这段汇编转换成C语言!!谢谢啦!!!

一,happy birthday 生日快乐歌用21个音阶设计的程序 Void happy birthday()要用C51格式写程序! { setb tr0(tr0=1;) ;启动定时器0 start0: setb p3.3; 30h=0x00; next: mov a,30h mov dptr,#table inc dptr movc a,@a+dptr mov r5,a ;将节拍码存入r5 cjne a,#0ffh,next1 jmp ennd next1: clr c mov a,dpl subb a,#1 mov dpl,a mov a,dph subb a,#0 mov dph,a mov a,30h movc a,@a+dptr jnz sing clr tr0 ;休止符?是,则不发音 jmp d1 ;跳到d1 sing: dec a ;取到的音符码减1 mov 22h,a ;存入(22h) rl a ; 乘2 mov dptr,#table1 ;至table1取相对应的高字节 movc a,@a+dptr mov th0,a ;取到的高字节存入TH0 mov 21h,a ;取到的高字节存入(21h) mov a,22h ;乘2 rl a ;加1 inc a ;至table1取相对应的低位 movc a,@a+dptr mov tl0,a ;取到低字节存入tl0 mov 20h,a ;取到低字节存入(20h) setb tr0 ;启动timer0 d1: call delay ;声音延时 基本单位时间 1/4拍187毫秒 inc 30h ;取简码简指针加1 inc 30h ;取简码简指针加1 jmp next ;取下一个码 ennd: clr tr0 ;停止timer0 ret table: db 12,2,0,1,12,2,13,4,12,4,15,4,14,4,0,4 db 12,2,0,1,12,1,13,4,12,4,16,4,15,4,0,4 db 12,2,0,1,12,1,19,4,17,4,15,4,14,4,13,4 db 18,2,0,1,18,1,17,4,15,4,16,4,15,4,0,4 db 12,2,0,1,12,1,13,4,12,4,15,4,14,4,0,4 db 12,2,0,1,12,1,13,4,12,4,16,4,15,4,0,4 db 12,2,0,1,12,1,19,4,17,4,15,4,14,4,13,4 db 18,2,0,1,15,1,17,4,15,4,16,4,15,4,0,4,0ffh,0ffh }


2010-5-8 19:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: