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

📄 si.asm

📁 这是我上汇编实验课做的三个实验程序
💻 ASM
字号:
data segment 
message1 db 'please input the sentance.',13,10,'$' 
message2 db 'please input the key word',13,10,'$' 
message3 db 'yes ,match',13,10,'$' 
message4 db 'oh! no match !',13,10,'$' 
seg1 db 50,?,50 dup(?) 
seg2 db 30,?,30 DUP(?) 
data ends 
code segment 
assume cs:code,ds:data,es:data 
start: 
mov ax,data 
mov ds,ax 
mov es,ax 

mov dx,offset message1 
mov ah,09h 
int 21h 
mov dx,offset seg1 
mov ah,0ah 
int 21h 

mov dx,offset message2 
mov ah,09h 
int 21h 
mov dx,offset seg2 
mov ah,0ah 
int 21h 


mov ax,offset seg1 
mov bx,offset seg2 
mov dx,[ax+1] ; 初步设定cx的外部循环的次数 
add ax,2 
mov si,ax;将si指向输入字符的头 
add bx,2 
push bx;保存这个指针,后面会用到 
mov di,bx;将di指向key的头 
cld ;比较方向为正 

L2: mov ax,dx ;保存外部的cx值 
mov cx,[bx-1] ;将key的长度给cx,来进行比较 
repe cmpsb ;字符比较 
jz L1 ;若比较完的时候发现相等zf=1,就表示匹配 
inc si; 要是每次比较完不相等zf=0,就将si下移 
pop di; 将di重新指向key的开始 
push di;并将di保存,瑕疵使用 
mov cx,ax ;将外部cx的值重新拿出来 
cmp cx,[bx-1] ;比较剩下的长度是否比key的还短 
jb L4 ;长度短于就直接输出不匹配 
loop L2 ;回去并重新开始 

L4: mov dx,offset message4 
mov ah,09h 
int 21h 
jmp L3 ;输出不匹配,并退出 

L1: mov dx,offset message3 
mov ah,09h 
int 21h ;输出匹配 
L3: mov ah,04ch 
int 21h 

code ends 
end start

⌨️ 快捷键说明

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