⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 乐曲程序.asm

📁 采用定时器方式编写程序
💻 ASM
字号:
newline	macro
     mov	ah, 02h
     mov	dl, 0dh
     int	21h
     mov	ah,  02h
     mov	dl, 0ah
     int	21h
endm
data	segment
maxlenk	db	8	;max key_word length
factlenk	db	?	;key_word length to enter
key_word 	db	8 dup(?)

maxlens	db	32	;max sentence length
factlens	db	?	;sentence length to enter
sentence	db	32 dup(?)

info1		db	'Enter Key_word:$'
info2		db	'Enter sentence:$'
mess0		db	'Match at location:$'
mess1		db	'No match.$'
mess2		db	?,?,'H of the sentence.$'
data 	ends
stack	segment	stack
stack	ends
code 	segment
main	proc	far
	assume	 cs:code, ds:data, es:data, ss:stack
	start:
	push		ds
	sub		ax, ax
	push		ax

	mov		ax, data
	mov		ds, ax
	mov		es, ax

	mov		ah, 09h
	lea		dx, info1
	int		21h

	mov		ah, 0ah
	lea		dx, maxlenk
	int		21h	; read the keyword

begin:
	newline
	mov		ah, 09h
	lea		dx, info2
	int		21h

	mov		ah, 0ah
	lea		dx, maxlens
	int		21h	; read the sentence

	newline
	lea		si, key_word
	lea		bx, sentence
	lea		di, sentence
	mov		dl, 00h
	cld
        again:
	mov		cl, factlenk
	repz		cmpsb
	jz		match
	mov             al, factlens
        sub		al,factlenk
        js		next1
  	inc   al
	lea		si, key_word
	inc		bx
	mov		di, bx
	inc		dx
	cmp		dl, al
	jl		again
next1:	
        lea		dx, mess1
	mov		ah, 09h
	int		21h
	jmp		begin
match:
	lea		dx, mess0
	mov		ah, 09h
	int		21h
	mov		ax, bx
	lea		bx, sentence
	sub		ax, bx
	mov    bx,0001h
	add    ax,bx
	and		ax, 00ffh
	xchg   ax,bx
	mov    ch, 2
rotate:	 
        mov   cl,4h
        rol   bl,cl
        mov   al,bl
        and   al,0fh
        add   al,30h
        cmp   al,3ah
        jl    print
        add   al,7h
print:	
        mov   ah,02h
        mov   dl,al
        int   21h
        dec 	ch
        jnz 	rotate
        mov 	ah,09h
        lea 	dx,mess2
        int 	21h
        jnl 	begin
        ret

main	endp
code 	ends
	end 		start

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -