📄 insertdictionary.asm
字号:
stack segment para
dw 100h dup(?) ;This program works with a file located 'words.txt'
stack ends
data segment para
fname db 'words.txt'
handle dw ?
words db 1024*10 dup(?)
len dw ?
len_p dw ?
err db 'Open file error!Please create a file named"words.txt"$'
wd db 4 dup(?)
data ends
code segment para
assume cs:code,ds:data,ss:stack
main proc
mov ax,data
mov ds,ax
call d_read
call keyin
call search ;search and insert tagert word
call insert
call d_write ;write down and close file
jmp exit
d_read:
mov dx,offset fname
mov cx,0
mov ah,3dh
mov al,02h
int 21h
jc error
mov handle,ax
mov bx,ax
mov ah,3fh
mov cx,10240
mov dx,offset words
int 21h
jc error
mov len,ax
ret
keyin:
mov ah,01h
int 21h
mov wd,al
int 21h
mov wd+1,al
int 21h
mov wd+2,al
int 21h
mov wd+3,al
ret
search:
mov cx,0
mov dl,wd
mov dh,wd+1
mov bl,wd+2
mov bh,wd+3
mov si,offset words
lp0:
cmp cx,len
jz lp3
cmp dl,[si]
jnc lp1
jc lp2
cmp dh,[si+1]
jnc lp1
jc lp2
cmp bl,[si+2]
jnc lp1
jc lp2
cmp bh,[si+3]
jnc lp1
jc lp2
inc cx
inc cx
inc cx
inc cx
mov len_p,cx
jmp lp3
lp1:
inc cx
inc cx
inc cx
inc cx
inc si
inc si
inc si
inc si
jmp lp0
lp2:
mov len_p,cx
lp3:
ret
insert:
mov bx,len_p
mov dx,len
mov cx,dx
sub cx,bx
mov si,offset words
add si,dx
kl:
mov ax,[si]
mov [si+4],ax
dec si
loop kl
mov al,wd
mov [si],al
mov al,wd+1
mov [si+1],al
mov al,wd+2
mov [si+2],al
mov al,wd+3
mov [si+3],al
ret
d_write:
mov cx,len
add cx,4
mov dx,offset words
mov bx,handle
mov ah,40h
int 21h
mov bx,handle
mov ah,3eh
int 21h
ret
error:
mov dx,offset err
mov ah,09h
int 21h
exit:
mov ax,4c00h
int 21h
MAIN ENDP
code ENDS
END MAIN
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -