- 从键盘读入一个字符串,以Enter结束,字符串不超过50个字符,并打印该字符串;查找该字符串中间是否有‘asm’子串,如果有,输出‘Yes’,否则,输出‘No’)。
stack segment stack
dw 512 dup(?)
stack ends
data segment
buffer db 50,?,50 dup('$')
y db 'Yes$'
n db 'No$'
data ends
code segment
assume cs:code,ds:data,ss:stack
start: mov ax,data
mov ds,ax
mov ah,0ah
lea dx,buffer
int 21h
mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,9
lea dx,buffer[2]
int 21h
mov dl,buffer[1]
mov bx,2
again: cmp dl,3
jb no
cmp buffer[bx],'a'
jz next
inc bx
dec dl
jmp again
next: inc bx
dec dl
cmp buffer[bx],'s'
jz next1
jmp again
next1: dec dl
inc bx
cmp buffer[bx],'m'
jz yes
jmp again
yes: mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,9
lea dx,y
int 21h
jmp done
no: mov ah,2
mov dl,0ah
int 21h
mov ah,2
mov dl,0dh
int 21h
mov ah,9
lea dx,n
int 21h
done: mov ah,4ch
int 21h
code ends
end start