汇编语言程序设计1汇编语言软件开发步_第1页
汇编语言程序设计1汇编语言软件开发步_第2页
汇编语言程序设计1汇编语言软件开发步_第3页
汇编语言程序设计1汇编语言软件开发步_第4页
汇编语言程序设计1汇编语言软件开发步_第5页
免费预览已结束,剩余3页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、汇编语言程序设计4.1汇编语言软件开发步骤及输入/输出问题4. 1.1汇编语言软件开发步骤(略)4. 1.2 汇编语言编程时的输入/输出问题1. DOS功能调用的方法调用DOS功能调用与调用一般子程序不同,有特定的步 骤和指令,如下:(1) .调置入口参数,如所调用的子程序不需参数则可省 略此步。(2) 欲调用的子程序编号送到AH寄存器中。(3) 发中断调用指令INT 21Ho2. DOS基本I/O功能调用(1) 1号功能调用(键盘输入)入口参数:无出口参数:所读取的字符ASCII码在AL内。功能:读取按键字符的ASCII码设置到AL中,同时在屏幕上 显示这个字符。若无键按下,该调用等待直到有

2、键按下为止。(2) .2号功能调用(在屏幕上显示一个字符)入口参数:DL =待显示字符的ASCII码出口参数:无功能:将字符显示在屏幕上但如果字符是控制符,则实际执 行相应的功能.(3) 9号功能调用(字符串显示)入口参数:DS: DX指向待显示字符串,该字符串必须以 作为结束符出口参数:无功能:结束符之前的字符都被显示在屏幕上。(4).10号功能调用(字符串输入)入口参数:DS: DX指向输入缓冲区。缓冲区格式如图4-1所示 出口参数:用户输入字符个数设置在缓冲区第二个单元中。 功能:从键盘上读取一个字符串。DS: DX 调用结束后DOS在此单元内指出实际接收的了符个 数(不包扌回车符)5?

3、从键盘输入了符存放区指出最多接收的字符个数(包括最后的回车符)图4-1 10号调用输入缓冲区4.2顺序程序设计4.2.1字符串的输入输出例4. 1编一程序先提示用户输入一个字符串,然后读取 用户的输入,并将用户输入的数据在下行输出。(程序见课本)422査表例4.2在以TABLE为首地址的内存中顺序存有06的立方 数表。今从键盘上输入一个数(W6),求其立方值,结果保 存至RESULT单元。分析:因为立方表己顺序排放在内存中。又已知首地址 TABLE,只要把输入数据作为偏移量与首址相加,就指向了表 中立方值的地址,取其内容即为该数的立方值。(程序参见课本).4.3分支程序设计4.3.1基本分支程

4、序设计在分支结构中,如果条件成立则完成某项操作,否则执行 其它操作或后续指令,其结构如图42所示,该图同时也给 出了分支程序的二种典型结构。处理(a)条件不成立执行后续指令(b)条件不成立执行不同操作图4-2分支结构例4. 3十六进制数显示:在存储单元DAT中存放着一位十六 进制数,将其显示到屏幕上。分析:十六进制数据不能作为一个整体进行显示,要首先 将其分解为各个字符的ASCII码,然后再调用DOS系统功能调 用的2号功能完成各个字符显示。(程序参见课本).4.3.2跳转表法实现分支在分支程序设计中,实现分支的方法是值得考虑的问题, 如果仅用比较转移指令实现分支,当分支较多时,比较转移的 实

5、现非常麻烦,使得进入各个分支的时间不相等,进入最后一 个分支的等待时间最长。用跳转表法实现分支可以解决这类 问题,具体做法是:在内存中建立一张表,表中顺序存放着 各个分支处理程序的首地址,这样的表称为跳转表,要进入 某个分支,只要査找跳转表即可。单元。(程序见课本).4.4循环程序设计4.4.1循环程序的结构循环程序是由四部分构成:初始化部分、循环工作部 分、参数调整部分、循环控制部分循环程序通常又分两种结构,如图4-3所示。4.5子程序设计子程序在宏汇编语言中称为过程。4. 5.1子程序的调用与返回指令1. 子程序定义伪指令在MASM中专门提供了过程定义伪指令来定义子程序,如下: 格式:过程

6、名PROC类型 RET过程名 ENDP2. 子程序的调用指令CALL格式:CALL子程序名功能:调用指定的子程序。先把本指令的下一条指令的地址(即返回点)压入堆栈保 存,再转向目标地址处执行子程序。根据是段内调用还是段 间调用具体的执行过程又有所不同,如下: 段内调用先将指令指针IP入栈保护,然后改变IP使之指向子程序的 起始位置。 段间调用先将当前CS入栈,再将当前IP入栈,然后改变CS和IP使之 指向子程序的起始位置。格式:RET功能:子程序执行完后,通过本指令返回主程序。执行操作:对段内调肉,栈顶一个字IP (同时SP+2-SP),从而 返回到主程序中CALL指令的下条指令处。对段间调用

7、,栈顶 一个字-IP (同时SP+2-SP),再将新栈顶一个字-CS (同时SP+2-SP),从而返回到主程序中CALL指令的下条 指令处。4.子程序设计示例例5.8编写一子程序,能在屏幕上显示字符A,并调用之 完成二次显示。(程序见课本).4. 5.2子程序设计的相关技术1. 主程序的现场保护问题子程序要使用主程序已使用了的寄存器时,必须在修改前对 这些寄存器内的数据予以保护,在返回主程序前再恢复这些寄 存器的内容。子程序保护主程序寄存器的最简单办法是将其压入堆栈,恢 复时再从堆栈中将数据弹回原寄存器,要注意的是由于堆栈 先进后出的特性,必须按入栈顺序相反的顺序恢复寄存器。2. 主、子程序间参数的传递方法主程序向子程序传递参数的方法有三种(仅介绍二种)。(1) .通过寄存器传递参数主程序在调用子程序前将参数放到

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论