汇编语言文本编辑器Word文件下载.docx
- 文档编号:22380642
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:64
- 大小:28.82KB
汇编语言文本编辑器Word文件下载.docx
《汇编语言文本编辑器Word文件下载.docx》由会员分享,可在线阅读,更多相关《汇编语言文本编辑器Word文件下载.docx(64页珍藏版)》请在冰豆网上搜索。
MOVAH,03h
MOVBH,0
ENDM
posgetSMACRO
saveE
MOVAH,03h
MOVBH,0
INT10h
MOVrow,DH
MOVcolumn,DL
recover
poscurMACROx,y
MOVAH,2
MOVDH,x
MOVDL,y
;
读取键盘
readCharMACRO
MOVAH,8h
putcharMACROx
MOVDL,x
MOVAH,02H
getcharMACRO
MOVAH,0
INT16h
********************************************************
数据段定义
.386
data_segSEGMENT
totalCharsDB0;
字符总数,以此来控制数据缓冲区,
CHar1DB0b3h;
常量,是一个竖线
tempcharDB?
;
临时字节变量
musicIntDB0;
文件数量
musicIndexDB30h;
默认文件名的最后一个字符,随新建打开而增1,关闭减1
SaveAsFlagDB0;
已调用过filesaveas函数
modifyFlagDB0;
为0时已做修改
AsOrIfFlagDB0;
为0时是saveas调用
saveActiveDB78h;
根据musicInt来判断是否激活save,saveAs菜单
copyActiveDB78h;
根据copyFlag来判断是否激活copy,cut菜单
pasteActiveDB78h;
根据paste来判断是否激活paste菜单
CLearFlagDB0;
clearFlag为0时表示不需要处理选择文本,如将反色显示还原
pasteFlagDB0;
pasteFlag为0时为不能粘贴,
copyFlagDB0;
copyFlag为0时为不能复制与剪切,
pasteNumDB0;
粘贴缓冲区中字符个数.
PasteBufferDB25DUP(0)
DB'
$'
;
复制粘贴缓冲区
INsertNumDB1;
insertNum为插入字符的个数
saveDB0;
pathDB30DUP(0);
文件名存放缓冲区
DB'
bufferDB2000DUP(?
);
buffer为数据缓冲区
bakDB3850DUP(0);
视频缓冲区的备份
rowDB2;
保存行号,
columnDB1;
保存列号.
rowBakDB2
columnbakDB1
peakDB0Dah,78DUP(0C4h),0BFh,13,10,'
顶端横线
errormess1DB'
cannotcreatthefile,pathiswrong!
'
'
errormess2DB'
cannotwritetothefile!
errormess3DB'
thefilenameistoolong!
errormess4DB'
cannotopenthefile,filenameiswrong'
errormess5DB'
cannotreadthefile!
mess1DB'
Pleaseinputsavefilename:
'
mess2DB'
Pleaseinputopenfilename:
mess3DB'
***Thefileisnotsave!
Saveitnow?
(Y/N)***:
mess4DB'
pleaseinputthefilenameagain'
mess5DB'
yourputiswrong!
pleaseinputY/Nagain'
mess6DB0b3H,'
row:
column:
mess7DB'
Creatanewfile'
mess8DB'
loadsanexitingfilefromdisk'
mess9DB'
savecurrentfile'
mess10DB'
savecurrentfilewithnewname'
mess11DB'
Exitstheeditor'
mess12DB'
F1:
filemenuF4:
help'
mess21DB'
Copyselectedtexttobuffer'
mess22DB'
Deletesselectedtextandcopysit'
mess23DB'
Insertsbuffercontentshere'
mess13DB0b3H,'
modified'
mess14DB0b3h,'
NoModified'
mess15DB'
editing...pressEsccanescape'
mess16DB'
IBMPCAssembleLanguageCourseDesign'
13,10,'
mess17DB'
Edit1.0'
mess18DB'
Madebyhaozhiqiangmatenglixiaopengcaipengchenetc.'
mess19DB'
Dec,20,2013'
mess20DB'
Pressanykeystoreturn'
wennameDB'
d:
\wenjian'
0,13,10,'
文件相关数据定义
handlerDW0
菜单数据定义
str_menuDB'
File(F1)Edit(F3)Help(F4)'
file_0DB0dah,11DUP(0C4H),0BFH,13,10,'
file_1DB0B3H,'
New'
0B3H,13,10,'
file_2DB0B3H,'
Open'
file_3DB0B3H,'
Save'
file_4DB0B3H,'
Saveas'
file_5DB0B3H,'
Exit'
file_6DB0c0H,11DUP(0c4h),0d9H,13,10,'
edit_0DB0dah,10DUP(0C4H),0BFH,13,10,'
edit_1DB0B3H,'
Copy'
edit_2DB0B3H,'
cut'
edit_3DB0B3H,'
Paste'
edit_4DB0c0H,10DUP(0c4h),0d9H,13,10,'
error0DB'
OpenFilefailed'
error1DB'
thefilehaveillegalcharacter'
13,10,'
error2DB'
thefilehaveillegalcharacter2'
datedb0B3H,'
2013'
data_segENDS
*********************代码段*************8
code_segSEGMENT
ASSUMECS:
code_seg,DS:
data_seg
************主过程开始**************
start:
MOVAX,data_seg
MOVDS,AX
CALLwelcome
INit:
CALLINitwin
callwin3
GEtchar;
读键盘
CMPAH,3bh;
F1
JZshowFile
CMPAH,3ch;
F2
JZshowPlay
CMPAH,3dh;
F3
JZshowE
CMPAH,3Eh;
F4
JZshowh
CMPAH,01h
JZexitf
JMPINit
showFile:
CALLshowmenuF
showPlay:
CALLshowMenuP
showE:
CALLshowMenuE
showh:
CALLshowmenuh
exitf:
MOVAH,4ch
主执行代码结束,下面都是要调用的函数定义.
***********************************
**********欢迎模块*****************
welcomePROC
RET
welcomeENDP
----------------------------
***********初始化模块*******
功能:
初始化屏幕,显示菜单,提示信息,设置工作模式为3号字符模式
****************************
INitwinPROC
MOVAH,01h
MOVCH,03h
INT10h;
设置为字符模式03
win0,0,24,79,70h;
清屏
win1,0,23,79,07h
win2,1,23,78,27H
poscur0,0
showstr_menu
poscur1,0
showpeak;
显示上面的横线
两个循环是画左右两条线的.
MOVCL,23
LOOPf:
poscurCL,0
putcharCHar1
DECCL
CMPCL,1
JNZLOOPf
LOOPf2:
INCCL
poscurCL,79
CMPCL,23
JNZLOOPf2
poscur2,1
posgets
CALLshowRC
poscur24,1
showmess12
INitwinENDP
*************************************
蔡鹏程
************************************
********文件菜单模块*****************
当在主过程或编辑状态检测到F1而被激活的.根据用户的选择来
执行相应的菜单命令
入口参数有musicInt:
文件数量,以此来判断是激活save,saveas菜单
先保存视频缓冲区的内容,再获取键盘输入,按照输入跳到不同的分支,
每个分支都调用相应的函数来处理.
to*为当前选中项*的处理分支
to*&
其中&
是数字,为了解决汇编中的一些跳转指令分几次跳的问题,
showmenuFPROC
CALLsavedisplay
CMPmusicInt,0
JZNOTactive
MOVsaveActive,79h
JMPactiveOK
notactive:
MOVsaveActive,78h
activeOK:
win0,3,0,11,07h
win2,3,8,15,saveActive;
菜单不选中的颜色(白底黑字)
win9,4,9,16,07h;
菜单的阴影
win3,16,9,16,07h;
显示各个菜单,并设置第一个菜单为默认项,
poscur2,3
showfile_0
poscur3,3
showfile_1
poscur4,3
showfile_2
poscur5,3
showfile_3
poscur6,3
showfile_4
poscur7,3
showfile_5
poscur8,3
showfile_6
tonew:
win7,4,7,14,79h;
poscur7,3
win4,4,4,14,79h
poscur4,3
win3,4,3,14,67h
showMmess7
GEtchar
CMPAH,50h;
若按下键下方向键
JZtoOpen
CMPAH,48H
JZtoexit1
CMPAH,1ch;
若按了Enter键
JZNEwfile1
JMPexitfile;
其他就返回
toexit1:
JMPtoexit
NEwfile1:
JMPNEwfile
toOpen:
win3,4,3,14,79h
win5,4,5,14,saveActive
poscur5,3
win4,4,4,14,67h
showMmess8
CMPAH,50h
JZtoSave
JZtonew1
JMPtonew3
tonew1:
JMPtonew
tonew3:
CMPAH,1ch
JZopenfile1
JMPexitfile
openfile1:
JMPopenfile
toSave:
win6,4,6,14,saveActive
poscur6,3
win5,4,5,14,67h
showMmess9
JZtoSaveas
JZtoOpen1
JMPtoopen3
toopen1:
JMPtoopen
toopen3:
JZsavefile1
savefile1:
JMPsavefile
toSaveas:
win7,4,7,14,79h
win6,4,6,14,67h
showMmess10
JZtoExit
CMPAH,48h
JZtosave1
JMPtosave3
tosave1:
JMPtosave
tosave3:
JZsaveasfile1
saveasfile1:
JMPsaveasfile
tosaveas1:
JMPtosaveas
toExit:
win7,4,7,14,67h
showMmess11
JZtonew2
JMPtonew4
tonew2:
tonew4:
JZtosaveas3
JZEXITMusic
tosaveas3:
JMPtosaveas1
****处理不同的分支所调用的不同的函数.****/
NEwfile:
CALLfilenew
播放完毕跳到初始位置
openfile:
CALLfileopen
savefile:
CALLfilesave
saveasfile:
CALLfilesaveas
EXITMusic:
CMPmodifyFlag,0
JNZexitfile20
CALLIFsave
JMPexitMusic
exitfile20:
MOVAX,4C00h
exitfile:
CALLmenuHide
CALLBackDisplay
poscurrow,column
RET
showmenuFENDP
*********按下新建菜单时的处理函数******
入口参数有:
musicInt:
文件数量,一进入即增加1
先隐藏菜单,并用默认名创建文件,文件名根据musicInt来自动判断并更改
最后调用函数:
editFile进入编辑状态.
filenewPROC
MOVmodifyFlag,0
win1,28,1,56,70h;
写文件名
MOVSI,8
INCmusicInt
INCwenname[SI]
poscur1,35
showwenname
win2,1,23,78,017h;
工作区为蓝底白字
MOVrow,2
MOVcolumn,1
CALLEDItfile
filenewENDP
************文件打开函数*********
文件操作:
有打开,读取调用
先提示用户正确输入文件名称,错误时要特殊处理
fileopenPROC
MOVmodifyFlag,1
CALLsavedisplay
win10,15,12,73,00h
win9,14,11,72,0A4H
poscur10,15
showmess2
CALLCLspath
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 汇编语言 文本 编辑器