汇编文本编辑器大作业

合集下载

我的汇编大作业MASM32的环境熟悉

我的汇编大作业MASM32的环境熟悉

汇编大作业MASM32环境的熟悉首先看看我们汇编程序的流程,开发一个程序,熟悉一下它的流程:如下图所示:工欲善其事必先利其器工具去网上下载MASM32,笔者在此提供一个网址:/进去之后点击下载,然后选择中国程序员下载的文件,点击下载就OK了下载下来后是一个加压的软件包,解压后是一个可执行文件,如图所示:双击这个图标,即可安装,它属于多组织或者个人开发的一个集合开发环境,所以里面有许多的协议或者规定,弹出文件框的时候一直点确定即可安装成功(里面的盘符选择选为C盘比较爱好,以后调用系统的DLL,或者加载速度比较快),安装最后阶段会有DOS的一个长时间刷屏过程是程序与WINDOWS的匹配调用过程,这时候等待一会就好了安装成功后的启动方法:C:\masm32\qeditor, 双击即可,如下所示图标打开的界面如图所示:首先我们来看看基本的界面吧和WINDOWS的许多编辑界面基本一样,标题栏有:文件,编辑,选择,工程,工具,代码,符号转化,脚本,窗口,帮助下面我们逐个讲解:文件:里面有:保存,另存为,新建,打印等等各种和WORD 里面一样的东西如下图:基本上每一个都有一个快捷键最常用的是New,Open和Open in New Window,分别代表:新建,打开,在新的窗口打开编辑:里面有:撤销,反撤销,复制,粘贴,剪切如下图:这里我介绍几个与其他软件不同的地方:Undo:撤销Redo:反撤销,就是把撤销的东西再次撤销,很方便自己错误的改变,可以很方便的做出挽回选择:里面有很多操作,下作说明如下图:Upper Case:中文名,转为大写字母,当你选中一段文档的时候,点击它,可以将你选中区域中的小写字母转化为大写字母Lower Case:中文名,转化小写字母,遇上一个相反,是将你选中区域类的大写字母全部转化为小写字母Reverse Text:撤销前两种对文档的操作More Indent:是选中区域和前者区域之间的空格变大,在文档整理阶段比较好用,便于程序的阅读。

程序编辑的必备工具文本编辑器推荐

程序编辑的必备工具文本编辑器推荐

程序编辑的必备工具文本编辑器推荐文本编辑器是程序编辑的必备工具之一。

它为程序员提供了一个便捷且高效的环境,用于编辑、调试和管理代码。

在选择适合自己的文本编辑器时,往往需要考虑诸多因素,如界面友好度、功能强大程度、插件扩展性以及跨平台兼容性等。

下面将为大家推荐几款优秀的文本编辑器,帮助程序员提高开发效率。

一、Sublime TextSublime Text是一款强大且流行的文本编辑器,被广大程序员所喜爱。

它提供了简洁的界面和丰富的功能,支持多种编程语言的语法高亮、自动补全和宏命令等。

Sublime Text还支持插件扩展,可以根据个人需求进行定制。

其跨平台特性使得程序员可以在不同操作系统上进行开发,极大地提高了开发效率。

二、Visual Studio CodeVisual Studio Code是由微软推出的一款轻量级代码编辑器,其功能强大、易于使用,并且拥有丰富的插件生态系统。

Visual Studio Code支持多种编程语言,提供了智能代码补全、调试、版本控制等功能,使得程序员能够更加高效地进行开发。

它还具有丰富的主题可供选择,可以个性化编辑器的外观。

三、AtomAtom是GitHub开发的一款开源文本编辑器,被誉为“21世纪的编辑器”。

它具有可定制化的界面、快速的性能和丰富的插件生态系统。

Atom支持多种编程语言,提供了代码片段、文件目录树、项目管理等实用功能。

同时,Atom还具有Git和GitHub的集成,方便程序员进行代码版本管理。

四、Notepad++Notepad++是一款免费的文本编辑器,适用于Windows环境。

尽管它的功能相对较简单,但Notepad++提供了语法高亮、代码折叠、宏命令等功能,足以满足大部分程序员的需求。

在开发小型项目或进行简单的代码编辑时,Notepad++是一个不错的选择。

五、VimVim是一款老牌而强大的文本编辑器,它具有丰富的特性和高度可定制性。

Vim支持多种操作模式和快捷键,让用户能够快速编辑和导航代码。

文本编辑器实验报告

文本编辑器实验报告

综合性实验文本编辑器一.实验要求1.参考系统的写字板功能,编写一个小型的文字编辑工具;2.该文档编辑器,至少完成以下功能:A、文件操作:新建,打开,保存,退出;B、编辑操作:复制,剪切,黏贴,全选;C、查找与替换:查找,替换;D、格式操作:字体,颜色等。

3.界面设计应考虑美观,操作简便等问题,应有工具栏,右键菜单;二.设计思路1、首先,设计一个整体框架。

文本编辑器有一个主的窗体form1,文件的新建,打开,保存,退出;复制,剪切,黏贴,全选;字体,颜色等都是在这个窗体上进行的。

而这些操作的进行,都需要在richtextbox上进行,并且要允许用户打开多个窗口,所以我又增加了一个窗体newform(父窗体为form1),作为用户新建时调用的窗口。

其次,可以增加一个新的窗体searchform,作为查找、替换字符串的操作窗口。

所以,总的来说,有三个窗体,form1为主窗体,newform是用户在新建时调用的窗体,searchform为用户在操作查找、替换功能时需要调用的窗体。

2、接下来,就是对各个窗体的实现了。

Form1是主窗体,上面有菜单栏,工具栏,可以新建窗口,以及支持右键菜单。

3、Newform是用户新建时调用的。

它主要就是一个窗体中放了一个richtextbox,以及支持右键菜单。

4、Searchform是一个查询、替换窗体。

上面有2个label,2个textbox,3个button。

2个textbox的作用为获取要查找的字符串,已经要替换的字符串。

3个button的作用分别为“查询”、“单个替换”、“全部替换”。

5、此文本编辑器支持新建,打开,保存,退出,复制,剪切,黏贴,全选,查找,替换,字体,颜色以及支持右键菜单。

只要把鼠标放到主窗体上,就可支持右键新建、打开;把鼠标放到richtextbox上时,就可以支持右键复制、黏贴、剪切、关闭。

四则运算核心代码:private void打开ToolStripMenuItem1_Click(object sender, EventArgs e)//打开{//OpenFileDialog openfileDialog = new OpenFileDialog();openFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";if (this.openFileDialog1.ShowDialog()== DialogResult.OK){s_FileName= openFileDialog1.FileName;NewForm nf = new NewForm();nf.MdiParent = thi s;nf.Text = s_FileName;using (StreamReader read = new StreamReader(s_FileName)){nf.richTextBox1.Text = read.ReadToEnd();}nf.Show();}}public void savefile()//保存文件{//SaveFileDialog saveFileDialog1 = new SaveFileDialog();saveFileDialog1.Filter = "纯文本文件(*.txt)|*.txt|所有文件(*.*)|*.*";saveFileDialog1.FilterIndex = 0;saveFileDialog1.RestoreDirectory = true;NewForm nf = (NewForm)this.ActiveMdiChild;if (nf == null){MessageBox.Show("没有文档可保存!");return;}if (s_FileName.Length != 0){if (File.Exists(@s_FileName)){StreamWriter sw = null;sw = new StreamWriter(s_FileName);sw.Write(nf.richTextBox1.Text);sw.Flush();sw.Close();return;}}if (saveFileDialog1.ShowDialog() == DialogResult.OK){if (s_FileName.Length != 0){nf.richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText);}else{s_FileName = saveFileDialog1.FileName;nf.richTextBox1.SaveFile(s_FileName, RichTextBoxStreamType.PlainText);}}}private void保存ToolStripMenuItem_Click(object sender, EventArgs e)//保存{savefile();}private void查找ToolStripMenuItem_Click(object sender, EventArgs e)//查找替换功能{if (searchform == null){searchform = new searchForm();searchform.SearchAction+=new searchForm.SearchEventHandle(OnSearch);}searchform.Show();}private void OnSearch(){NewForm nf=(NewForm)this.ActiveMdiChild;this.SearchString = searchform.SearchString;start = nf.richTextBox1.Find(SearchString,start,RichTextBoxFinds.MatchCase);if (searchform.two == 1){if (start >= 0){nf.richTextBox1.SelectedText = searchform.ReplaceStr;start += searchform.ReplaceStr.Length;}else{MessageBox.Show("已到文档末尾!");start = 0;}}else if (searchform.three == 1){string replaceall=nf.richTextBox1.Text.Replace(searchform.SearchString, searchform.ReplaceStr);nf.richTextBox1.Text = replaceall;start = 0;}else{if (start >= 0) start += thi s.SearchString.Length;else{MessageBox.Show("已到文档末尾!");start = 0;}}}private void全选ToolStripMenuItem_Click(object sender, EventArgs e)//后退{NewForm nf = (NewForm)this.ActiveMdiChild;nf.richTextBox1.Undo();}private void全选ToolStripMenuItem1_Click(object sender, EventArgs e)//全选{NewForm nf = (NewForm)this.ActiveMdiChild;nf.richTextBox1.SelectAll();}三.程序运行效果图1.开始运行的界面:2、新建文档:3、文本编辑:4、文档保存5、查找:6、替换:4实验总结教你如何用WORD文档(2012-06-27 192246)转载▼标签:杂谈1. 问:WORD 里边怎样设置每页不同的页眉?如何使不同的章节显示的页眉不同?答:分节,每节可以设置不同的页眉。

汇编语言程序大作业(含源代码)

汇编语言程序大作业(含源代码)

汇编语言程序大作业程序简介本程序的功能简单,是可以根据用户从键盘的不同输入,回显在显示器上不同的结果。

其实现的功能是当用户从键盘输入01至12之间的数时(一年12个月),程序能给用户返回其相应的月份的英文缩写符;程序的运行过程介绍1)当从编程环境按下运行按钮之后,屏幕上会显示如下一个窗口:图(1)提示使用者输入01至12之间的任一个两位数字,这里可以随意输入01至12之间的一个两位数字;2)这里从键盘输入如下图所示的数字接着按下回车键,则会显示用户所输入的数字的相应的月份的英文缩写,如下图所示:程序功能分析:本程序功能简单,仅有输入输出功能,即从键盘上输入一些数字并回车之后给使用者提示相应的信息,下面介绍程序中相应功能是如何实现的:第一,根据常规本程序没有涉及到子程序的概念,仅仅有照常的数据段和代码段而且同时把数据段定义为附加段;第二,在代码段里共有四个部分分别为主程序代码部分键盘输入部分设置部分和输出部分;下面分别介绍代码段里的各个部分代码段里的主程序部分:main proc farpush ds ;为返回而把ds保存到堆栈段sub ax,ax ;清空ax寄存器的内容push ax ;把0(清空后的ax的内容)推入堆栈段mov ax,DATASG ;mov ds,ax;把ax作为中间变量给数据段寄存器送入内存中数据段的首地址mov es,ax ;同时把该首地址送给附加段call input ;调用子程序input(输入子程序)call locate ;调用子程序locate(设置子程序)call display ;调用子程序display(输入子程序)ret ;返回main endp ;main主程序结束代码段里的键盘输入部分:input proc nearpush dx ;为保护dx而把其内容推入堆栈段lea dx,DSPLY1 ;为了让使用者知道程序一开始要输入什么,这里将把内存中数据段里的DSPLY1变量的首地址送给dx寄存器(专业的说法就是把DSPLY1的偏移地址送给了dx数据寄存器)mov ah,09h ;为了能显示DSPLY1变量里的字符串,故把09送给ah并之后中断一次int 21h ;DOS中断mov ah,0ah ;换行lea dx,MONIN ;把MONIN的偏移地址送给寄存器dxint 21h ;DOS中断mov ah,MONIN+2 ;把MONIN作为首地址后再加2以后的存储单元内容送ah mov al,MONIN+3 ;把MONIN作为首地址后再加3以后的存储单元内容送alxor ax,3030h ;清空ax的相应位置cmp ah,00 ;ah和00进行比较(主要确定键盘所输入的数字是否在01-09之间)jz return ;若ah的内容确实为0则跳到return标签处sub ah,ah ;若ah的内容不为零则清空ahadd al,10 ;之后al的内容相加10存入alreturn:pop dx ;重新从堆栈段弹出dxret ;返回input endp设置部分locate proc nearpush si ;保存si寄存器的内容(推入堆栈段)push di ;保存di寄存器的内容(推入堆栈段)push cx ;保存cx寄存器的内容(推入堆栈段)lea si,MONTAB ;把MONTAB的偏移地址送给si寄存器dec al ;al的内容减一(为建立一个表)mul THREE ;ax和数据段中的THREE变量进行相乘add si,ax ;之后si和ax的内容进行相加mov cx,03 ;把03送入cx寄存器cld ;为循环的方向做确定(定义方向为从左到右进行扫描)lea di,ALFMON ;把数据段中变量ALFMON的偏移地址送给di寄存器rep movsb ;进行以字节为单位的扫描pop cx ;从堆栈段弹出cxpop di ;从堆栈段弹出dipop si ;从堆栈段弹出siret ;返回locate endp输出部分display proc nearpush dx ;为保护dx的内容而把dxlea dx,DSPLY2 ;为了解释最后显示的结果,故把建立在数据段里的DSPLY2变量的首地址送给了dx寄存器,也就是把DSPLY2的偏移地址送给了dx寄存器mov ah,09h ;为了能够显示字符串故把09h送给了ah,并之后中断了一次int 21h ;DOS中断lea dx,ALFMON ;把ALFMON的偏移地址送给dx寄存器mov ah,09 ;为了屏幕上显示字符串int 21hpop dx ;从寄存器弹出dxretdisplay endp下面介绍数据段的定义:DATASG SEGMENT PARA 'DATA'THREE DB 3MONIN DB 3,4 DUP(?)ALFMON DB'???','$'MONTAB DB'JAN','FEB','MAR','APR','MAY','JUN','JUL','AUG','SEP','OCT','NOV','DE C'DSPLY1 DB'Plaese input two numbers(01-12): $'DSPLY2 DB'Your input month is: $'DATASG ENDS本程序的缺点是没办法连续地输入来确定不同的月份,而且是简单的基本输入输出功能的程序,尽管如此本人还是设计出了此程序。

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例

文本编辑器的程序设计及代码示例在计算机科学领域,文本编辑器是一种用于编辑文本文件的应用程序。

它允许用户创建、修改和保存文本文件,并提供了一系列功能来方便用户进行编辑操作。

本文将介绍文本编辑器的程序设计原理,以及示范几个常见的代码示例。

一、程序设计原理文本编辑器的程序设计需要考虑以下几个方面:1. 用户界面设计:一个好的文本编辑器应具备直观友好的用户界面,提供各种操作选项和快捷键,使用户能够轻松地进行文本编辑。

