版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、实验报告 实验目 的 综合运用已学知识独 立完成课程设计,熟练掌握汇编语言程序 设计的基础知识。 实验题 目 简易英英词典 功能要求: 1. 单词及其英文解释的录入、修改和删除 ( 1) 录入的新单词,把它 插入到相应的位置 (和一般词典一样 ); ( 2) 可修改单词英文解释 ; ( 3) 删除单词及其英文解 释; 2. 查找: ( 1) 输入不完整的 字符串,会依顺序列出单词前缀和字符串 相匹配的单词; 如输入: en 列出: enable, enabled, enact 等 ( 2) 查询某个单 词英文解释 ( 如 enable: to provide with the means or
2、 opportunity; to make possible, practical, or easy) ,词 库中不存在此单词,则提 示找不到; ( 3) 查询某个单词的同义 词 (如 accept: approve) ; ( 4) 查询某个单词的反义 词 (如 win: lose) ; 3. 显示: 界面美观 实验内 容 一、数据文件结构说 明 1、每个词义(共 4个) 占 64字节,近义词占 64字节,反义词占 64字节,均以 $结 束。 2、单词索引表置于文件 尾,每个索引项中单词占 22 字节(包含结束符 $),单词信息 块位置信息占 2字节 。单词索引表以空格组成的串为结束标志 。
3、3、文件最末尾的 6个字 节,分别记录单词索引表中单词个数(包 含空格组成的串 ), 单词索引表距文件首 的字节数(依次为高位字、低位字 )。 一、功能模块及主要 宏、函数 1、查询模块 ( 1)、mycmps 功能:字符串比较 参数: mycmpstab0 字符串 1 偏移地址 ; mycmpstab2 字符串 2 偏移地址。 返回: str1 str2 CF= 0,ZF= 0。 ( 2)、halfsearch 功能:字符串查找( 折半) 参数: halfsearchtab 0 字符串缓冲区偏移地址; halfsearchtab 2 字符串个数; halfsearchtab 4 查询字符串偏
4、移地址; halfsearchtab 6 字符串长度。 返回:查找成功, CF=0 ,ax 返回匹配串的偏 移地址。 查找不成功, CF=1,ax 返回查询串插入时偏移地址。 2、显示模块 ( 1)、displayword 功能:显示单词前缀 和字符串相匹配的单词 参数: displaywordtab0 字符串缓冲区偏移地 址; displaywordtab2显示字符串个 数; displaywordtab4 displaywordtab8 字符串长度; displaywordtab6 亮行位置; 返回光标位置; displaywordtab10 实际显示字符串个数。 返回: 2)、 功能:
5、参数: 操作成功, displaywordtab10 返回实际显示 字符串个数,光标位于 displaywordtab8 设置位置。 readwordinfo 读取单词解释 、近义词、反义词信息 readwordinfotab0 单词信息块位置; readwordinfotab2 存放信息块缓冲区 偏移地址; readwordinfotab4 单词信息块大小。 返回: 操作成功,从 文件中读取信息块于主存偏移地址为 readwordinfotab2 缓冲区中。 3)、 功能: 4)、 功能: 参数: showasentence 显示一条单词 信息 showwordinfo 显示单词信息 sho
6、wwordinfotab0 showwordinfotab2 showwordinfotab4 showwordinfotab6 showwordinfotab8 单词索引表中该单词的偏移地址; 单词信息缓 单词信息块 返回光标位 实际显示单 冲区偏移地址; 大小; 置; 词信息条数。 操作成功,显 示单词信息, showwordinfotab8 返回实际显示单词 信息条数, 光标位于 showwordinfotab6 设置位置。 3、编辑模块 1)、indexinsert 功能: 参数: 返回: 在单词索引表 中插入一个单词 indexinserttab0 单词索引表偏移地址; indexi
7、nserttab2 单词索引表单词个数; 单词大小; indexinserttab6 插入单词的偏移地址; 插入位置偏移地址。 返回: (2)、 功能: 参数: 数; indexdeletetab4 删除位置偏移地址。 单词索引表中 删除一个单词,完成索引表信息的维护。 indexinserttab4 indexinserttab8 单词索引表中 插入一个单词,完成索引表信息的维护。 indexdelete 在单词索引表 中删除一个单词 indexdeletetab0 单词索引表偏移地址; indexdeletetab2 单词索引表单词个 返回: 3)、inputnewinfo 功能:接受新的
8、单词 信息 哑元: bufad 存放新的单词信息的缓冲区偏移地址; maxindex 最大下标值,信息中 字符个数减结束符减 1; charperline 输入时每行字符数; specialpoint 键入 BackSpace 需 特殊处理的点; wndb 窗口属性; begincursor 接受字符起始光标位置。 4)、appdnewword 功能:添加新的单词 5)、editnotfind 功能:完成未找到匹 配单词时的编辑(添加操作) 参数: editnotfindtab 单词插入索引表位置偏移地 址。 6)、delallwordinfo 功能:删除一个单词 。 7)、editfind
9、功能:完成找到匹配 单词时的编辑(修改、删除操作) 参数: editfindtab 单词插入索引表位置偏移地址 。 4、文件处理模块 ( 1)、createfile 功能:创建文件 参数: createfiletab0 ASCIZ 串偏移地址; createfiletab2 文件属性; createfiletab4 出错信息偏移地址; createfiletab6 返回文件代号。 返回:操作成功, createfiletab6 返回文件代号, CF=0 。 操作不成功, 输出提示信息, CF=1。 ( 2)、openfile 功能:打开文件 参数: openfiletab 0 ASCIZ 串偏
10、移地址; openfiletab 2 出错信息偏移地址。 返回:操作成功, handle 返 回文件代号, CF=0。 操作不成功, 输出提示信息, CF=1。 ( 3)、movfp 功能:移动文件指针 参数: handle 文件代号; movfptab 0 移动方式码; movfptab 2 偏移字节数(高位 );movfptab 4 偏移字节数(低位 ); movfptab 6 出错信息偏移地址。 返回:操作成功, CF=0 。 操作不成功,输出提 示信息, CF=1。 ( 4)、wrfile 功能:读 /写文件 参数: handle 文件代号; wrfiletab 0 读 / 写; wr
11、filetab 2 数据缓冲区 偏移地址; wrfiletab 4 读 /写字节 数; wrfiletab 6 出错信息偏 移地址。 返回:操作成功, CF=0 。 操作不成功,输出提 示信息, CF=1。 5、绘制界面模块 ( 1)、drawwnd 功能:绘制窗口 哑元: attribute 窗口属性; wndleftr 左上角行号; wndleftc 左上角列号; wndrightr 右上角行号; wndrihgtc 右上角行号。 ( 2)、setcursor 功能:设置光标位置 哑元: page 页号; row 行号; colu mn 歹U号; addp 页号增量;addr 行号增量;
12、addc 列号增量。 (3) 、in terface 功能:绘制界面 (4) 、operdeclare 功能:显示操作说明 、程序流程图 dseg segmentdata indexelemsize equ 24 wordmaxsize equ 23 wordinfosize equ 64 wordmeaningsize equ 384 Up equ 48h Down equ 50h Left equ 4Bh BackSpace equ 08h KeyEsc equ 1bh Dollar equ 24h Enter equ 0dh dictionary db Weeds Dictionary
13、1.0$ inpmsg db Input the word:$ indexmsg db Index:$ welcomemsg db Welcome to use Weeds Dictionary 1.0$ pathmsg db Please input the path of words.dat$ escmsgdb Esc: exit$ entermsg db Enter: edit$ bslmsg db BackSpace and Left: step back$ upmsg db Up: line up$ downmsg db Down: line down$ meaningmsg db
14、Meaning:$ synonymsmsg db Synonyms:$ antonymmsg db Antonym:$ nofindmsg0 dbNO FIND! _$ nofindmsg1 db PRESS ENTER TO EDIT THE WORD! _$ editnotfindmsg db Append(A) $ appendmsg db Append:$ editfindmsg db Modify(M) Delete(D) $ modifymsg db Modify:$ deletemsg db Delete:$ optionmsg0 db Word(W) $ optionmsg1
15、db Meaning(M) Synonyms(S) $ optionmsg2 db Antonym(A) $ optretmsg db Return(R): $ operfinmsg db Operation has finished! *_*$ retmsg db Enter R or r to return: $ nosynonymsmsg db no synonyms$ noantonymmsg db no antonym$ meaningnomsg db Meaning NO.(14): $ savechgmsgdb Save the information? Y/N $ delmsm
16、sg db Delete the information? Y/N $ delnotemsg db LOSE ALL WORDS INFORMATION: Y/N $ mdfywdmsg db !_! REALLY TO DO THAT: Y/N $ crefilmsg db ERROR: createfile()$ opefilmsg db ERROR: openfile()$ movfpmsg db ERROR: movfp()$ wrfilemsg db ERROR: wrfile()$ clsfilmsg db ERROR: closefile()$ defaultpath db c:
17、weeddic, 0 wndone1r db0 wndone1c db 0 wndone2r db24 wndone2c db 79 wndoneb db 96h barone1r db 1 barone1c db 0 barone2r db 1 barone2c db 79 baroneb db 70h bartwo1r db 2 bartwo1c db 31 bartwo2r db 24 bartwo2c db 31 bartwob db 70h wndtwo1r db 4 wndtwo1c db 3 wndtwo2r db 5 wndtwo2c db 26 wndtwob db 0fch
18、 wndthree1r db 9 wndthree1c db 3 wndthree2r db 22 wndthree2c db 26 wndthreeb db 0f2h wndfour1r db 4 wndfour1c db 36 wndfour2r db 22 wndfour2c db 75 wndfourb db 0fdh wndwel1r db 10 wndwel1c db20 wndwel2r db 14 wndwel2c db57 wndwelb db 0e0h wndeditb db 0f5h wndsaveb db 0edh wndeditnb db 0f6h mycmpstab
19、 dw 2 dup(?) ;str1ad str2ad halfsearchtab dw 4 dup(?) ;wordsad tablen searchwordad wordsize indexinserttab dw 5 dup(?) ;indexad indexlen wordsize inswordad insertad indexdeletetab dw 4 dup(?) ;indexad indexlen wordsize deletead displaywordtab dw 7 dup(?) ;wordarrad displaynum wordsize lightline retc
20、ursor realdispnum showwordinfotab dw 5 dup(?) ;wordad wordinfoad wordinfosize nonemptynum returncursor readwordinfotab dw ? ;wordplace inputpath db 37, 0 pathnamedb 37 dup(?) handle dw ? ;share createfiletab dw 4 dup(?) openfiletab dw 2 dup(?) movfptab dw 4 dup(?) wrfiletab dw 4 dup(?) closefiletab
21、dw ? ;ascizad fileattribute msgad rethandle ;pathname msgad ;movfpway movfph movfpl msgad ;w/r, bufferad size msgad ;msgad findflag db cpyflag db ? editnotfindtab dw ? editflag db 0 editfindtab dw ? ;insertplace ;ifedit ;deletead indexinfo dw 3 dup(?) searchword db 23 dup(Dollar) wordmeaning label b
22、yte wordm1 db 64 dup(?) wordm2 db 64 dup(?) wordm3 db 64 dup(?) wordm4 db 64 dup(?) similar db 64 dup(?) opposite db64 dup(?) wordsindex db 10000 dup(?) dseg ends ssegsegment stack stack db 256 dup(0) ssegends cseg segment code assumeds:dseg, ss:sseg, cs:cseg pushregister macro r1, r2, r3, r4 push r
23、1 push r2 push r3 push r4 endm popregister macro r1, r2, r3, r4 pop r1 pop r2 pop r3 pop r4 endm drawwnd macro attribute, wndleftr, wndleftc, wndrightr, wndrihgtc pushregister ax, bx, cx, dx mov ax, 0600h mov bh, attribute mov ch, wndleftr mov cl, wndleftc mov dh, wndrightr mov dl, wndrihgtc int 10h
24、 popregister dx, cx, bx, ax endm setcursor macro page, row, column, addp, addr, addc push ax push bx push dx mov ah,2 mov bh, page add bh, addp mov dh, row add dh, addr mov dl, column add dl, addc int 10h pop dx pop bx pop ax endm printc macro char push ax push dx mov ah,2 mov dl, char int 21h pop d
25、x pop ax endm printstr macro strname push ax push dx mov ah, 9 mov dx, offset strname int 21h pop dx pop ax endm putstr macro straddr push ax push dx mov ah, 9 mov dx, straddr int 21h pop dx pop ax endm interface macro drawwnd wndoneb, wndone1r, wndone1c, wndone2r, wndone2c drawwnd baroneb, barone1r
26、, barone1c, barone2r, barone2c drawwnd bartwob, bartwo1r, bartwo1c, bartwo2r, bartwo2c drawwnd wndtwob, wndtwo1r, wndtwo1c, wndtwo2r, wndtwo2c drawwnd wndthreeb, wndthree1r, wndthree1c, wndthree2r, wndthree2c drawwnd wndfourb, wndfour1r, wndfour1c, wndfour2r, wndfour2c setcursor 0, 0, 28, 0, 0, 0 pr
27、intstr dictionary setcursor 0, 3, 3, 0, 0, 0 printstr inpmsg setcursor 0, 8, 3, 0, 0, 0 printstr indexmsg endm operdeclare macro setcursor 0, wndfour1r, wndfour1c, 0, 1, 3 printstr escmsg setcursor 0, wndfour1r, wndfour1c, 0, 2, 3 printstr entermsg setcursor 0, wndfour1r, wndfour1c, 0, 3, 3 printstr
28、 bslmsg setcursor 0, wndfour1r, wndfour1c, 0, 4, 3 printstr upmsg setcursor 0, wndfour1r, wndfour1c, 0, 5, 3 printstr downmsg endm firstuse macro wndwel2c drawwnd wndwelb, wndwel1r, wndwel1c, wndwel2r, setcursor 0, wndwel1r, wndwel1c, 0, 1,1 printstr welcomemsg setcursor 0, wndwel1r, wndwel1c, 0, 2,
29、2 printstr pathmsg setcursor 0, wndwel1r, wndwel1c, 0, 3,1 mov ah, 0ah mov dx, offset inputpath int 21h mov bh, 0 mov bl, inputpath1 add bx, 2 mov inputpathbx, 0 mov createfiletab0, offset defaultpath mov createfiletab2, 02 mov createfiletab4, offset crefilmsg call createfile mov ax, createfiletab6
30、mov handle, ax mov wrfiletab0, 4000h mov wrfiletab2, offset inputpath1 mov wrfiletab4, bx mov wrfiletab6, offset crefilmsg call wrfile mov closefiletab0, offset clsfilmsg call closefile endm notfirstuse macro mov wrfiletab0, mov wrfiletab2, mov wrfiletab4, mov wrfiletab6, call wrfile 3f00h offset in
31、putpath1 1 offset wrfilemsg mov wrfiletab2, offset pathname mov ah, 0 mov al, inputpath1 mov wrfiletab4, ax call wrfile mov closefiletab0, offset clsfilmsg call closefile sub wndwel2r, 2 drawwnd wndwelb, wndwel1r, wndwel1c, wndwel2r, wndwel2c setcursor 0, wndwel1r, wndwel1c, 0, 1,1 printstr welcomem
32、sg add wndwel2r, 2 mov ah,1 or ch, 20h int 10h mov ax, 3000h mov cx, 0ffffh timedelay: timdly: loop timdly decax jnz timedelay mov ah,1 mov ch, 0dh mov cl, ch int 10h endm main proc far mov ax, dseg mov ds,ax mov es,ax mov ax, 3 ;screeninitialize int 10h interface mov ax, 3d00h mov dx, offset defaul
33、tpath int 21h mov handle, ax jc firsttime notfirstuse jmp dicstart firsttime: firstuse dicstart: interface mov openfiletab0, offset pathname ;open words.dat mov openfiletab2, offset opefilmsg call openfile jc firsttime operdeclare setcursor 0, wndtwo1r, wndtwo1c, 0, 0, 3 mov mov mov movfptab0, 4202h
34、 movfptab2, 0ffffh movfptab4, 0fffah movfptab6, ;read indexinformation:len add mov call movfp jc toclosefile mov wrfiletab0, mov wrfiletab2, mov wrfiletab4, mov wrfiletab6, call wrfile offset movfpmsg 3f00h offset indexinfo 6 offset wrfilemsg jc toclosefile ;wordsindex mov movfptab0, 4200h mov dx, i
35、ndexinfo4 mov movfptab2, dx mov cx, indexinfo2 mov movfptab4, cx call movfp jc toclosefile mov ax, indexinfo0 mov dx, indexelemsize mul dx cmp dx, 0 jz readwordsindex setcursor 0, wndfour1r, wndfour1c, 0, 1, 3 putstr openfiletab0 jmp toclosefile readwordsindex: mov wrfiletab2, offset wordsindex mov
36、wrfiletab4, ax call wrfile jc toclosefile redwdindfin: ;input search word mov halfsearchtab0, offset wordsindex mov halfsearchtab4, offset searchword mov halfsearchtab6, indexelemsize mov displaywordtab2, 10 mov displaywordtab4, wordmaxsize ;not beyond 418h mov displaywordtab8, 405h mov readwordinfo
37、tab2, offset wordm1 mov readwordinfotab4, wordmeaningsize mov showwordinfotab2, offset wordm1 mov showwordinfotab4, wordinfosize mov cx, 0 mov si, 0 mov findflag, 2 getchar: mov ah,0 int 16h cmp al, KeyEsc jz escape cmp al, Enter jnz notenter cmp byte ptr findflag, 2 jz notenter cmp byte ptr findfla
38、g, 1 jnz calleditnotfind char then di = 1 mov di, 0 ;di is use to be a flag, if al is a call editfind jmp dealwithchar calleditnotfind: mov di, 0 call editnotfind jmp dealwithchar notenter: cmp word ptr displaywordtab8, 418h ja notletter cmp al, Dollar jz notletter cmp al, 20h jb notletter cmp al, 7
39、eh jbe isletter isletter: mov ah,2 mov bh, 0 mov dx, displaywordtab8 int 10h mov ah,2 mov dl, al int 21h mov di, 1 ;flag mov searchwordsi, al inc si dealwithchar: mov findflag, 1 mov cpyflag, 1 mov ax, indexinfo0 decax mov halfsearchtab2, ax call halfsearch jnc meaningdisplay mov findflag, 0 mov cpy
40、flag, 0 drawwnd wndfourb, wndfour1r, wndfour1c, wndfour2r, wndfour2c setcursor 0, wndfour1r, wndfour1c, 0, 1, 3 printstr nofindmsg0 setcursor 0, wndfour1r, wndfour1c, 0, 3, 3 printstr nofindmsg1 jmp wordsdisplay meaningdisplay: mov editfindtab, ax mov bx, ax ;(ax) is the correct position after call
41、halfsearch mov bx, bx+22 mov readwordinfotab0, bx call readwordinfo mov showwordinfotab0, ax mov bx, displaywordtab8 mov showwordinfotab8, bx call showwordinfo mov cx, 0 wordsdisplay: mov editnotfindtab, ax mov displaywordtab0, ax mov displaywordtab6, 0 add displaywordtab8, di call displayword jmp g
42、etchar notletter: cmp al, BackSpace jnz notbackspace isbackspace: cmp si, 0 jle notbackspace decsi mov searchwordsi, Dollar mov ax, 0600h mov bh, wndtwob dec displaywordtab8 mov cx, displaywordtab8 mov dx, cx int 10h mov ah, 2 mov bh, 0 mov dx, displaywordtab8 int 10h mov cx, 0 mov di, 0 jmp dealwit
43、hchar notbackspace: cmp ah, Up jnz notup cmp cx, 0 jle notup deccx jmp changeline notup: cmp ah, Down jnz notdown cmp cx, displaywordtab10 jge notdown inc cx jmp changeline notdown: cmp ah, Left jz isbackspace jmp getchar changeline: mov displaywordtab6, cx call displayword mov bx, displaywordtab0 m
44、ov ax, cx cmp cx, 0 jnz chglinenextnz mov dl, cpyflag mov findflag, dl jmp chglinenextz chglinenextnz: mov findflag, 1 decax chglinenextz: mov dx, indexelemsize mul dx add bx, ax mov ax, bx+22 mov readwordinfotab0, ax call readwordinfo mov showwordinfotab0, bx mov ax, displaywordtab8 mov showwordinf
45、otab8, ax call showwordinfo mov editfindtab, bx jmp getchar escape: mov movfptab0, 4200h mov ax, indexinfo2 mov dx, indexinfo4 mov movfptab2, dx mov movfptab4, ax call movfp mov wrfiletab0, 4000h mov wrfiletab2, offset wordsindex mov ax, indexinfo0 mov dx, indexelemsize mul dx mov wrfiletab4, ax mov
46、 wrfiletab6, offset wrfilemsg call wrfile mov wrfiletab2, offset indexinfo mov wrfiletab4, 6 call wrfile mov movfptab0, 4202h mov movfptab2, 0ffffh mov movfptab4, 0fffah call movfp call wrfile toclosefile: mov closefiletab, offset clsfilmsg call closefile exit: mov ax, 4c00h ;exit to operating syste
47、m. int 21h main endp displayword proc near ;wordarrad displaynum wordsize lightline retcursor realdispnum pushregister ax, bx, cx, dx push si drawwnd wndthreeb, wndthree1r, wndthree1c, wndthree2r, wndthree2c mov bx, displaywordtab6 cmp bx, 0 jle todisplayindex decbx mov ax, 0600h mov ch, wndthree1r
48、add ch, bl mov cl, wndthree1c mov dh, ch mov dl, wndthree2c mov bh, 0b2h int 10h todisplayindex: mov bx, displaywordtab0 ;indexad cmp byte ptr bx, 20h jz displayfinish mov si, 0 mov cx, 0 mov dh, wndthree1r mov dl, 5 displayindex: cmp cx, displaywordtab2 ;diplaynum jge displayfinish push bx mov ah,
49、2 mov bh, 0 int 10h pop bx push dx mov dx, bx add dx, si mov ah, 9 int 21h pop dx inc cx add si, displaywordtab4;wordsize inc si cmp byte ptr bx+si, 20h jz displayfinish inc dh jmp displayindex displayfinish: mov ah, 2 mov dx, displaywordtab8 mov bh, 0 int 10h mov displaywordtab10, cx pop si popregi
50、ster dx, cx, bx, ax ret displayword endp readwordinfo proc near ;wordplace wordmeanad wordmeansize push ax push dx mov ax, readwordinfotab0 mov dx, wordmeaningsize mul dx mov movfptab2, dx mov movfptab4, ax call movfp mov ax, readwordinfotab2 mov dx, readwordinfotab4 mov wrfiletab0, 3f00h mov wrfile
51、tab2, ax mov wrfiletab4, dx call wrfile pop dx pop ax ret readwordinfo endp showasentence macro ;accessorial macro local printchar, print, nextsentence mov si, 0 mov di, 34 printchar:;because somesentence is too long cmp byte ptr bx+si, Dollar jz nextsentence cmp si, di jle print inc cl setcursor 0,
52、 wndfour1r, wndfour1c, 0, cl, 3 add di, 34 print: mov ah, 2 mov dl, bx+si int 21h inc si jmp printchar nextsentence: endm showwordinfo proc near ;wordad wordinfoad wordinfosize returncursor, nonemptynum 略 showwordinfo endp mycmps proc near ;str1str2 cf=0 and zf=0 pushregister si, di, dx, ax mov si,
53、mycmpstab0 ;offset str1 mov di, mycmpstab2 ;offset str2 mov dh, 50 strcmp: cmp byte ptr si, Dollar;25h lahf mov al, ah cmp byte ptr di, Dollar;25h lahf and al, 41h and ah, 41h cmp ah, al jnz strcmpfinish cmp ah, 40h jnz strcmpcontinue xor ah, ah jmp strcmpfinish strcmpcontinue: mov dl, si cmp dl, di
54、 jz strcmpnext jmp strcmpfinish strcmpnext: inc si inc di decdh jnz strcmp strcmpfinish: popregister ax, dx, di, si ret mycmps endp halfsearch proc nearpush si ;low push di ;high push dx mov dx, 0 ;swordad ;wordsad mov si, halfsearchtab4 mov mycmpstab0, si mov si, halfsearchtab0 mov mycmpstab2, si c
55、all mycmps jb nofind ja chklast mov ax, si clc jmp hsfinish chklast: mov ax, halfsearchtab2 decax mul halfsearchtab6 mov di, ax add di, si mov mycmpstab2, di call mycmps jb search ja lastnofind mov ax, di clc jmp hsfinish search: mov ax, di sub ax,si div halfsearchtab6 shr ax, 1 mul halfsearchtab6 a
56、dd ax, si mov mycmpstab2, ax call mycmps jb midgreater ja midless clc jmp hsfinish midless: mov si, ax add si, halfsearchtab6 jmp hsnext midgreater: mov di, ax sub di, halfsearchtab6 hsnext: cmp si, di jbe search lastnofind: mov ax, di ;ax the correct position add ax, halfsearchtab6 stc jmp hsfinish
57、 nofind: mov ax, si stc hsfinish: pop dx pop di pop si ret halfsearch endp indexinsert proc near pushregister ax, dx, si, di mov ax, indexinserttab2 ;indexlen mov di, indexinserttab4 ;wordsize mul di mov si, ax add si, indexinserttab0 decsi begin with 0 mov ax, indexinserttab8 ;insertplace movechar:
58、 cmp si, ax jb toinsertword mov dl, si mov di, indexinserttab4 add di, si mov di, dl decsi jmp movechar toinsertword: mov di, indexinserttab6 mov si, ax mov ax, 1 insertword: cmp ax, indexinserttab4 ja idxinsfinish mov dl, di mov si, dl inc ax inc si inc di jmp insertword idxinsfinish: mov ax, index
59、info2 mov dx, indexinfo4 mov di, wordmeaningsize div di mov si, indexinserttab8 mov si+22, ax inc indexinfo0 add indexinfo2, di adc indexinfo4, 0 popregister di, si, dx, ax ret indexinsert endp indexdelete proc near ;indexad indexlen wordsize deletead pushregister ax, dx, si, di mov si, indexdeletet
60、ab6 mov ax, indexdeletetab2 mov di, indexdeletetab4 mul di add ax, indexdeletetab0 deleteword: cmp si, ax jae deletefinish mov di, si add di, indexdeletetab4 mov dl, di mov si, dl inc si jmp deleteword deletefinish: dec indexinfo0 popregister di, si, dx, ax ret indexdelete endp disphintmsg macro hin
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 电梯用齿轮传动装置项目运营指导方案
- 复写本文具产业链招商引资的调研报告
- 安全剃刀产业链招商引资的调研报告
- 出租鞋行业经营分析报告
- 光学冷加工设备产品供应链分析
- 农村有机农业行业相关项目经营管理报告
- 企业风险保险行业市场调研分析报告
- 竹笛商业机会挖掘与战略布局策略研究报告
- 农业作物病害化学防治行业营销策略方案
- 宗教教育行业经营分析报告
- 24秋国家开放大学《公共关系学》实训任务一答案
- BIOS基础知识题库单选题100道及答案解析
- 2024年银行考试-建设银行纪检监察条线考试近5年真题附答案
- 中国老年骨质疏松症诊疗指南(2023)解读课件
- GB/T 44448-2024低速风洞性能测试规范
- 婚庆公司转让合同模板
- 广东开放大学2024年秋《国家安全概论(S)(本专)》形成性考核作业参考答案
- 2024年新人教版一年级数学上册课件 第二单元 6~10的认识和加、减法 2. 6~9的加、减法 课时2 解决问题(一)
- 探索低空应用场景实施方案
- 盘扣式卸料平台施工方案
- CTF信息安全竞赛理论知识考试题库大全-上(单选题)
评论
0/150
提交评论