汇编课程设计简易文本编辑器.docx
- 文档编号:23816105
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:11
- 大小:16.45KB
汇编课程设计简易文本编辑器.docx
《汇编课程设计简易文本编辑器.docx》由会员分享,可在线阅读,更多相关《汇编课程设计简易文本编辑器.docx(11页珍藏版)》请在冰豆网上搜索。
汇编课程设计简易文本编辑器
简易文本编辑器
双击可执行文件wbbjq.exe,在出现的界面中输入任意文本内容,利用DEL键、
BACKSPACE键、HOME键、END键、上下左右光标键对文本进行全屏幕编辑,
按f1键激活菜单file,下移光标,选择save,输入文件名。
也可以选择FILE菜单
的其他菜单项,他们的功能均可实现。
按f10激活帮助,按ESC键退出帮助。
red_chrmacro;读取字符宏定义
movah,0
int16h
endm
stringmacrop1;输入字符光标
movah,9
leadx,p1
int21h
endm
winmacroopr1,opr2,opr3,opr4,opr5,opr6;建立窗口
movah,06h
moval,opr1
movbh,opr2
movch,opr3
movcl,opr4
movdh,opr5
movdl,opr6
int10h
endm
pos_cursemacroop1,op2,op3;定义光标位置
movah,2
movbh,op1
movdh,op2
movdl,op3
int10h
endm
pos_getmacro;显示光标位置
movah,03h
movbh,0
int10h
endm
datasegment;定义数据段
menudb'FileEditHelp$'
mass_1db'F1ActivefileF10Activehelp','$'
manu_1db'New',13,10,'$'
manu_2db'Open',13,10,'$'
manu_3db'Save',13,10,'$'
manu_4db'Saveas',13,10,'$'
manu_5db'Exit','$'
handledw?
message1db'Pleaseinputfilename:
','$'
message2db'Pleaseinputsavefilename:
','$'
message3db'Pleaseinputopenfilename:
','$'
message4db'***Thefileisnotsave!
Saveitnow?
(Y/N)***:
','$'
pathdb50dup(0),'$'
bufferdb2000dup(?
)
bakdb3850dup(0)
linedb?
rowdb?
chardb?
help_mas1db'welcomeuseeditor!
$';帮助内容
help_mas2db'pleasethefirstactivehelp!
$'
help_mas3db'goodlucky!
!
$'
help_mas4db'==========================================================$'
help_mas5db'PressF1toactivefile.$'
help_mas6db'YoucanuseDOWNcursorkeytochoosethefuction$'
help_mas7db'PressF10toshowthehelpmassage.PressEscToQuit$'
datedb'today?
?
/?
?
/','$' ;调用日期
hangliedb'?
?
?
//?
?
?
','$' ;行//列
dataends
codesegment
mainprocfar;主程序
assumecs:
code,ds:
data
start:
pushds
subax,ax
pushax
movax,data
movds,ax
callwind
calledit
ret
mainendp
windprocnear;创建窗口子程序
win0,3eh,1,0,24,79;定义窗口背景
win1,1fh,0,0,0,79
win0,1fh,24,0,24,79
show:
;显示菜单位置及内容
pos_curse0,0,1
movah,9
leadx,menu
int21h
show_2:
;显示状态栏位置及内容
pos_curse0,24,1
movah,9
leadx,mass_1
int21h
callwin3
callwin4
pos_curse0,1,0
movrow,dh
movline,dl
windendp
editprocnear
char_get:
;读字符
callcom
comprocnear;定义功能鍵
pos_get
movrow,dh
movline,dl
first:
pos_curse0,row,line
j00:
movah,0
int16h;从键盘读字符ah=扫描码al=字符码
pushax
leadx,buffer
movbuffer[bx],al
incbx
cmpah,48h;上
jzup_1
cmpah,50h;下
jzdown_1
cmpah,4bh;左
jzleft
cmpah,4dh;右
jzright
cmpah,1ch;回车
jzenter_1
callfuc_key
movah,2
movdl,al
int21h
popax
callmenu_show
jmpj6
down_1:
jmpdown
enter_1:
jmpenter_2
up_1:
jmpup
left:
;光标左移
pos_get
movrow,dh
movdl,line
cmpline,0
jnzdirect
movline,79
decrow
cmprow,0
jestop2
jmpfirst
stop2:
movrow,1
jmpfirst
direct:
decline
callwin4;显示光标位置
jmpfirst
right:
;光标右移
pos_get
movrow,dh
movdl,line
cmpline,79
jnzdirect2
movline,0
incrow
cmprow,24
jereturns1
jmpfirst
direct2:
incline
callwin4
jmpfirst
enter_2:
jmpenter
up:
;上移光标
pos_get
movrow,dh
movdl,line
decrow
cmprow,0
jestop1
callwin4
jmpfirst
stop1:
movrow,1
jmpfirst
down:
;下移光标
pos_get
movrow,dh
movdl,line
incrow
cmprow,24
jestop3
callwin4
jmpfirst
stop3:
movrow,23
jmpfirst
returns1:
jmpreturns
enter:
;回车换行
pos_get
movrow,dh
movline,dl
incrow
cmprow,24
jereturns
movline,0
callwin4
jmpfirst
returns:
movrow,24
movline,0
jmpfirst
j6:
ret
comendp
fuc_keyprocnear;功能键子程序
next:
cmpah,47h;home
jzhome
cmpah,4fh;end
jz_end
cmpah,0eh;backspace
jzbak_sp
cmpah,53h
jzdel
cmpah,44h;F10
jzhelp_0
ret
help_0:
callhelp
home:
;HOME键的功能
pos_get
movrow,dh
movline,0
callwin4
jmpfirst
_end:
;END键的功能
pos_get
movrow,dh
movline,79
callwin4
jmpfirst
bak_sp:
;退格键的功能
pos_get
movrow,dh
movline,dl
cmpline,0
jestop
decline
jmpab
stop:
movline,0
ab:
pos_get0,row,line
movah,2
movdl,00
int21h
callwin4
jmpfirst
del:
;DEL删除
pos_get
movrow,dh
movline,dl
decline
pos_get0,row,line
movah,2
movdl,00
int21h
incline
callwin4
jmpfirst
cm:
cmpline,00
jzpos_cm
pos_cm:
pos_curse0,0,0
jmpfirst
helpprocnear;显示帮助信息
callsavedisplay;显示帮助信息每行的位置
pos_get
pushdx
win0,57h,4,5,21,70
pos_curse0,6,25
stringhelp_mas1
pos_curse0,8,11
stringhelp_mas2
pos_curse0,10,11
stringhelp_mas3
pos_curse0,12,11
stringhelp_mas4
pos_curse0,14,11
stringhelp_mas5
pos_curse0,16,11
stringhelp_mas6
pos_curse0,18,11
stringhelp_mas7
popdx
pos_curse0,dh,dl
movah,0
int16h
cmpah,36h;F10activehelp
jnzcls
callhelp
cls:
win0,1eh,9,10,13,70;清屏
callbackdisplay
helpendp
fuc_keyendp
menu_showprocnear;显示菜单
callsavedisplay
pushcx
cmpah,3bh;F1功能
jzmenu_sh
jmpchar_get
menu_sh:
;定义菜单的背景字体颜色
pos_get
pushdx
win0,06h,2,1,7,11
win0,65h,1,0,6,10
pos_curse0,1,0
stringmanu_1
stringmanu_2
stringmanu_3
stringmanu_4
stringmanu_5
popdx
decdl
pos_curse0,dh,dl
copmar:
red_chr
cmpah,50h
jzmanu_n
jmpmanu_hid
manu_hid:
;菜单隐藏
win0,1eh,1,1,7,11
callbackdisplay
jmpchar_get
manu_n:
;开始定义各个菜单项
win0,65h,5,1,5,8
pos_curse0,5,0
stringmanu_5
win0,15h,1,1,1,8
pos_curse0,1,0
stringmanu_1
red_chr
cmpah,48h
jemanu_n
cmpal,0dh
jznew_1
cmpah,50h
jemanu_o
jmpmanu_hid
manu_n0:
jmpmanu_n
manu_o:
win0,65h,1,1,1,8
pos_curse0,1,0
stringmanu_1
win0,15h,2,1,2,8
pos_curse0,2,0
stringmanu_2
red_chr
cmpah,48h
jemanu_o
cmpal,0dh
jzopen_1
cmpah,50h
jemanu_s
jmpmanu_hid
new_1:
jmpnew_2
manu_s:
win0,65h,2,1,2,8
pos_curse0,2,0
stringmanu_2
win0,15h,3,1,3,8
pos_curse0,3,0
stringmanu_3
red_chr
cmpal,0dh
jzsave_1
cmpah,48h
jemanu_s
cmpah,50h
jemanu_a
jmpmanu_hid
open_1:
jmpopen_2
manu_n1:
jmpmanu_n
manu_a:
win0,65h,3,1,3,8
pos_curse0,3,0
stringmanu_3
win0,15h,4,1,4,8
pos_curse0,4,0
stringmanu_4
red_chr
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编 课程设计 简易 文本 编辑器