📄 keti3_2.sub
字号:
search_cmp proc near
;功能: 查找 及 显示
;入口参数:si_si字符串存放地址
; cx_cx= 字符串长度
; pointadd=相对偏移量
;返回值:ax=0000没找到记录时
;---------------
mov filerecord,0
mov fileend,0
mov searchrecord,0
;---------------
mov cx,0
mov ax,4200h
mov dx,10
int 21h;使文件指针指向第一项记录
;--------------
search_loop:
;--------------
lea dx,recordpl
mov cx,80
mov bx,handle
mov ah,3fh
int 21H ;读一项记录
;--------------
cmp ax,0;是否到文件末尾
jne cmp_1;没
mov fileend,1;到了-〉文件结束标志=1
cmp_1:
lea dx,recordpl
mov di,dx
add di,pointadd
mov cx,cx_cx
mov si,si_si
REP CMPSB
cmp cx,0
je record_print;找到>>>>>>>>>>>>
;否则:------------------------------------
cmp fileend,1
je no_search;直到文件结束都没找到
inc filerecord;下一记录
jmp search_loop
;------------------------------------------
record_print: ;打印这条记录>>>>>>>>>
call tablehead ;打印表头
call recordtype ;打印这条记录
mov ax,filerecord
mov searchrecord,ax;保存这条记录号
inc filerecord ;记录数加一
cmp fileend,1;文件是否结束
je search_exit;是
jmp search_loop
;继续查找 直到文件结束
;-------------------------------------------
no_search:
;---------------
mov al,02h
call scrn
mov row,23
mov col,00h
call curs
lea dx,nosearch
mov ah,09h
int 21h
;显示:没有相关的记录
;-------------
call getch
mov ax,0000
ret;返回值 0000
search_exit:
mov al,05h
call scrn
mov col,0
mov row,20
call curs
mov ax,1
ret
search_cmp endp
;------------------------------------------
;查找功能完成
;------------------------------------------
rewriterecord proc near
;重写某记录
mov al,02h
mov bh,0fh
call scrn_bx
mov row,23
mov col,00
call curs
;
lea dx,rewritemeg
;'Do you want eo rewrite this reord?[y\n]:'
mov ah,9
int 21h
;提示信息:是否重写 默认否
;-----------------------
call getch
cmp al,'y'
je change_record
cmp al,'Y'
je change_record
ret ;不重写 返回
;-----------------------
change_record: ;记录重写
mov ax,searchrecord
mov filerecord,ax
call in_record;显示:是第几记录
;输入一条记录
;保存改正后的结果
;改写文件指针到需要改写的地方
;具体由searchrecord确定
mov ax,searchrecord
mov dx,0
mov cx,80
mul cx
add ax,10
;ax指向要改写的记录
mov bx,handle
mov cx,0000
mov dx,ax
mov al,00
mov ah,42h
int 21h;使文件指针指向要改写的记录
call saveinf;保存这条记录
lea dx,newinf6
mov ah,09h
int 21h;显示:该记录以成功保存
;------------------
mov al,03
call scrn
mov row,22
mov col,00
call curs
;光标定位 卷屏
;------------------
call getch
ret
rewriterecord endp
;--------------------------------------
recordtype proc near;显示一条记录
mov al,01h
call scrn_bx
mov row,24
mov col,00
call curs
;光标上卷一行
lea dx,recordpl
mov ah,09h
int 21h;打印记录
ret
recordtype endp
;—————————————————————————
tablehead proc near
;显示表头
mov al,02h
call scrn_bx
mov row,23
mov col,00
call curs
;
lea dx,nam_in
mov ah,09h
int 21h
mov cx,0006h
call drow_line
;
lea dx,tel_in
mov ah,09h
int 21h
mov cx,0008h
call drow_line
;
lea dx,mobile_in
mov ah,09h
int 21h
mov cx,0006h
call drow_line
;
lea dx,adress_in
mov ah,09h
int 21h
mov cx,000eh
call drow_line
;
lea dx,mail_in
mov ah,09h
int 21h
mov cx,0002h
call drow_line
;
ret
tablehead endp
;---------------------------------------
;------------------------------------
drow_line proc near
push dx
push ax
mov dl,'='
mov ah,02h
dorw_loop:
int 21h
loop dorw_loop
pop ax
pop dx
ret
drow_line endp
;---------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -