第06章(简化)方案.ppt
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《第06章(简化)方案.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 06 简化 方案
- 资源描述:
-
1、2022-12-81/41第第6章章微型计算机的程序设计微型计算机的程序设计6.1程序设计步骤程序设计步骤6.2简单程序简单程序6.3分支程序分支程序6.4循环程序循环程序6.5子程序子程序6.6查表程序查表程序习题习题2022-12-82/416.1 程序设计步骤程序设计步骤 汇编语言程序设计步骤:汇编语言程序设计步骤:(1)分析问题分析问题:已知条件、要解决的问题、功能:已知条件、要解决的问题、功能/性能要求等。性能要求等。(2)建立数学模型建立数学模型:把问题数学化、公式化,便于计算机处理。:把问题数学化、公式化,便于计算机处理。(3)确定算法确定算法:简单、速度快、精度高、代码量小、编
2、程容易。:简单、速度快、精度高、代码量小、编程容易。(4)绘制程序流程图绘制程序流程图:用箭头、框图、菱形图等表示程序结构。:用箭头、框图、菱形图等表示程序结构。(5)内存空间分配内存空间分配:为程序或数据分配内存空间。:为程序或数据分配内存空间。(6)编制程序与静态检查编制程序与静态检查:程序结构层次简单、清楚、易懂。:程序结构层次简单、清楚、易懂。(7)程序调试程序调试:利用调试软件:利用调试软件DEBUG进行调试。进行调试。2022-12-83/41汇编语言程序设计的特点:汇编语言程序设计的特点:(1)(1)算法要分解至算法要分解至指令级指令级;高级语言为;高级语言为语句级语句级。(2)
3、(2)要详细考虑要详细考虑内存空间分配内存空间分配问题:任何一个变量、一条问题:任何一个变量、一条指令都要明确其存储位置。指令都要明确其存储位置。2022-12-84/416.2 简单程序简单程序 这种程序的形式最简单,计算机执行程序的方式是这种程序的形式最简单,计算机执行程序的方式是“从头到从头到尾尾”,逐条执行指令语句,直到程序结束。逐条执行指令语句,直到程序结束。这类简单程序不用这类简单程序不用按上述按上述7个步骤,可直接对给出的题目写出助记符程序清单。个步骤,可直接对给出的题目写出助记符程序清单。【例例6.1】用数据运算指令,对两个用数据运算指令,对两个16位数做加法运算。这两个数位数
4、做加法运算。这两个数从地址从地址10050H开始连续存放,低位在小地址一端,结果放在这开始连续存放,低位在小地址一端,结果放在这两个数之后。两个数之后。(1)分析题目:它是一个分析题目:它是一个16位数相加的问题。在用加法指令时,必位数相加的问题。在用加法指令时,必须要考虑低须要考虑低8位和低位和低8位相加后产生的进位问题。位相加后产生的进位问题。2022-12-85/41(2)根据根据86系列指令系统,可以直接系列指令系统,可以直接对累加器对累加器AX做字操作,但在低位做字操作,但在低位相加后,会影响标志寄存器的进相加后,会影响标志寄存器的进位位位位CF,所以所以,要用带进位的加法要用带进位
5、的加法指令。指令。(3)绘制程序流程图,如右图所示。绘制程序流程图,如右图所示。图图6.2 简单程序框图简单程序框图(双字节相加双字节相加)2022-12-86/41(4)内存空间分配:被加数、加数及和在内存的空间分配见下表内存空间分配:被加数、加数及和在内存的空间分配见下表内存地址内存地址内内 容容10050H被加数低被加数低8位位10051H被加数高被加数高8位位10052H加数低加数低8位位10053H加数高加数高8位位10054H和的低和的低8位位10055H和的高和的高8位位表表6-1 双字节相加时的内存分配双字节相加时的内存分配2022-12-87/4150H51H52H53H54
6、H55H12H34HA1HBDHAX 00H 10H50H51H52H53H54H55HAX 12H 34HAX B3H F1HDIA1HBDH+=内存地址内存地址存储内容存储内容MOV AX,1000HMOV DS,AX MOV SI,50H MOV DI,52H MOV BX,54HSIDIBX50H51H52H53H54H55H12H34HA1HBDHB3HF1HBX B3H F1H低位在前,高位在后低位在前,高位在后CLC XOR AX,AX MOV AX,SI ADC AX,DI MOV BX,AX HLT设设SI=3412H DI=BDA1H内存分配示意内存分配示意程序详细注释见下
7、页程序详细注释见下页 2022-12-88/41(5)编制的程序如下:编制的程序如下:MOVAX,1000HMOVDS,AX ;DS1000HMOVSI,50H ;被加数指针被加数指针SI50HMOVDI,52H ;加数指针加数指针DI52HMOVBX,54H ;和的指针和的指针BX54HCLC ;清清CFXORAX,AX ;清清AXMOVAX,SI ;取一个字到取一个字到AXADCAX,DI ;AXAX+DI+CFMOVBX,AX ;存一个字到存一个字到BXHLT ;暂停暂停 问题:该程序能否简化?如何简化?问题:该程序能否简化?如何简化?2022-12-89/41 简化的程序:简化的程序:
8、MOVAX,1000HMOVDS,AX ;DS1000HMOVAX,50H ;取被加数到取被加数到AXADDAX,52H ;AX被加数被加数+加数加数MOV54H,AX ;存和数到存和数到54HHLT ;暂停暂停2022-12-810/41【例例6.2】将内存将内存(10050)单元的内容拆成两段,每段单元的内容拆成两段,每段4位,并位,并将它们分别存入内存将它们分别存入内存(10051)和和(10052)单元。即单元。即(10050)单元单元中的低中的低4位放入位放入(10051)的低的低4位,位,(10050)单元中的高单元中的高4位放入位放入(10052)的低的低4位,而位,而(1005
9、1)和和(10052)的高的高4位均为零。位均为零。(1)分析题目:这个题目提出的任务在十六进制显示及二、十分析题目:这个题目提出的任务在十六进制显示及二、十进制计算中常遇到的进制计算中常遇到的.现在假设内存现在假设内存(10050)中放着中放着7AH,则,则题目要求就是把题目要求就是把7AH拆成拆成07H和和0AH两部分,并把两部分,并把0AH放在放在(10051)单元,单元,07H放在放在(10052)单元。单元。2022-12-811/41 在拆字时,想取得一个数的前在拆字时,想取得一个数的前4位和后位和后4位可以用移位指令的位可以用移位指令的方法,也可以用逻辑与一个方法,也可以用逻辑与
10、一个0F0H(二进制为二进制为11110000)和逻辑和逻辑与一个与一个0FH(二进制为二进制为00001111)的办法。的办法。(2)根据指令系统中含有的指令,先取出该数用逻辑指令与上根据指令系统中含有的指令,先取出该数用逻辑指令与上一个一个 0FH,得到低,得到低4位,存入内存。再取出该数用移位指令位,存入内存。再取出该数用移位指令逻辑右移逻辑右移SHR(见图见图5.10(c)4次,取得高次,取得高4位,存入内存即可位,存入内存即可.图图5.10(c)2022-12-812/41(3)绘制程序流程图,如图绘制程序流程图,如图6.3所示。所示。(4)内存空间分配:把内存空间分配:把7AH拆成
11、拆成07H和和0AH两部分,它们在内存空间两部分,它们在内存空间的分配情况见下页表的分配情况见下页表6.2。图图6.3拆拆字字程程序序框框图图2022-12-813/41内存分配示意图内存分配示意图10050H7AH7HAH0H10051H0H10052H拆开拆开AH7AHAH7AHAH7AHAH7H内存地址内存地址内容内容10050H7AH10051H0AH10052H07H表表6-2 拆字程序的内存分配拆字程序的内存分配2022-12-814/41(5)编制的程序如下:编制的程序如下:MOV AX,1000HMOV DS,AX ;DS=1000HMOV SI,50H ;需拆字节的指针;需拆
12、字节的指针SI=50HMOV AL,SI ;取一个字节到;取一个字节到AL中中AND AL,0FH ;把;把AL的前的前4位清位清0MOV SI+1,AL ;把得到的后;把得到的后4位放到位放到(10051)单元单元MOV AL,SI ;再取出需拆字节放到;再取出需拆字节放到AL中中MOV CL,4 SHR AL,CL ;逻辑右移四次,前;逻辑右移四次,前4位补位补0MOV SI+2,AL ;放入;放入(10052)单元单元2022-12-815/41编程计算编程计算 1+2+3+4。MOV AX,0 ADD AX,1 ADD AX,2 ADD AX,3 ADD AX,4初始化初始化:AX 0
13、开始开始 AX AX+1 AX AX+2结束结束 AX AX+3 AX AX+4分析分析:需要有一个暂存空间存放累加和,需要有一个暂存空间存放累加和,初值设置为初值设置为0,之后依次累加。,之后依次累加。2022-12-816/416.3 分支程序分支程序 分支程序是利用分支程序是利用条件转移指令条件转移指令实现实现程序执行次序改变程序执行次序改变的一种程的一种程序结构形式,即当程序执行到某一指令后,根据某个条件是否序结构形式,即当程序执行到某一指令后,根据某个条件是否满足,分别执行不同的指令序列满足,分别执行不同的指令序列。一般来说,分支程序经常是先用一般来说,分支程序经常是先用比较指令比较
14、指令或或数据操作数据操作及及位检测位检测指令指令等来等来改变改变标志寄存器各个标志寄存器各个标志位标志位。然后用条件转移指令进。然后用条件转移指令进行分支。行分支。分支程序执行完后可以立即结束,也可以转到公共点结束,如分支程序执行完后可以立即结束,也可以转到公共点结束,如下图所示。下图所示。分支程序可以分支程序可以再分支再分支。程序框图:在绘制程序流程图时,需用菱形判断框程序框图:在绘制程序流程图时,需用菱形判断框,表示判定条表示判定条件。在绘制好流程图编写助记符程序时,建议先按上下流程线件。在绘制好流程图编写助记符程序时,建议先按上下流程线写写,写完上下流程线上的各框环节后,再写分支部分里的
15、框框。写完上下流程线上的各框环节后,再写分支部分里的框框。2022-12-817/41【例例6.3】求求AX累加器和累加器和BX寄存器中两个无符号数之差的绝寄存器中两个无符号数之差的绝对值,结果放在内存对值,结果放在内存(2800)单元中。单元中。(1)分析题目:此题目中,分析题目:此题目中,AX累加器和累加器和BX寄存器中的数是不寄存器中的数是不知道的。对两个不知大小的数相减并求绝对值,显然应该知道的。对两个不知大小的数相减并求绝对值,显然应该先解决哪一个值稍大些,然后再用大数减小数的方法,才先解决哪一个值稍大些,然后再用大数减小数的方法,才可求得绝对值。可求得绝对值。2022-12-818
16、/41(2)根据指令系统中的比较指令,编出判断大小的环节,即可解决根据指令系统中的比较指令,编出判断大小的环节,即可解决问题,图问题,图6.5即为该例题的程序流程图。即为该例题的程序流程图。图图6.5求求绝绝对对值值程程序序流流程程图图2022-12-819/41(3)根据流程图编制程序如下:根据流程图编制程序如下:CLC ;清除清除CFSUBAX,BX ;AXAX-BXJCAA ;CF转转AA去执行去执行(即即AXBX时转移时转移)MOVDI,2800H ;结果指针结果指针DI2800HMOVDI,AX ;结果送到结果送到2800H和和2801H单元单元HLT ;暂停暂停AA:SUB BX,
17、AX ;BXBX-AXMOVDI,2800HMOVDI,BXHLT2022-12-820/41【例例6.4】编一个程序,从外设编一个程序,从外设71H号中取一个数号中取一个数M,判断其,判断其值是否在值是否在10和和20之间,即之间,即10M20。如果。如果M20H,则送,则送0FFH给外设给外设73H;如果;如果M10,则送,则送00H给外设给外设73H;如果;如果10M20,则送,则送88H给外设给外设73H。(1)分析题目:根据题意,这是一个需要两次判断分析题目:根据题意,这是一个需要两次判断M大小的问大小的问题。先判题。先判M是否大于是否大于10,再判,再判M是否大于是否大于20。20
展开阅读全文