2. 文本处理功能:文本编辑器应具备基本的文本处理功能,如插入和删除文本、查找和替换、拷贝和粘贴等。

这些功能需要通过合适的数据结构和算法来实现。

3. 文本格式化:文本编辑器应支持对文本进行格式化操作,如自动对齐、缩进、换行等。

4. 多标签支持:多标签功能允许用户同时打开多个文本文件,并在它们之间切换。

这要求程序设计中能够有效地管理多个文本文件的打开、关闭和切换。

二、代码示例下面是几个简单的代码示例,用于展示文本编辑器的一些基本功能。

1. 创建文本文件```pythondef create_file(filename):# 创建一个新的文本文件file = open(filename, "w")file.close()```2. 打开文本文件```pythondef open_file(filename):# 打开文本文件并返回文件对象 file = open(filename, "r")return file```3. 插入文本```pythondef insert_text(file, position, text): # 在指定位置插入文本file.seek(position)content = file.read()file.seek(position)file.write(text + content)```4. 删除文本```pythondef delete_text(file, start, end):# 删除指定位置的文本file.seek(start)content = file.read()file.seek(start)file.write(content[:end - start])```5. 查找和替换文本```pythondef find_replace(file, old_text, new_text):# 在文本中查找指定内容并替换file.seek(0)content = file.read()new_content = content.replace(old_text, new_text)file.seek(0)file.write(new_content)```6. 关闭文本文件```pythondef close_file(file):# 关闭文本文件file.close()```三、总结通过以上代码示例,我们展示了文本编辑器的一些基本功能,包括创建文件、打开文件、插入和删除文本、查找和替换文本以及关闭文件。

汇编语言部分作业题(含答案)

汇编语言部分作业题(含答案)

一、填空题1、编写一条宏指令CLRB,完成用空格符将一字符区中的字符取代的工作。

字符区首地址及其长度为变元。

宏定义如下:CLRB MACRO N, CFILMOV CX, ()CLDMOV ( ), ' ' ;;取空格符的ASCII码() DI, CFILREP ( )( )正确答案:第一空:n第二空:al第三空:LEA第四空:STOSB第五空:endm我的答案:得分: 6.6分第一空:N第二空:AL第三空:LEA第四空:STOSB第五空:ENDM2、某工厂计算周工资的方法是每小时的工资率RATE乘以工作时间HOUR,另外每工作满10小时加奖金3元,工资总数存放在WAG中。

请将周工资的计算编写成一条宏指令WAGES.宏定义如下:WAGES MACRO RATE, HOUR, WAGMOV (), HOUR ;;计算周工资(WAG),公式为:HOUR* RATEMOV BL, RATEMUL BLMOV WAG, AXMOV AL, HOUR ;;计算奖金存入(AX),公式为:HOUR/10的商*3MOV AH, 0MOV BL, 10DIV ()MOV BL, ()MUL ()ADD WAG, ();;计算周工资总数ENDM正确答案:第一空:al第二空:bl第三空:3第四空:BL第五空:AX我的答案:得分: 6.6分第一空:AL第二空:BL第三空:3第四空:BL第五空:AX3、下面的程序段是二进制到十六进制转换程序,请填空。

mov ch, 4 rotate: mov cl, 4rol bx,()mov al, bland al,()add al, 30h ; ’0’~’9’ ASCII 30H~39Hcmp al, 3ahjl printitadd al,() ; ’A’~’F’ ASCII 41H~46Hprintit: mov() , almov ah, 2int 21h()jnz rotate正确答案:第一空:cl第二空:0f;0fh第三空:7h;07h;07第四空:dl第五空:dec ch我的答案:得分: 6.6分第一空:cl第二空:0fh第三空:07h第四空:dl第五空:dec ch4、IRP BUF,<3,17,20,46,87,89,100> DB BUFENDM汇编后生成的代码等价于( )正确答案:第一空:DB 3,17,20,46,87,89,100我的答案:得分: 6.6分第一空:DB 3,17,20,46,87,89,1005、IRPC BUF,12345DB BUFendm汇编后的代码等价于:()正确答案:第一空:DB 1,2,3,4,5我的答案:得分: 6.6分第一空:DB 1,2,3,4,56、已知宏定义:FOO macro p1,p2,p3mov ax,p1p2,p3endm宏调用:FOO WORD_VAR,inc,ax则宏展开指令是( )( )正确答案:第一空:ov ax,WORD_VAR第二空:inc ax我的答案:得分: 7.6分第一空:mov ax,WORD_VAR第二空:inc ax7、已知宏定义:LEAP macro COND,LABJ&COND LABendm宏调用:LEAP Z,THERE则宏展开指令是()正确答案:第一空:JZ THERE我的答案:得分: 7.6分第一空:JZ THERE8、已知宏定义FO macro P1JMP TA&P1endm宏调用:FO WORD_VAR则宏展开结果是( )正确答案:第一空:JMP TAWORD_VAR我的答案:得分: 7.6分第一空:JMP TAWORD_VAR9、已知宏定义:MSGGEN macro LAB,NUM,XYZLAB&NUM db 'hello mr.&XYZ' endm宏调用:MSGGEN MSG,1,taylor则宏展开结果是( )正确答案:第一空:MSG1 db 'hello mr.taylor'我的答案:得分: 7.6分第一空:MSG1 db 'hello mr.taylor'10、MSG macro COUNT,STRINGMSG&COUNT db STRINGendmERRMSG macro TEXTCNTR=CNTR+1MSG %CNTR,TEXTendm宏调用:CNTR=0ERRMSG 'syntax error'则宏展开是( )正确答案:第一空:MSG1 db 'syntax error'我的答案:得分: 7.6分第一空:MSG1 db 'syntax error'11、下面的循环程序是利用逻辑尺来控制的,请填空。

编译原理大作业pl语言编译程序

编译原理大作业pl语言编译程序

编译原理大作业pl语言编译程序编译原理大作业:PL语言编译程序编译原理是计算机科学中的重要课程,它研究的是如何将高级语言转化为机器语言的过程。

在这门课程的大作业中,我们需要设计一个PL语言的编译程序,将PL语言的源代码转化为可执行的机器代码。

PL语言是一种高级编程语言,它具有丰富的语法和功能,可以用来编写各种应用程序。

编写一个PL语言的编译程序需要经历以下几个步骤:首先,我们需要设计PL语言的语法规则。

语法规则定义了PL语言中各种语句和表达式的结构和组织方式。

通过定义语法规则,我们可以确定PL语言源代码的合法性,并将其转化为抽象语法树。

接下来,我们需要设计词法分析器。

词法分析器负责将源代码分解为一个个的词法单元,如关键字、标识符、运算符等。

通过词法分析器,我们可以将源代码转化为一个个的词法单元序列。

然后,我们需要设计语法分析器。

语法分析器负责根据语法规则,将词法单元序列转化为抽象语法树。

语法分析器使用一种称为“自顶向下”的分析方法,通过递归下降的方式,从源代码的起始符号开始,逐步推导出各个语法单元。

在语法分析的过程中,我们还需要设计语义分析器。

语义分析器负责对抽象语法树进行语义检查和语义处理。

它会检查变量的声明和使用是否合法,进行类型检查,生成中间代码等。

最后,我们需要设计代码生成器。

代码生成器负责将抽象语法树转化为目标机器的机器代码。

代码生成器会根据目标机器的指令集和寄存器分配策略,生成高效的机器代码。

在实现PL语言编译程序的过程中,我们还需要进行测试和调试。

我们可以编写一些PL语言的示例程序,用来测试编译程序的正确性和性能。

通过不断地测试和调试,我们可以逐步完善编译程序,使其能够正确地将PL语言源代码转化为可执行的机器代码。

编译原理大作业是一项非常有挑战性的任务,需要我们对编译原理的各个方面有深入的理解和掌握。

通过完成这个大作业,我们可以更好地理解编译原理的原理和方法,提高我们的编程能力和解决问题的能力。

汇编语言大作业课程设计

汇编语言大作业课程设计

汇编语言大作业课程设计一、课程目标知识目标:1. 学生能理解汇编语言的基本概念,掌握汇编指令的使用和程序结构;2. 学生能描述计算机硬件与汇编语言之间的关系,了解汇编语言在计算机科学中的地位;3. 学生掌握汇编语言编程技巧,能阅读和分析简单的汇编程序;4. 学生了解汇编语言在逆向工程和系统底层开发中的应用。

技能目标:1. 学生能运用汇编语言编写简单的程序,实现基本的输入输出、运算和控制流程;2. 学生能通过调试工具对汇编程序进行调试,找出并修正程序中的错误;3. 学生能运用汇编语言解决实际问题,如编写一个简单的系统调用程序。

情感态度价值观目标:1. 学生培养对计算机底层原理的兴趣,激发探究精神,提高自主学习和解决问题的能力;2. 学生认识到汇编语言在计算机科学中的重要作用,增强对计算机科学的热爱;3. 学生通过汇编语言学习,培养团队合作意识,提高沟通表达能力和协作能力。

分析课程性质、学生特点和教学要求,本课程目标旨在使学生在掌握汇编语言基本知识的基础上,提高实际编程能力,培养解决实际问题的能力。

同时,注重培养学生对计算机科学的兴趣和热爱,提高学生的综合素质。

课程目标具体、可衡量,为后续教学设计和评估提供明确依据。

二、教学内容1. 汇编语言基础知识:介绍汇编语言的基本概念、组成元素、指令系统及其功能;- 教材章节:第1章 汇编语言概述- 内容列举:汇编指令、寄存器、内存寻址、数据类型、程序结构等。

2. 汇编指令与程序设计:学习汇编指令的使用,掌握汇编程序设计的基本技巧;- 教材章节:第2章 汇编指令与程序设计- 内容列举:算术运算指令、逻辑运算指令、控制流指令、子程序调用等。

3. 汇编语言与计算机硬件:了解汇编语言与计算机硬件的关系,分析硬件对汇编程序的影响;- 教材章节:第3章 计算机硬件与汇编语言- 内容列举:CPU结构、寄存器组织、内存管理、中断处理等。

4. 汇编语言编程实践:通过实例分析,使学生掌握汇编语言编程方法和技巧;- 教材章节:第4章 汇编语言编程实践- 内容列举:输入输出编程、字符串处理、数值运算、系统调用等。

实训五 文本编辑器vi练习

实训五 文本编辑器vi练习

实训5 文本编辑器vi和emacs练习实训目的:1.掌握VI编辑器的使用。

实训环境:安装了Red Hat Linux可运行系统,有一个无特权用户student,密码:12345678。

安装vim-common、vim-minimal、vim-enhanced 的rpm 包在提示符下键入: vimtutor你会看到英文的试验教程第一讲第一节∶移动光标※※要移动光标,请依照说明分别按下h、j、k、l 键。

※※^k 提示∶ h 的键位于左边,每次按下就会向左移动。

< h l > l 的键位于右边,每次按下就会向右移动。

j j 键看起来很象一支尖端方向朝下的箭头。

v1. 请随意在屏幕内移动光标,直至您觉得舒服为止。

2. 按下下行键(j),直到出现光标重复下行。

---> 现在您应该已经学会如何移动到下一讲吧。

3. 现在请使用下行键,将光标移动到第二讲。

提示∶如果您不敢确定您所按下的字母,请按下<ESC>键回到正常(Normal)模式。

然后再次从键盘输入您想要的命令。

提示∶光标键应当也能正常工作的。

但是使用hjkl键,在习惯之后您就能够快速地在屏幕内四处移动光标了。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~第一讲第二节∶VIM的进入和退出!! 特别提示∶敬请阅读完整本一节的内容,然后才能执行以下所讲解的命令。

1. 请按<ESC>键(这是为了确保您处在正常模式)。

2. 然后输入∶ :q! <回车>---> 这种方式的退出编辑器绝不会保存您进入编辑器以来所做的改动。

如果您想保存更改再退出,请输入∶:wq <回车>3. 如果您看到了命令行提示符,请输入能够带您回到本教程的命令,那就是∶vimtutor <回车>通常情况下您也可以用这种方式∶vim tutor <回车>---> 这里的 'vim' 表示进入vim编辑器,而 'tutor'则是您准备要编辑的文件。

精选10个汇编语言程序案例集

精选10个汇编语言程序案例集

精选10个汇编语言程序案例集
1. 汇编语言编写的计算器程序,这个程序可以接受用户输入的两个数字,然后执行加减乘除等运算,并将结果输出到屏幕上。

2. 文件复制程序,这个程序可以使用汇编语言编写,实现将一个文件的内容复制到另一个文件中的功能。

3. 简单的操作系统内核,使用汇编语言编写一个简单的操作系统内核,可以包括基本的文件管理和进程调度功能。

4. 汇编语言写的游戏,例如经典的贪吃蛇游戏或者俄罗斯方块游戏,这些游戏可以使用汇编语言编写。

5. 串口通信程序,使用汇编语言编写一个可以通过串口进行通信的程序,可以实现数据的发送和接收。

6. 硬件驱动程序,编写一个简单的汇编语言程序,可以控制硬件设备,例如控制LED灯的亮灭。

7. 汇编语言编写的加密解密算法,实现一个简单的加密解密算
法,例如凯撒密码或者简单的异或运算。

8. 简单的图形界面程序,使用汇编语言编写一个简单的图形界面程序,可以实现基本的窗口和按钮等功能。

9. 汇编语言编写的网络通信程序,实现一个简单的网络通信程序,可以进行基本的数据传输和接收。

10. 汇编语言编写的嵌入式系统程序,例如可以编写一个控制LED灯的嵌入式系统程序,可以通过按键控制LED的亮灭。

python大作业80个

python大作业80个

python大作业80个Python大作业80个:创意与实现Python是一种功能强大的编程语言,被广泛应用于各个领域。

在学习Python的过程中,大作业是一个很好的机会来展示你的技能和创意。

下面列举了80个Python大作业的主题,可以供你选择并创造属于自己的项目。

1. 制作一个简单的计算器,支持基本的数学运算。

2. 基于Python的文字冒险游戏,玩家通过选择不同的选项来推动剧情发展。

3. 创建一个简单的日历程序,可以查看某个日期的特定信息。

4. 制作一个密码生成器,可以生成随机的强密码。

5. 用Python实现一个简单的天气预报程序,根据用户输入的位置显示当地的天气情况。

6. 创建一个自动化批量重命名文件的工具,可以按照指定的命名规则对文件进行批量重命名。

7. 开发一个简单的网页爬虫,可以从指定的网页中提取信息。

8. 实现一个迷宫游戏,玩家通过键盘输入控制角色在迷宫中移动。

9. 创建一个简单的电子邮箱客户端,可以发送和接收电子邮件。

10. 制作一个简单的音乐播放器,可以播放本地存储的音乐文件。

11. 开发一个简单的人脸识别程序,可以识别照片中的人脸并进行标记。

12. 创建一个简单的文件压缩工具,可以将文件或文件夹压缩成zip 格式。

13. 实现一个简单的聊天机器人,可以回答用户提出的问题。

14. 制作一个简单的文字编辑器,可以打开、编辑和保存文本文件。

15. 创建一个简单的画图程序,可以实现基本的画图功能。

16. 开发一个简单的音频处理工具,可以对音频进行剪切、合并或转码。

17. 实现一个简单的网页游戏,玩家通过鼠标点击进行游戏操作。

18. 制作一个简单的日记本应用,可以记录和管理用户的日记。

19. 创建一个简单的文件搜索工具,可以根据关键词快速搜索文件。

20. 开发一个简单的计算器应用,可以进行科学计算和统计分析。

21. 实现一个简单的图像处理工具,可以对图像进行滤镜、调色和裁剪等操作。

文本编辑器

文本编辑器
演示
vi的启动与退出
vi中的文件操作
❖ 打开新文件 ❖ 读取文件 ❖ 保存文件 ❖ 另存为文件 ❖ 退出vi编辑器
文件保存与另存为
❖ 保存文件
保存对vi编辑器中已打开文件的修改 :w
❖ 另存为文件
将vi编辑器中的内容另存为指定文件名 :w myfile
退出vi编辑器的多种方法
❖ 未修改退出
撤销操作
命令 u
U Ctrl + r
功能 取消最近一次的操作,并恢复操作结果 可以多次使用u命令恢复已进行的多步操作 取消对当前行进行的所有操作
对使用u命令撤销的操作进行恢复
演示
撤销操作
复制与粘贴操作
命令
功能
yy
复制当前行整行的内容到vi缓冲区
yw 复制当前光标到单词尾字符的内容到vi缓冲区
y$
vi编辑器中有命令模 式、输入模式和末行 模式三种状态模式
vi编辑器提供了完备
vi的文文本本编编辑辑器功能
vi编辑器支持对多个 文本文件的编辑操作
文本编辑器的作用 文本编辑器的分类 文本编辑器简介 vi编辑器的模式 vi编辑器的基本使用 编辑器的多文件操作
实验
❖ 任务1:使用vi编辑文本文件
提示 可以在vi编辑器中读取/etc目录下系统配置文件的内容, 但是不要将进行的修改保存到系统配置文件中
输入模式
末行模式
1-2 vi编辑器的基本使用
❖ vi编辑器的启动与退出 ❖文件操作 ❖光标移动操作 ❖编辑操作 ❖查找与替换操作 ❖ vi编辑器的在线帮助
vi编辑器的启动与退出
❖ 直接进入编辑环境
$ vi
❖ 进入编辑环境并打开(新建)文件
$ vi myfile

汇编语言大作业

汇编语言大作业

上海电机学院大作业报告电子信息学院目录一、需求分析 (3)简介 (3)优点: (3)缺点: (3)特点: (4)功能: (4)二、程序设计 (4)2.1 要求内容 (4)2.2程序分析 (4)2.3流程图 (5)2.4源程序 (5)2.5测试分析......................................................................................... 错误!未定义书签。

三、心得体会 (6)一、需求分析简介汇编语言(Assembly Language)是面向机器的程序设计语言。

在汇编语言中,用助记符(Memoni)代替机器指令的操作码,用地址符号(Symbol)或标号(Label)代替指令或操作数的地址,如此就增强了程序的可读性并且降低了编写难度,象这样符号化的程序设计语言就是汇编语言,因此亦称为符号语言。

使用汇编语言编写的程序,机器不能直接识别,还要由汇编程序或者叫汇编语言编译器转换成机器指令。

汇编程序将符号化的操作代码组装成处理器可以识别的机器指令,这个组装的过程称为组合或者汇编。

因此,有时候人们也把汇编语言称为组合语言。

人类最容易接受自己每天都使用的自然语言。

为了使机器指令的书写和理解变得容易,需要借鉴自然语言的优点,为此就引入了汇编语言。

汇编语言使用符号来代表不同的机器指令,而这些符号非常接近于自然语言的要素。

基本上,汇编语言里的每一条指令,都对应着处理器的一条机器指令。

汇编语言包括两个部分:语法部分和编译器。

语法部分提供与机器指令相对应的助记符,方便指令的书写和阅读。

当然,汇编语言的符号可以被人类接受,但不能被处理器识别,为此,还要由汇编语言编译器将这些助记符转换成机器指令。

优点:1、因为用汇编语言设计的程序最终被转换成机器指令,故能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。

汇编语言程序设计大型作业word资料5页

汇编语言程序设计大型作业word资料5页

2009 汇编语言程序设计大型作业题目一、作业题目2009年汇编语言程序设计大型作业给出了4道题目,供大家凭自己的兴趣自由选择其中之一完成。

这4道作业题目如下:1.汉字显示程序2.矩阵乘法程序3.计算器程序(WIN32 ASM编程)4.万年历程序(WIN32 ASM编程)本汇编语言程序设计大型作业题目可以在汇编网站中选择进入“汇编语言教学网站->资料下载”下载。

我们会在该网站论坛上答疑,以帮助大家更好的完成这次程序设计大型作业。

二、交付的文档材料1.程序系统说明书内容包括:(1)程序系统总体的功能模块调用图及模块功能说明。

(2)程序系统的详细框图(每个子程序的流程图)。

(3)程序界面图。

(4)程序清单。

2.设计和实现的技术特点、不足和改进的建议3.课程设计的体会。

4.程序源程序和可执行程序三、评分说明独立完成:60分,雷同或抄袭者不及格;设计技术及技巧使用:25分;文档质量:10分;按时完成:5分。

可以自主扩充功能,有创新加分。

四、参考书1.课本2.《IBM-PC汇编语言程序设计》清华大学出版社五、交付时间:课表安排上机时间结束后的10天内。

题目一汉字显示程序一、题目要求编写一个汉字显示程序,根据字库文件显示汉字。

程序功能:1.从键盘输入汉字区位码;2.从磁盘上读取汉字点阵;3.在屏幕上显示汉字;4.从键盘输入放大倍数,在屏幕上显示放大的汉字。

二、重点考察1.用汇编实现简单的算法。

2.用汇编实现简单的数据结构。

3.INT 21H系统功能调用中有关文件的操作。

4.综合解决问题的能力。

三、参考材料/user2/25154/archives/2019/1125248.shtml以上网址可下载字库文件chs16.fon。

下面介绍一下相关知识:1.汉字的机内表示根据我国对汉字使用频度的研究,可把汉字划分为高频字(约100个),常用字(约3000个),次常用字(约4000个),罕见字(约8000个)和死字(约45000个)。

汇编作业——精选推荐

汇编作业——精选推荐

汇编作业《汇编语⾔》上机实验实验⼀DEBUG的应⽤及指令系统练习⼀、类别:验证型实验⼆、实验⽬的:掌握常⽤DOS命令、DEBUG常⽤命令、基本指令和伪指令三、实验内容:1.复习DOS命令:CD, DIR, DEL, RENAME, COPY。

2.熟悉DEBUG命令:A, D, E, F, H, R, T, U, G, N, W, L及Q的使⽤⽅法。

3.利⽤DEBUG理解:8086/8088常⽤指令的功能。

4.利⽤DEBUG掌握:内存操作数及其⼏种寻址⽅式。

5.利⽤DEBUG进⾏简单的编程:求累加和程序和多字节加减法程序练习。

四、要求:1.熟悉DEBUG的操作界⾯;2.能够进⾏DEBUG环境下的基本操作;3.理解8086指令的基本指令和伪指令操作意义和格式;4.完成实验报告。

