版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、 在理解和熟悉了8086/8088指令系统的根底上,本章将介绍程序设计的一般过程,以及几种典型的程序形成的编写方法。 程序是计算机命令语句的有序集合,当用计算机求解某些问题时需要编制程序。汇编语言程序设计步骤如下:1分析问题2建立数学模型3确定算法4绘制程序流程图见图6-15内存空间分配6编制程序与静态检查7程序调试 这种程序的形式最简单,计算机执行程序的方式是“从头到尾,逐条执行指令语句,直到程序完毕,这是程序的最根本形式。 例例1:用数据运算指令,对两个16位数相加运算。这两个数从地址10050H开场连续存放,结果放在这两个数之后。 解:解:1分析题目 2确定算法 3绘制流程图见图6-2
2、4内存空间分配见表6-1开始开始初始化初始化段地址段地址DS:1000H被加数指针被加数指针SI50H加数指针加数指针 DI 52H和的指针和的指针BX 54H清除清除AX和和CF被加数被加数AX被加数被加数+加数加数AXAX (10054H)和()和(10055H)单元)单元暂停暂停表6-1 双字节相加时的内存分配内存地址内容内存地址内容10050H 被加数低8位10053H加数高8位10051H 被加数高8位10054H和的低8位10052H 加数低8位10055H和的高8位图图6-2 简单程序流程图简单程序流程图双字节相加双字节相加5编制的程序如下: MOV AX,1000H MOV D
3、S,AX ;DS=1000H MOV SI,50H ;被加数指针SI=50H MOV DI,52H ;加数指针DI=52H MOV BX,54H ;和的指针BX=54H CLC ;清CF X0R AX,AX ;清AX MOV AX,SI ;取一个字到AX ADC AX,DI ;AXAX+DI+CF MOV BX,AX ;存一个字到BX HLT ;暂停例例2:将内存10050H单元的内容拆成两段,每段4位,并将它们分别存入内存10051H和10052H单元。即10050H单元中的低4位放入10051H的低4位,10050H单元中的高4位放入10052H的低4位,而10051H和10052H的高4
4、位均为零。解:解:1分析题目2确定算法3绘制流程图见图6-34内存空间分配开始开始初始化初始化用间址方法取数用间址方法取数AL逻辑右移得到高逻辑右移得到高4位,位,存入内存(存入内存(10052H)单元)单元暂停暂停用逻辑与指令将该数用逻辑与指令将该数“与与”0FH取得低四位,存入取得低四位,存入内存(内存(10051H)单元)单元再取出原数再取出原数AL图图6-3 拆字程序流程图拆字程序流程图表表6-2 拆字程序的内存分配拆字程序的内存分配内存地址内容10050H7AH10051H0AH10052H07HMOV AX, 1000HMOV DS, AXMOV SI, 50HMOV AL, SI
5、AND AL, 0FHMOV SI+1,ALMOV AL, SIMOV CL, 4SHR AL, 4MOV SI+2, AL 5编制的程序如下:编制的程序如下: 分支程序是利用条件转移指令,使程序执行到某一分支程序是利用条件转移指令,使程序执行到某一指令后,根据条件即上面运算的情况是否满足,指令后,根据条件即上面运算的情况是否满足,来改变程序执行的次序,这类程序使计算机有了判断来改变程序执行的次序,这类程序使计算机有了判断作用。一般来说,它经常是先用比较指令或数据操作作用。一般来说,它经常是先用比较指令或数据操作及位检测指令等来改变标志存放器各个标志位。然后及位检测指令等来改变标志存放器各个标
6、志位。然后用条件转移指令进展分支。用条件转移指令进展分支。 分支程序执行完后可以立即完毕,也可以转到公分支程序执行完后可以立即完毕,也可以转到公共点完毕,见图共点完毕,见图6-4所示。分支程序可以再分支,各分所示。分支程序可以再分支,各分支程序之间没有对应关系,分支程序只要求在转移指支程序之间没有对应关系,分支程序只要求在转移指令中给出目的地址,即可实现程序分支。令中给出目的地址,即可实现程序分支。 在编写程序流程时,我们必定会用到棱形判断框。在编好流程图写助记符程序时,建议先按上下流程线写。写完上下流程线上的各框环节后,再写分支部分里的框框。 【例例1 1】求AX累加器和BX存放器中两个无符
7、号数之差的绝对值,结果放在内存2800H单元中。 1分析题目:此题目中,AX累加器和BX存放器中的数是不知道的。对两个不知大小的数相减并求绝对值,显然应该先解决哪一个值稍大些,然后再用大数减小数的方法,才可求得绝对值。2根据指令系统中的比较指令,编出判断大小的换件,即可解决问题。以下图为该例题的程序流程图。3根据流程图编制程序如下: CLC ;去除CF CMP AX,BX ;AX-BX,结果不返回 JC AA ;CF=1转AA去执行即AXBX时转移 SUB AX,BX ; AX AX-BX MOV DI,2800H ;结果指针DI=2800H MOV DI,AX ;结果送到2800H和2801
8、H单元, HLT ;暂停AA:SUB BX,AX ;BX BX-AX MOV DI,2800H MOV DI,BX HLT 例例2:我们要编一个程序。从外设 71H号中一个数 M,判断其值是否在 10和 20之间,即10M20。假如M20,那么送0FFH给外设73H;假如M1,并且放在内存并且放在内存2001单元中,而数据块本身是从单元中,而数据块本身是从2002单单元开场存放的,最后,把找出的最大值放到元开场存放的,最后,把找出的最大值放到2000单元中。单元中。假设这段数据块中的数都是无符号的假设这段数据块中的数都是无符号的8位数。位数。 1分析题目分析题目:此题必定是个循环程序,而且在处
9、理部分应:此题必定是个循环程序,而且在处理部分应包括判断分支环节。包括判断分支环节。 2根据指令系统,我们可以采用寻找最大值的计算方法。首根据指令系统,我们可以采用寻找最大值的计算方法。首先,我们用先,我们用00值放在值放在AL累加器中作为最大值;然后,用数据块累加器中作为最大值;然后,用数据块的第一个数和的第一个数和AL中的数做比较,假如比中的数做比较,假如比00大,那么用这个数取大,那么用这个数取代代00,放入,放入AL中;中; 接着取出第二个数与接着取出第二个数与AL中的数做,比较,假如比它大,取中的数做,比较,假如比它大,取而代之,否那么不取代,如此往复,直至最后一个数。而代之,否那么不取代,如此往复,直至最后一个数。 这样,最后这样,最后AL累加器中必定存放着最大的数。这就是寻找累加器中必定存放着最大的数。这就是寻找最大值的方法,而数据块的总长度数的个数就是循环次数。最大值的方法,而数据块的总长度数的个数就是循环次数。3绘制出此计算过程的程序流程如图6-l5所示。在编写实际子程序时要注意以下问题:在编写实际子程序时要注意以下问题:1入口信息。在上例中,要比较的一系列数,入口信息。在上例中,要比较的一系列数,必须先存放在以必须先存放在以2002H开场的内存单元中,而数开场的内存单元中,而数据的个数要放在据的个数要放在2001H单元中。单元中。2出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 金东区曹宅镇麻堰水库清淤应急工程招标文件
- 2026年山东省泰安市高考语文五模试卷含解析
- 医学26年:AI辅助病理诊断进展 查房课件
- 浅析提升数控机床机械加工效率的途径
- 医学26年:神经科学交叉学科进展 查房课件
- 徐州市云龙区遴选公务员考试真题解析
- 【2025】吕梁市离石区交口街道工作人员招聘考试真题
- 医学26年:呼吸重症监护室建设 查房课件
- 语文01卷(上海专用)-(参考答案)七年级下册语文期末考试
- GEO优化系统测评:2026年企业GEO选型决策框架与TOP3平台深度解析
- 《危重症患儿管饲喂养护理》中华护理学会团体标准解读
- 《国家综合性消防救援队伍队列条令(试行)》课件
- 2024年贵州省高考化学试题含答案解析
- 2025-2030年中国核桃种植深加工行业竞争格局与前景发展策略分析报告
- 《冻鲅鱼、冻鲐鱼》标准及编制说明
- 古诗鉴赏(简答题各题型答题技巧与答题规范)-2025年北京高考语文一轮复习(原卷版)
- 加油站施工施工组织设计方案
- 2024年西藏自治区中考语文试题卷
- 汽车配件物流运输服务方案
- 英语专业四级英语写作讲解
- CTD申报资料撰写模板:模块三之3.2.S.4原料药的质量控制
评论
0/150
提交评论