📄 yanzy3.asm
字号:
data segment
buff1 db 10
db 0
db 10 dup(0)
buff2 db 10
db 0
db 10 dup(0)
l db 2
buff3 db 'notfound',0dh,0ah,'$'
data ends
sst segment
top dw 50 dup(?)
sst ends
code segment
assume cs:code,ds:data,ss:sst
start:mov ax,data
mov ds,ax
mov ax,sst
mov ss,ax
lea dx,buff1
mov ah,0ah
int 21h;输入第一个数,必须带符号两位数。
lea dx,buff2
mov ah,0ah
int 21h;输入第二个数,必须带符号两位数。
lea si,buff1(2)
lea di,buff2(1)
mov bl,buff2(1)
cmp buff1(1),bl
ja kkk;若buff2无字符则没找到
add bl,1
firstcmp1:inc di
dec bl
cmp bl,0
jna notfound
;================================
; ; pushf
; mov dl,'<'
; mov ah,2
; int 21h
; mov dl,bl
; add dl,30h
; mov ah,2
; int 21h
; mov dl,'>'
; mov ah,2
; int 21h
; popf ;调试用
;================================
firstcmp :mov dh,[di]
cmp [si],dh
;===========================
; pushf
; mov dl,'['
; mov ah,2
; int 21h
; mov dl,dh
; mov ah,2
; int 21h
; mov dl,']'
; mov ah,2
; int 21h
; popf ;调试用
;==============================
je chazhao;比较第一个字符相同则跳到chazhao
jmp firstcmp1
kkk:jmp notfound
chazhao :cmp buff1(1),bl
ja notfound;剩余字符数比第一字节数少notfound
push di
mov ch,0
mov cl,buff1(1)
dec cx
chazhao1: inc si
inc di
mov dh,[di]
cmp [si],dh
;===========================
; pushf
; mov dl,'{'
; mov ah,2
; int 21h
; mov dl,dh
; add dl,30h
; mov ah,2
; int 21h
; mov dl,'}'
; mov ah,2
; int 21h
; popf ;调试用
;==============================
jne inner
loop chazhao1
jmp found
inner:pop di
lea si,buff1(2)
inc di
dec bl
jmp firstcmp
found: mov dl,0dh
mov ah,2
int 21h
mov dl,0ah
mov ah,2
int 21h;回车换行
mov ch,buff2(1)
sub ch,bl
mov dl,ch
add dl,31h
mov ah,2
int 21h
jmp over
notfound: lea dx,buff3
mov ah,9
int 21h
over: mov ax,4c00h
int 21h
code ends
end start
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -