8086汇编语言21键电子琴
发布日期:2021-05-07 18:24:42 浏览次数:10 分类:原创文章

本文共 3048 字,大约阅读时间需要 10 分钟。

建议使用dosbox进行qwq
(编写环境:masm5.0,dosbox0.74)

说明

qwertyu对应高音区的do lai mi fa so la xi
asdfghj对应中音区
zxcvbnm对应低音区
可以在TABLE中修改对应区域的频率,或者在此基础上加上半音,搞个十二平均律的qwq

org 100hASSUME	CS:seg2,DS:seg1seg1		SEGMENT	pstart	DB	'Program start.',0DH,0AH,'$'	pend 	DB	'Program will end when input' ,27H,'ESC',27H,'.',0DH,0AH,'$'		sec	DB	?	TABLE	DW	130		DW	146		DW  164		DW	174		DW	196		DW	220		DW	246		DW	261		DW	293		DW	329		DW	349		DW	392		DW	440		DW	493		DW	523		DW	587		DW	659		DW	698		DW	784		DW	880		DW	987seg1		ENDSSTACK	SEGMENT	PARA	STACK	'STACK'	STA	DB	48	DUP(?)	TOP	EQU	LENGTH	STASTACK	ENDSseg2		SEGMENTASSUME	CS:seg2,DS:seg1,SS:STACK,ES:seg1start:	MOV	 AX,seg1		MOV	 DS,AX		MOV	 DX,OFFSET pstart		MOV	 AH,09H		INT	 21H     				MOV	DX,OFFSET pend		MOV	AH,09H		INT	21H		MOV	AX,STACK		MOV	SS,AX		MOV	AX,TOP		MOV	SP,AX		MOV	AL,90H		OUT	63H,ALwait1:  	MOV     AH,01H					INT		21H		CMP	 	AL,1BH					JE		cse		CMP	 	AL, 'a'		JE		ka		CMP	 	AL, 's'		JE		ks		CMP	 	AL, 'd'		JE		kd		CMP	 	AL, 'f'		JE		kf		CMP	 	AL, 'g'		JE		kg		CMP	 	AL, 'h'		JE		kh		CMP	 	AL, 'j'		JE		kj		JMP		wait2 kj:		JMP		keyjka:		JMP		keyaks:		JMP		keyskd:		JMP		keydkf:		JMP		keyfkg:		JMP		keygkh:		JMP		keyhcse: 		JMP		keyESC wait2:	CMP	 	AL, 'q'		JE		kq		CMP	 	AL, 'w'		JE		kw		CMP	 	AL, 'e'		JE		ke		CMP	 	AL, 'r'		JE		kr		CMP	 	AL, 't'		JE		kt		CMP	 	AL, 'y'		JE		ky		CMP	 	AL, 'u'		JE		ku		JMP 	wait3ku:		JMP		keyukt:		JMP		keytkr:		JMP		keyrke:		JMP		keyekq:		JMP		keyqkw:		JMP		keywky:		JMP		keyywait3:		CMP	 	AL, 'z'		JE		kz		CMP	 	AL, 'x'		JE		kx		CMP	 	AL, 'c'		JE		kc		CMP	 	AL, 'v'		JE		kv		CMP	 	AL, 'b'		JE		kb		CMP	 	AL, 'n'		JE		kn		CMP	 	AL, 'm'		JE		km		CMP	 	AL, 'p'JE		kp		JMP     find kp:		JMP		keyp   km:		JMP		keymkn:		JMP		keynkb:		JMP		keybkc:		JMP		keyckx:		JMP		keyxkz:		JMP		keyzkv:		JMP		keyv	keyp:		IN	AL,61H		AND	AL,0FCH		OUT	61H,AL		JMP	wait1find:		MOV	AH,0BH		INT	21H		AND	AL,1111111B		CALL	DELAY		JNZ	find		IN	AL,61H		AND	AL,0FCH		OUT	61H,AL		JMP	wait1keyz:		MOV	BX,TABLE		JMP	SOUNDFkeyx:		MOV	BX,TABLE+2		JMP	SOUNDFkeyc:		MOV	BX,TABLE+4		JMP	SOUNDFkeyv:		MOV	BX,TABLE+6		JMP	SOUNDFkeyb:		MOV	BX,TABLE+8		JMP	SOUNDFkeyn:		MOV	BX,TABLE+10		JMP	SOUNDFkeym:		MOV	BX,TABLE+12		JMP	SOUNDFkeya:		MOV	BX,TABLE+14		JMP	SOUNDFkeys:		MOV	BX,TABLE+16		JMP	SOUNDFkeyd:		MOV	BX,TABLE+18		JMP	SOUNDFkeyf:		MOV	BX,TABLE+20		JMP	SOUNDFkeyg:		MOV	BX,TABLE+22		JMP	SOUNDFkeyh:		MOV	BX,TABLE+24		JMP	SOUNDFkeyj:		MOV	BX,TABLE+26		JMP	SOUNDFkeyq:		MOV	BX,TABLE+28		JMP	SOUNDFkeyw:		MOV	BX,TABLE+30		JMP	SOUNDFkeye:		MOV	BX,TABLE+32		JMP	SOUNDFkeyr:		MOV	BX,TABLE+34		JMP	SOUNDFkeyt:		MOV	BX,TABLE+36		JMP	SOUNDFkeyy:		MOV	BX,TABLE+38		JMP	SOUNDFkeyu:		MOV	BX,TABLE+40		JMP	SOUNDFSOUNDF:		MOV	DX,12H		MOV	AX,348CH		DIV	BX		CALL	SOUND		CALL	DELAY		JMP	findkeyESC:	MOV   	AH,4CH		INT     21HSOUND	PROC	NEAR		PUSH	AX		MOV	AL,10110110B		OUT	43H,AL		POP	AX		OUT	42H,AL		MOV	AL,AH		OUT	42H,AL		IN	AL,61H		OR	AL,03H		OUT	61H,AL		RETSOUND	ENDPDELAY	PROC	NEAR		PUSH	CX		PUSH	AX		MOV	AX,0FFFHX11:		MOV	CX,100X12:		LOOP	X12		DEC	AX		JNZ	X11		POP	AX		POP	CX		RETDELAY	ENDPseg2 	ENDS	    END   	start
上一篇:0000爬虫准备篇(持续补充)
下一篇:poj 3660 (floyd)

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2025年03月29日 01时35分34秒