五、仪器设备:微型计算机六、注意事项:DEBUG操作时,防⽌破坏系统熟练运⽤DOS常⽤命令进⾏⽂件操作。

实验内容及步骤(⼀)DOS常⽤命令练习1、开机后,切换到命令提⽰符窗⼝下,出现提⽰符后键⼊命令DIR, 查看此⽬录下⽂件。

2、键⼊命令CD..进⼊上级⽬录,再查看此⽬录下所有⽂件。

3、将⼀个u盘插到u盘驱动器中,⽤DIR命令查看盘上⽂件。

4、⽤命令 COPY /doc/854bf052effdc8d376eeaeaad1f34693daef1084.html BUG 复制⼀个⽂件。

5、⽤命令 RENAME BUG BG 将BUG ⽂件改为BG。

6、⽤命令 DEL BG 将⽂件BG删除。

在操作时要注意提⽰信息,并按提⽰操作。

(⼆)DEBUG 命令使⽤1、键⼊ DEBUG 进⼊ DEBUG 控制状态,显⽰提⽰符 '- '。

2、⽤命令 F100 10F 'A' 将'A'的ASCII码填⼊内存。

3、⽤命令 D100 10F 观察内存中的⼗六进制码及屏幕右边的ASCII字符。

4、⽤命令 F110 11F 41 重复上⼆项实验,观察结果并⽐较。

C++实训——文本编辑器报告

C++实训——文本编辑器报告

实训题目:文本编辑器1 系统设计1.1 设计要求1.1.1 设计任务设计一个基于对话框的文本编辑器,实现文本的创建、编辑、显示及保存功能。

1.1.2 性能指标要求按照题目要求完成程序源码编写、调试及关键代码注释。

能够设置字体格式。

1.2 设计思路及设计框图1.2.1设计思路通过Visual C++6.0内自带的控件进行编程,产生一个基于对话框的文本编辑器。

该编辑器带有菜单栏、编辑区。

(1)文件模块:提供保存、另存为、打开、退出功能。

(2)编辑模块:提供撤销、剪切、复制、粘贴、清空、全选功能。

(3)格式模块:提供设置字体、背景颜色功能。

(4)帮助模块:版权声明。

1.2.2总体设计框图2 各个模块程序的设计及相应流程图2.1 新建工程通过Visual C++6.0内自带的控件进行编程,产生一个基于对话框的文本编辑器。

2.2图标设计设计IDR_MAINFRAME图案,修改后如下2.3 菜单栏设计右击VC6.0菜单栏Insert下的Resource,插入一个菜单栏,如下。

这里已经建好。

只是演示步骤。

以下为菜单相关名称与函数下拉菜单名命令名命令ID 对应消息函数名文件(&F) 打开(&O)...\tCtrl+O ID_FILE_OPEN OnFileOpen保存(&S)\tCtrl+S ID_FILE_SA VE OnFileSave另存为(&A)...ID_FILE_SA VE_AS OnFileSaveAs退出(&X)ID_APP_EXIT OnAppExit编辑(&E) 撤消(&U)\tCtrl+Z ID_EDIT_UNDO OnEditUndo 剪切(&T)\tCtrl+X ID_EDIT_CUT OnEditCut复制(&C)\tCtrl+C ID_EDIT_COPY OnEditCopy 粘贴(&P)\tCtrl+V ID_EDIT_PASTE OnEditPaste 清空(&R)ID_EDIT_CLEAR OnEditClear全选(&A)\tCtrl+A ID_EDIT_SELECTALLOnEditSelectall格式(&S)字体(&F)...ID_SET_FONT OnSetFont背景颜色(&B)...ID_SET_BACKCOLOROnSetBackcolor帮助(&H)关于文档编辑器(&A)...IDS_ABOUTBOX OnAboutbox 快捷键工程内容如下2.4 菜单栏载入打开IDD_WENBEN_DIALOG对话框属性,在常规标签页下的菜单对话框内添加菜单栏的ID,即IDR_MENU1。

课程设计汇编语言大作业

课程设计汇编语言大作业

汇编语言大作业C语言的秘密2014年11月19日目录引言 (5)1. 比较C语言与ASM要素 (5)2. 深入阐述c语言实现 (5)第一章简要描述对应关系 (5)1. 常量 (5)2. 不同类型变量 (5)| 一般数据类型 (5)| 指针 (5)| 字符串 (6)| 多维数组 (6)| 结构体 (6)| 类 (6)3.计算常、变量表达式 (7)| 简单计算 (7)| 位运算 (7)4.宏 (7)5.函数,子程序 (8)6.其他结构的汇编对应 (8)第二章深入阐述C语言的实现 (8)1. 内存的使用 (8)| 程序头 (8)| 代码段 (8)| 部分无法用立即数表示的常量 (8)| 声明注释 (9)| 全局变量,静态变量 (9)| 需求文件,函数,链接库等 (9)| 栈 (10)2.类型 (10)全局变量和局部变量的不同分配 (10)普通变量 (11)字符串 (11)多维数组 (11)指针 (11)结构体 (11)类 (12)3.指针 (14)存储方式 (14)指针取值(*p) (14)指针传递 (14)4.函数 (14)确保堆栈平衡(上层函数) (14)传参数(上层函数) (15)中间层 (15)函数保护主ebp (15)堆栈让出子程序变量空间 (16)执行函数体 (16)准备返回值 (16)5.堆栈框架 (18)6.全局、局部变量 (19)全局变量 (19)局部变量 (19)7.算数运算及表达式计算 (19)常量表达式 (20)简单变量表达式计算 (20)需要存储中间变量的表达式计算 (20)8.C语言编译、连接、装入内存 (21)编译 (21)链接 (21)装入内存 (21)9.C语言IO功能实现 (21)第三章c语言与汇编语言优缺点及适应场合 (21)1.C语言优点,汇编语言的不足 (21)2.汇编语言优点,c语言的不足 (21)3.c语言使用场合 (22)4.汇编语言使用场合 (22)第四章课程收获及想法 (22)1.收获及想法 (22)2.一些建议 (23)引言1.比较C语言与ASM要素具体比较内容为:各种类型-含字符串及多维数组、指针、结构联合-可嵌套、类-可继承等,常量变量及表达式,算术及逻辑运算,宏与子程序-函数,全局变量、局部变量-含静态变量,参数及传递-传值或地址、返回值等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

《汇编语言程序设计》综合程序设计实验报告题目:文本编辑器一、项目简介我们设计的为一个简易的文本编辑器,其具体实现的功能如下:1、编辑器的初始密码默认为 0,输入其他内容会提示出错2、进入编辑界面之前,用户可以选择自己喜欢的界面颜色有四种颜色可以供用户选择。

3、进入主界面后可以看到菜单栏的五个可以下拉的菜单分别为File、Edit 、Form、Check 、Help,并分别可以通过快捷键F1,F2,F3,F4,F10来展开每一下拉菜单。

4、可以对文本进行新建、打开、保存、退出,并可以显示帮助信息。

5、可以在界面上任意输入内容,并可通过键盘上下左右移动光标。

可以通过键盘上的backspace和enter分别对文本进行删除和换行操作。

