break和continue一般用于循环,进行打断
return是返回结果值,如果为了中断程序
一般通过 return false 去中止程序的继续运行
推出node命令行:两次ctrl+C或者一次ctrl+D 退出终端:exit(经测试,都没什么问题) 快捷键是ctrl+d或者输入.exit,在node下输入.help你会看到一个命令清单,里边介绍了常用命令。 希望我的回答对你有帮助。DATA SEGMENTmesg1 db 'Enter keyword:','$'
mesg2 db 'Enter Sentence:','$'
mesg3 db 'No match!',13,10,'$'
mesg4 db 'after ','$'
mesg5 db 'H times search found it.',13,10,'$'
change db 13,10,'$'回车换行
locdb 0
sen1 label byte
max1 db 20 能存入最大字符数
cnt1 db ? 输入字符数、计算机自动填写
stor1 db 20 dup(?) 开始存放字符的段
sen2 label byte
max2 db 100
cnt2 db ?
stor2 db 100 dup(?)
DATA ENDS
CODE SEGMENT
main proc far
assume cs:code,ds:data,es:data
START:
mov ax,data
mov ds,ax
mov es,ax
lea dx,mesg1显示提示语Enter keyword
mov ah,09h
int 21h
lea dx,sen1
mov ah,0ah
int 21h 用21号 0a号功能获取关键字
cmp cnt1,1
js START
lea dx,change 回车换行
mov ah,09h
int 21h
xor cx,cx 清空CX
insentence:
lea dx,mesg2显示提示语Enter Sentence
mov ah,09h
int 21h
lea dx,sen2
mov ah,0ah
int 21h 用21号0a号功能获取关键字所要查询的句子
lea dx,change
mov ah,09h
int 21h
mov bl,cnt2
cmp bl,cnt1如果字符串长度小于关键字长度 则直接退出
js exit
sub bl,cnt1计算比较次数
mov loc,bl
inc loc
mov bx,0bx清零
lookup:
mov cl,[cnt1] 设置循环次数为关键字长度
lea si,stor1 将关键字的首地址放到si
lea ax,stor2 将句子的首地址放到ax
add ax,bx 确定比较查找的起始地址
mov di,ax
cld
rep cmpsb 循环比较
jz matchloca 相等则转移到 matchloca
inc bl 不等则 bl加1
cmp bl,loc
je fail 比较 bl与 可比较次数如果到了句尾则跳转到 fail
jmp lookup 跳转到 lookup 比较的地址加1(即往后移一位)
matchloca:
lea dx,mesg4显示提示语 Match at location
mov ah,09h
int 21h
mov ah,02h 利用21号02号功能 显示dl中ASC码对应字符
add bl,1将比较查询次数存入bl
mov cl,4
mov al,bl 比较次数存入al
rol al,cl al循环左移四位
mov cl,2
jmp locadis
matchloca1:
lea dx,mesg5补全提示语,并回车换行
mov ah,09h
int 21h
jmp insentence
fail:
lea dx,mesg3 显示提示语 No match! 回车换行
mov ah,09h
int 21h
jmp insentence 再次输入句子查询
locadis:
dec cl
and al,0fh al保留后四位(即查询次数的高四位)
cmp al,10 比较al与10的大小
jnb locadisword大于等于则跳转至 locadisword 以字母显示
add al,'0' 显示数字
locadisdig:显示ASC码对应的字符(0~9)
mov dl,al
mov ah,02h
int 21h
cmp cl,0
je matchloca1
mov al,bl
jmp locadis
locadisword: 显示ASC码对应的字符(a~f)
sub al,10
add al,'a'
jmp locadisdig
exit:
ret 返回原调用函数的下一行
main endp
CODE ENDS
END START