资源描述:
《微机教师指导手册15》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、循环程序设计方法(一)目的任务掌握用条件转移指令和LOOP指令进行循环程序设计的一般方法重点难点分别用条件转移指令和LOOP指令进行循环程序设计教学方法讲授使用教具传统教学法(粉笔和黑板)提问作业备课时间年月日上课时间年月曰教研室主任(签字)年月日系主任(签字):年月日3.数据传送实例例4・37:变量(数据块)X中有10个字符(’ABCD1234),变量(数据块)丫中有8个字符(’12345678)',満呈:用X的值覆盖Y。对这类问题的理想解决方案是:先用LEA指令将数据块的首地址送入一个变址或基址寄存器,然后通过间接寻址方式访问操作数,通过寄存器加1操作调整存储器的地址。本例的程序流程如图
2、4/4所示,完整的程序代码为:XDB'ABCD1234'YDB'12345678,Main:MOVAX,@DATAMOVDS,AX;将数据段的段基址送入AXLEASI,X;取得变量X的首地址LEADI,Y;取得变量丫的首地址MOVCX,0;计数初值Next:MOVAL,[SI];从X中读取操作数MOV[DI],ALINCSIINCDIINCCX;复制到丫中CMPCX,8;与8比较JCNext;小于&寄存、继续下一个数4.数据拆分与拼装实例在控制系统的编程中,将从不同地址采集到的数据经过重新组装,形成一个新的控制字,也是经常遇到的问题。例4-38:字节变量X、Y中各有8个数据(自定),编程:将
3、X的低四位与Y的高四位合并为一个新的数据,然后存放到以Buff开始的8个单元中。XYBuffDBDB12H,13H,14H,15H,16H,17H,18H,87H,86H,85H,84H,83H,82H,81H,19H80HDB4DUP(?)LEASI,X;取3个变量的首地址LEADI,YLEABX,BUFFMOVCX,8;计数器、循环次数初值Aga:MOVAL,[SI];从X处取一个数ANDAL,OFH;清除高四位MOVAH,[DI];从Y处取一个数ANDAH,OFOH;清除低四位ORAL,AH;合并MOV[BX],AL;存储INCSI;修改参数,为下一个数做准备INCDIINCBXDEC
4、CXJNZAga(CX);条件成立,转移图4-15例4-38程序流程图4.8循环程序设计的方法4.8.1循环指令循环是将一段程序重复执行多遍,被重复执行的程序段称为循环体,代程序设计中另一种重要的方法。循环程序的一般结构一个循环程序由三部分组成:循环的初始化:为循环过程中有可能用到的变量提供初值。循环体:本次循环要完成的主要工作,内容由要处理的问题来确定的,结果可能影响到循环是否继续进行。循环控制:以条件表达式的结果作为是否结束循环的条件。循环程序设计是现这一部分的执行典型循环结构如图4-16所示。ffi16典型循环体的结构2•循环指令格式:LOOPOPR操作:(CX)J(CX)-1,若(C
5、X)主0,则转®PR所指的位置OPR是跳转的目的标号,一般也是循环体的初始位置。与JMP指令一样,标号OPR是一个8位的位移量。因此,它与LOOP指令之间的距离不能太大,应保拯-128〜+127字节之间。LOOP指令使用时总要与一条疑寄存器赋值的指令(通常是MOV指令)配合使用,它的一般结构是:MOVCX,循环次数OPR:LOOPOPR这种结构似C语言中的for(匸10;iVO;1-=”语句。在事先知道循环次数的情况下,可采用LOOP指令控制循环的结束;如果不能事先知道循环的次数,一般都采用比较指令与条件转移指令相结合来控制循环的结束。