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

📄 search.asm

📁 计算机汇编实验:表格显示字符
💻 ASM
字号:
;----------------------------------------------------------------------
;Program:
;Created by:
;Finished Date & Time:
;----------------------------------------------------------------------
DSEG SEGMENT
   info1 db 'Enter sentence: $'
   info2 db 'Enter keyword: $'
   
   mess0 db 'Match at location $'
   mess1 db ?,?,'H of the sentence.$'
   mess2 db 'No match!$'
   
   keywordsin label byte
   maxlenk db 32
   lenk db ?
   keywords db 32 dup(?)
   
   sentencein label byte
   maxlens db 32
   lens db ?
   sentence db 32 dup(?)
   
DSEG ENDS

CSEG SEGMENT
  assume  cs:CSEG, ds:DSEG, es:DSEG
  main proc far
  start:
  	push ds
  	sub ax,ax
  	push ax
  
  	mov ax, DSEG
  	mov ds, ax
  	mov es, ax

	call input
	call compare
	ret
  main endp
  
  input proc near
  	mov ah, 09h
  	lea dx, info1
  	int 21h
  
  	mov ah, 0ah
  	lea dx, sentencein
  	int 21h
	call newLine
  
  	mov ah, 09h
  	lea dx, info2
  	int 21h
  
  	mov ah, 0ah
  	lea dx, keywordsin
  	int 21h
	call newLine
	ret
  input endp
  
  compare proc near
  	mov	al, lens
	sub al, lenk
	js no_match	
	lea bx, sentence
	cld
	
	next:
	lea si, keywords
	mov di, bx
	mov ch, 00h
	mov cl, lenk
	repz cmpsb
	jz match
	sub al, 1
	js no_match
	inc bx
	jmp next

	no_match:
	mov ah, 09h
	lea dx, mess2
	int 21h
	call newLine
	jmp exit
	
	match:
	mov ah, 09h
	lea dx, mess0
	int 21h
	
	lea ax, sentence
	sub bx, ax
	inc bx
	
	call binihex
	mov ah, 09h
	lea dx, mess1
	int 21h
	call newLine
	exit:
	ret
  compare endp
	
  newLine proc near
	mov dl, 0dh
	mov ah, 02h
	int 21h
	mov dl, 0ah
	mov ah, 02h
	int 21h
	ret
  newLine endp
  
  binihex proc near
	mov ch, 2
	rotate:
	mov cl, 4
	rol bl, cl
	mov dl, bl
	and dl, 0fh
	add dl, 30h
	cmp dl, 3ah
	jl tochar
	add dl, 07h
	
	tochar:
	cmp ch, 1
	jz l0
	mov mess1[0], dl
	
	l0:
	mov mess1[1], dl
	
	dec ch
	jnz rotate
	ret
  binihex endp
	
CSEG ENDS

END MAIN

⌨️ 快捷键说明

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