二、小组成员具体分工1、黄珊负责:编辑器的密码设置;初始时背景颜色的选择;F1菜单下的对文件的新建,打开,保存以及退出系统的功能;按一下BackSpace键可以删除当前光标以前的字符,enter键可以换行;演讲时的PPT制作;2、刘瑞玲负责:设计一个友好、易于操作的界面;按F1键后各个功能之间的调动;键盘读入字符;按上、下、左、右以及回车键对文本进行的编辑,使光标在文本上任意移动;完成实验报告;三、需求分析与设计结构框图:1、实验中用到的宏的定义:red_chr macro 字符的读取string macro 输入字符光标win macro 新建窗口pos_curse 定义光标位置pos_get 获取光标位置2、数据段主要定义:path db 40 dup(0),'$' 保存文件路径buffer db 1840 dup(0) ,'$' 保存文本内容,作为一个缓存区 line db ? 保存列号row db ? 保存行号bak db 3850 dup(0) 保存缓冲区的内容3、主要使用的子程序:Wind 创建窗口的子程序edit 进行文本文本编辑fuc_key 键盘功能键定义**_sh 菜单栏的显示信息New 新建文本Open 输出文本内容Save 保存文本内容Exit 退出程序四、代码及分析red_chr macro ;读取字符宏定义mov ah,0int 16hendmstring macro p1 ;输入字符光标mov ah,9lea dx,p1int 21hendmwin macro opr1,opr2,opr3,opr4,opr5,opr6 ;建立窗口mov ah,06hmov al,opr1mov bh,opr2mov ch,opr3mov cl,opr4mov dh,opr5mov dl,opr6int 10hendmpos_curse macro op1,op2,op3 ;定义光标位置mov ah,2mov bh,op1 ;页码mov dh,op2 ;行mov dl,op3 ;列int 10hendmpos_get macro ;显示光标位置mov ah,03hmov bh,0 ;bh页码 ch起始行 cl终止行 dh行 dl列int 10hendmdata segment;定义数据段mm1 db'please input password:','$'mm2 db'password error! ',13,10,'$'mm3 db '******************************************************************** ************',13,10,'$'mm4 db 13,10,'$'color db'choose one color for the notepad(1 is green,2 is gray,3 is pink,and else is black )$',13,10menu db'File(F1) Edit(F2) Form(F3) check(F4) Help(F10) $'manu_1 db' New ',13,10,'$'manu_2 db' Open ',13,10,'$'manu_3 db' Save ',13,10,'$'manu_4 db' Save as ',13,10,'$'manu_5 db' Exit ',13,10,'$'manu_6 db' PageSetup ',13,10,'$'manu_7 db' print ','$'edit_1 db' cancel ',13,10,'$'edit_2 db' cut ',13,10,'$'edit_3 db' past ',13,10,'$'edit_4 db' undo ',13,10,'$'edit_5 db' redo ',13,10,'$'form_1 db' word wrap',13,10,'$'form_2 db' font',13,10,'$'check_1 db' statement ',13,10,'$'check_2 db' find ',13,10,'$'edit_6 db' date ','$'handle dw?message1 db' Please input file name:','$'message2 db' Please input save file name:','$'message3 db' Please input open file name:','$'message4 db' ***The file is not save! Save it now? (Y/N)***: ','$'path db 50 dup(0),'$'buffer db 2000 dup(?)bak db 3850 dup(0)line db?row db?char db?help_mas1 db' Text editor $';帮助内容help_mas2 db' edition 1.0 $'help_mas3 db' Hello,this is our test version produced by 11//2013$'help_mas4 db'********************************************************$'help_mas5 db' Copyright Reserved by Huangshan & Liu Ruiling $'help_mas6 db' Thanks to the help of teather Sun ! $'help_mas7 db' --Shijiazhuang Tiedao University$'data endscode segmentassume cs:code,ds:dataStart:push dssub ax,axpush axmov ax,datamov ds,axlea dx,mm1mov ah,9int 21hmov ah,01int 21hcmp al,30hjz zzjnz extretext:lea dx,mm2mov ah,9int 21hmov ah,4chint 21hzz: lea dx,mm4mov ah,9int 21hlea dx,mm3mov ah,9int 21hlea dx,colormov ah,9int 21hmov ah,1int 21h ;从键盘读字符 ah=扫描码 al=字符码cmp al,31hjz A1cmp al,32hjz A2cmp al,33hjz A3call windcall editretA1: win 0,3eh,1,0,24,79call windcall editretA2: win 0,7eh,1,0,24,79call windcall editretA3: win 0,5eh,1,0,24,79call windcall editretwind proc near ;创建窗口子程序win 1,1fh,0,0,0,79win 0,1fh,24,0,24,79 ;定义窗口背景show: ;显示菜单位置及内容pos_curse 0,0,1mov ah,9lea dx,menuint 21hshow_2: ;显示状态栏位置及内容pos_curse 0,24,1mov ah,9pos_curse 0,1,0mov row,dhmov line,dlwind endpedit proc nearchar_get: ;读字符call comcom proc near ;定义功能鍵pos_getmov row,dhmov line,dlfirst: pos_curse 0,row,linej00: mov ah,0int 16h ;从键盘读字符 ah=扫描码 al=字符码push axlea dx,buffermov buffer[bx],alinc bxcmp ah,48h ;上jz up_1cmp ah,50h ;下jz down_1cmp ah,4bh ;左jz leftcmp ah,4dh ;右jz rightcmp ah,1ch ;回车jz enter_1call fuc_keymov ah,2mov dl,alint 21hpop axcall menu_showjmp j6down_1:jmp downenter_1:jmp enter_2up_1: jmp upleft: ;光标左移pos_getmov row,dhmov dl,linecmp line,0jnz directmov line,79dec rowcmp row,0je stop2 jmp firststop2:mov row,1jmp firstdirect:dec linejmp firstright: ;光标右移pos_getmov row,dhmov dl,linecmp line,79jnz direct2mov line,0inc rowcmp row,24je returns1jmp firstdirect2:inc linejmp firstenter_2:jmp enterup: ;上移光标 pos_getmov row,dhmov dl,linedec rowcmp row,0je stop1jmp firststop1:mov row,1jmp firstdown: ;下移光标 pos_getmov row,dhmov dl,lineinc rowcmp row,24je stop3jmp firststop3:mov row,23jmp firstreturns1:jmp returnsenter: ;回车换行 pos_getmov row,dhmov line,dlinc rowcmp row,24je returnsmov line,0jmp firstreturns:mov row,24mov line,0jmp firstj6: ret ;空操作com endpfuc_key proc near ;功能键子程序(通过比较扫描码来判定) next:cmp ah,0eh ;backspacejz bak_spcmp ah,44h ;F10jz help_0cmp ah,3ch ;F2jz edit_0cmp ah,3dh ;F3jz form_0cmp ah,3eh ;F4jz check_0rethelp_0: call helpedit_0: call edit_shform_0:call form_shcheck_0:call check_shbak_sp: ;退格键的功能pos_getmov row,dhmov line,dlcmp line,0je stopdec linejmp abstop:mov line,0ab:pos_get 0,row,linemov ah,2mov dl,00int 21hjmp firstcm:cmp line,00jz pos_cmpos_cm:pos_curse 0,0,0jmp first;;;;;;;;;;;;;;;;;;;;;;;显示编辑菜单edit_sh procpos_getpush dxwin 0,65h,1,9,9,18pos_curse 0,1,5string edit_1string edit_2string edit_3string edit_4string edit_5string edit_6pop dxdec dlmov ah,0hint 16hcmp ah,3chje pppp:win 0,1eh,9,10,13,70call backdisplayjmp char_getedit_sh endp ;;;;;;;;;;;;;;;;;;;;;;;;;;显示格式菜单form_sh proc pos_getpush dxwin 0,65h,1,21,4,30pos_curse 0,1,5string form_1string form_2pop dxdec dlmov ah,0hint 16hcmp ah,3chje qqqq:win 0,1eh,9,10,13,70call backdisplayjmp char_getform_sh endp ;;;;;;;;;;;;;;;;;;;;;;;;显示查看菜单check_sh proc pos_getpush dxwin 0,65h,1,31,4,40pos_curse 0,1,5string check_1string check_2dec dlmov ah,0hint 16hcmp ah,3chje rrrr:win 0,1eh,9,10,13,70call backdisplayjmp char_getcheck_sh endp ;;;;;;;;;;;;;;;;;;;;;;;;;;显示帮助信息help proc nearcall savedisplay ;显示帮助信息每行的位置 pos_getpush dxwin 0,57h,4,5,21,70pos_curse 0,6,25string help_mas1pos_curse 0,8,11string help_mas2pos_curse 0,10,11string help_mas3pos_curse 0,12,11string help_mas4pos_curse 0,14,11string help_mas5pos_curse 0,16,11string help_mas6pos_curse 0,18,11string help_mas7pop dxpos_curse 0,dh,dlmov ah,0int 16hcmp ah,36h ;F10jnz clscall helpcls:win 0,1eh,9,10,13,70 ;清屏call backdisplayhelp endpfuc_key endpmenu_show proc near ;显示菜单call savedisplaycmp ah,3bh ;F1功能jz menu_shjmp char_getmenu_sh: ;定义菜单的背景字体颜色 pos_getpush dxwin 0,06h,2,1,9,11win 0,65h,1,0,8,11pos_curse 0,1,0string manu_1string manu_2string manu_3string manu_4string manu_5string manu_6string manu_7pop dxdec dlpos_curse 0,dh,dlcopmar:red_chrcmp ah,50hjz manu_njmp manu_hidmanu_hid: ;菜单隐藏win 0,1eh,1,1,7,11call backdisplayjmp char_get ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;开始定义各个菜单项manu_n:win 0,65h,5,1,5,8pos_curse 0,5,0string manu_5win 0,15h,1,1,1,8pos_curse 0,1,0string manu_1red_chrcmp ah,48hje manu_ncmp al,0dhjz new_1cmp ah,50hje manu_ojmp manu_hid manu_n0:jmp manu_nmanu_o:win 0,65h,1,1,1,8 pos_curse 0,1,0 string manu_1win 0,15h,2,1,2,8 pos_curse 0,2,0 string manu_2red_chrcmp ah,48hje manu_ocmp al,0dhjz open_1cmp ah,50hje manu_sjmp manu_hidnew_1: jmp new_2manu_s:win 0,65h,2,1,2,8 pos_curse 0,2,0 string manu_2win 0,15h,3,1,3,8 pos_curse 0,3,0 string manu_3red_chrcmp al,0dhjz save_1cmp ah,48hje manu_scmp ah,50hje manu_ajmp manu_hid open_1: jmp open_2manu_n1:jmp manu_nmanu_a:win 0,65h,3,1,3,8 pos_curse 0,3,0 string manu_3win 0,15h,4,1,4,8 pos_curse 0,4,0 string manu_4red_chrcmp ah,48hje manu_acmp ah,50hje manu_ejmp manu_hidmanu_n2:jmp manu_n1new_2: jmp newsave_1: call savemanu_e:win 0,65h,4,1,4,8pos_curse 0,4,0string manu_4win 0,15h,5,1,5,8pos_curse 0,5,0string manu_5red_chrcmp ah,50hje manu_n2cmp ah,48hje manu_ecmp ah,1chje exitjmp manu_hidexit:call backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message4mov ah,9int 21hmov ah,1int 21hcmp al,79h jnz qcall quittq: cmp al,6ehjz quitquit: win 0,07h,0,0,24,79pos_curse 0,0,0mov ah,4chint 21hretmenu_show endp ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;新建文件new proc near pos_getpush dxcall backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60,mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message1cmp al,0dhmov ah,9int 21hmov bx,0all:mov ah,1int 21hcmp al,0dhje alllmov path[bx],alinc bxjmp allalll:win 0,3eh,15,9,17,61pop dxpos_curse 0,dh,dllea dx,pathmov ah,3chmov cx,00int 21hmov handle,axmov bx,axmov ah,3ehint 21hwin 0,3eh,1,0,23,79mov dh,1mov bh,0mov ah,2int 10hjmp char_getnew endpopen_2: jmp open ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;打开文件open proc near call backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message3mov ah,9int 21hmov bx,0cll:mov ah,1int 21hcmp al,13je clllmov path[bx],alinc bxjmp cllclll:win 0,3eh,1,0,23,79lea dx,pathmov ah,3dhmov al,0int 21hmov handle,axlea dx,buffermov bx,handlemov cx,2000mov ah,3fhint 21hwin 0,3eh,1,23,1,79mov dh,1mov dl,0mov ah,2int 10hmov cx,1000sub bx,bxreplay:mov dl,buffer[bx]inc bxmov ah,2int 21hloop replaymov bx,handlemov ah,3ehint 21hmov dh,1mov dl,0mov bh,0mov ah,2int 10hmov cx,10mov bx,0cleapath_3:mov bl,0mov path[bx],blloop cleapath_3jmp char_getopen endp ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;保存文件save proc near pos_getpush dxwin 0,3eh,1,0,6,10call backdisplaymov ah,pathcmp ah,21hjl j_3jmp j_4j_3:win 0,07h,15,10,17,61win 0,24h,14,9,16,60,mov dh,15mov dl,9mov bh,0mov ah,2lea dx,message2mov ah,9int 21hmov bx,0dll:mov ah,1int 21hcmp al,0dhje dlllmov path[bx],alinc bxjmp dlldlll:win 0,3eh,1,0,23,79pop dxpos_curse 0,dh,dl j_4: lea dx,pathmov ah,3chmov cx,00int 21hmov handle,axlea dx,buffermov bx,handlemov cx,2000mov ah,40hint 21hmov bx,handlemov ah,3ehint 21hcall backdisplayjmp char_getsave endpsavedisplay proc nearpush axpush bxpush cxpush dxpush dsmov ax,0002hint 33hmov bx,0dmov cx,3840dloop1:mov ax,0b800hmov ds,axmov dl,ds:[bx]mov ax,datamov ds,axmov bak[bx],dlinc bxloop loop1mov ax,0001hint 33hpop dspop dxpop cxpop bxpop axsavedisplay endpbackdisplay proc nearpush axpush bxpush cxpush dxpush dsmov bx,0dmov cx,3840dloop11:mov ax,datamov ds,axmov dl,bak[bx]mov ax,0b800hmov ds,axmov ds:[bx],dlinc bxloop loop11pop dspop dxpop cxpop bxpop axretbackdisplay endp ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;退出quitt proc near call backdisplaywin 0,07h,15,10,17,61win 0,24h,14,9,16,60,mov dh,15mov dl,9mov bh,0mov ah,2int 10hlea dx,message2mov ah,9int 21hmov bx,0qll:mov ah,1int 21hcmp al,0dhje qlllmov path[bx],alinc bxjmp qllqlll:win 0,07h,15,10,17,61win 0,3eh,14,9,16,60call backdisplaylea dx,pathmov ah,3chmov cx,00int 21hmov handle,axlea dx,buffermov bx,handlemov cx,2000mov ah,40hint 21hmov bx,handlemov ah,3ehint 21hcall backdisplaywin 0,07h,0,0,24,79mov ah,4chint 21hretquitt endpedit endp code endsend start五、总结1、通过本次汇编课程设计,我们加深了对汇编理论知识的理解,更重要的是可以用汇编的理论知识来设计出了一个直观的小系统,在这个过程中我们也很有成就感。

相关文档
最新文档