已阅读5页,还剩18页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
本章重点 熟练掌握汇编语言的四种程序设计方法 顺序程序设计 分支程序设计 循环程序设计以及子程序设计 本章难点 确定算法 合理分配内存工作单元 第4章汇编语言程序设计 4 1汇编语言程序设计概述 4 1 1汇编语言程序设计步骤使用汇编语言设计一个程序大致上可分为以下几个步骤 1 分析问题 明确要求 解决问题之前 首先要明确所要解决的问题和要达到的目的 技术指标等 2 确定算法 根据实际问题的要求 给出的条件及特点 找出规律性 最后确定所采用的计算公式和计算方法 这就是一般所说的算法 算法是进行程序设计的依据 它决定了程序的正确性和程序的指令 3 画程序流程图 用图解来描述和说明解题步骤 4 分配内存工作单元 确定程序与数据区的存放地址 5 编写源程序 6 程序优化 7 程序调试 修改和最后确定源程序 只有通过上机调试并得出正确结果的程序 才能认为是正确的程序 没有调试过的程序 很难保证程序无错误 程序调试是不可缺省的 4 2顺序程序设计 对于一些简单的数据处理 只要把完成处理的各个步骤用汇编语言描述清楚 让计算机按指令编写的次序从头到尾一条条执行即可 这样的程序结构称为顺序结构 例4 1 已知X和Y是数据段中的两个无符号字节单元 用程序完成表达式Z X2 Y2 2的计算 编制程序如下 DATASEGMENTXDB15YDB34ZDW DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AX 初始化数据段MOVAL X X中的内容送ALMULAL 计算X XMOVBX AX X X乘积送BXMOVAL Y Y中的内容送ALMULAL 计算Y YADDAX BX 计算X2 Y2SHRAX 1 计算 X2 Y2 2MOVZ AX 结果送Z单元MOVAH 4CHINT21H 返回DOSCODEENDSENDSTART 汇编结束 例4 2 从键盘读入两个一位数 按键时保证按下的是数字键 显示它们的积 先后从键盘上读取两个按键 分别减去30H得到它们对应的数值 然后相乘分解成十位数字与个位数字 转换成ASC 码后依次输出即可 为了输入输出效果的直观 有必要在每次按键后回车换行 CODESEGMENTASSUMECS CODEMAIN MOVAH 1INT21H 读入第1个数字MOVBL AL 保存在BL中MOVAH 2MOVDL 13INT21H 回车MOVDL 10INT21H 换行 MOVAH 1INT21H 读入第2个数字SUBAL 30H 第2个数字转换成十进制数SUBBL 30H 第1个数字转换成十进制数MULBL 两个数相乘 积在AX中MOVBL 10 DIVBL 积除以10取商送AL 余数在AH中ADDAX 3030H 转换成相应的ASC 码MOVBX AX 保存在BX中MOVAH 2MOVDL 13INT21H 回车MOVDL 10INT21H 换行MOVDL BLMOVAH 2INT21H 输出十位数MOVDL BHINT21H 输出个位数MOVAH 4CHINT21H 返回DOSCODEENDSENDMAIN 程序结束 4 3分支程序设计 分支程序是利用条件转移指令 使程序执行到某一指令后 根据条件是否满足 来改变程序执行的次序 在程序设计中经常会遇到各种判断和比较 例如 相等 和 不相等 正 和 负 大于 和 小于 满足条件 和 不满足条件 等等 这些判断和比较在程序中都可以组成各种不同的逻辑框 并产生相应的分支程序 例4 3 已知AX中放有一个带符号数 编写程序段 计算它的绝对值 CMPAX 0JGELOOPMOVBX AXMOVAX 0SUBAX BXLOOP 1当X 0 例4 4 符号函数Y 0当X 0 128 X 127 1当X 0设任意给定的X存放在XX单元 计算出函数Y值要求存放在YY单元 TASEGMENTXXDB0F0HYYDB DATAENDSCODESEGMENTASSUMECS CODE DS DATASTARTPROCFARPUSHDSSUBAX AXPUSHAXMOVAX DATAMOVDS AX MOVAL XXCMPAL 0JGEBIGRMOVAL 0FFHMOVYY ALRETBIGR JEEQULMOVAL 1EQUL MOVYY ALRETSTARTENDPCODEENDSENDSTART 4 4循环程序设计 循环程序是强制CPU重复执行某一指令系列的一种程序结构形式 它可以使许多重复工作的程序大为简化 而且减少内存空间 被重复执行的部分称作循环体 要想把循环体多次执行 就必须在循环体的前后有相应的指令实现循环控制 循环程序一般由4部分组成 初始化 循环体 循环控制和循环结束处理 循环程序分为单循环和多重循环 两重以上循环称为多重循环 例4 5 现将以AREA1为首地址的100个字节数据搬移到以AREA2为首地址的内存中去 程序如下 DATASEGMENTAREA1DB100DUP ATEA2DB100DUP 00 DATAENDSCODESEGMENTASSUMECS CODE DS DATASTART MOVAX DATAMOVDS AXMOVSI OFFSETAREA1MOVDI OFFSETATEA2MOVCX 100 AGAIN MOVAL SI MOV DI ALINCSIINCDIDECCXJNZAGAINMOVAH 4CHINT21HCODEENDSENDSTART 例4 6 若有一串无符号数 放在NUM开始的单元中 要求编制汇编语言程序 将其中的最大值找出来 且放到存储单元MAX中 这串数的长度已存放在COUNT单元 程序如下 DATASEGMENTCOUNTDW20NUMDWa1 a2 a3 a20MAXDW DATAENDSSTACKSEGMENTPARASTACK STACK DB20DUP STACKENDSCODESEGMENTASSUMECS CODE DS DATA SS STACK MAINPROCFARPUSHDSMOVAX 0PUSHAXMOVAX DATAMOVDS AXMOVBX OFFSETNUMMOVCX COUNTMOVAX BX INCBXINCBXLOOP1 CMPAX BX JAELOOP2MOVAX BX LOOP2 INCBXINCBXDECCXJNZLOOP1MOV MAX AXRETMAINENDPCODEENDSENDMAIN 例4 7 设计一个100ms的软件延时程序 采用多重循环程序 内循环完成10ms的延时 外层循环10次即可 程序如下 CODESENGMETASSUMECS CODESTART MOVDL 10DELAY1 MOVCX 2800HDELAY2 LOOPDELAY2DECDLJNZDELAY1MOVAH 4CHINT21HCODEENDSENDSTART 4 5子程序设计 1 子程序格式子程序格式如下 子程序名PROC类型指令序列子程序名ENDP 2 子程序调用与返回子程序调用与子程序返回由CALL和RET指令实现 子程序调用方式有近程调用 远程调用 直接调用和间接调用 指令格式 CALL子程序名指令功能 这是调用子程序的指令 根据被调用的子程序的类型不同 CALL指令的功能分为两种情况 1 近程调用 段内调用 类型为NEAR 调用时首先把当前IP值压入堆栈 而后执行子程序 当子程序执行完后 利用RET指令将堆栈中保护的IP值弹出IP寄存器 完成一次近程调用过程 2 远程调用 段间调用 类型为FAR 调用时先把CS压入堆栈 再把IP压入堆栈 尔后执行子程序 当子程序执行完后 利用RET指令堆栈中保护的程序弹出IP寄存器和CS段寄存器中 完成一次远程的调用过程 3 保护现场和恢复现场利用指令PUSH保护现场 利用指令POP恢复现场 例如 SUB1PROCNEARPUSHAX保护现场PUSHBXPUSHCXPUSHDX POPDX恢复现场POPCXPOPBXPOPAXRETSUB1ENDP 4 主程序和子程序之间的参数传送方法主程序在调用子程序时 经常需要传送一些参数给子程序 子程序运行完后经常要回送一些信息给主程序 这种主程序和子程序之间的信息传送称为参数传送的主要方法有以下几种 1 通用寄存器传送参数例如 用寄存器BX完成主程序 子程序的参数传送 并由子程序将BX带回 主程序 2 存储单元传送参数若主程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年度大型运动会安防系统合同
- 2024年度大数据分析服务合同标的明细
- 2024年专用:租赁合同保证金条款汇编
- 2024年度居民住宅铝合金门窗安装工程合同
- 2024年废旧物资回收协议
- 2024工程合规审查中的黑白合同问题探讨
- 04版智能硬件研发与制造分包合同
- 2024年国际货运代理及仓储物流合作合同
- 2024年度5G基站建设与运营合作协议
- 2024年一年级数学老师家长会
- 外贸公司组织架构、岗位职责
- 机械设计课程设计ZDD1-B说明书
- 人教版-高一至高三全部英语课文朗读与听力MP3链接
- 第4课 我来画棵“家庭树”第一课时 ppt课件
- ARMA算法整理
- 岛电SR中文说明书
- 地下水八大离子-阴阳离子平衡计算公式
- 部分轮毂的基本知识
- 小学数学六年级“24点”试题及答案
- 钻孔灌注桩验孔记录表
- 法语书信格式(正式版)
评论
0/150
提交评论