




已阅读5页,还剩86页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第八章微机的程序设计,顺序结构程序分支结构程序循环结构程序子例程结构,重点:程序设计方法顺序结构程序分支结构程序循环结构程序子例程结构,8.1程序设计步骤, 1 .分析问题2 .创建数学模型3 .决定算法4 .程序流程图5 .内存分配6 .程序创建7 .程序调试,datasegmenta1dbhellon!0dh、0ah、$ dataendssstack1segmentparamstack堆栈1 endscodessedesemantsumecs :代码、ds :数据、ss :堆栈1 start : mov 从axmovah4chint 21 hcodeendsendstart的示例来看,数据段、栈段、代码段、8-1顺序程序设计,补充:二进制码的十进制数,二进制码的十进制数是BCD码(binaryc 压缩BCD代码用4位的2进制数表示1位的10进制数。 一个字节表示两位十进制数。 例如: 10010110B是96D未经压缩的BCD代码,以一个字节表示十进制。 排名前四的总是0。 例如00001001B是9D的2种BCD码的码对照表,2种BCD码的码对照表,1.BCD数相加调整指令DAA和AAA(P196 ),DAA-个压缩BCD数相加调整指令: (ALAL=8AHDAA; AL=90H, 在AAA-两个未压缩BCD数量增加调整指令的情况下(ALAH=01H【例8.1】的程序段是staksegrmentstackstack d W32 dup (0) stakskstrenchindatasegmentw1dw 8931 作为datedendscosdesementbeginprocarasspumess :堆栈的cs :代码、ds:datapushdssubax、axpushax、movax、datamovds、axMOVAL AL=31H(78H)ADDAL,BYTEPTRW2; AL=A9H、CF=0、AF=0DAA; BCD数相加调整指令AL=09H,CF=1MOVSUM,ALMOVAL,BYTEPTRW1 1; AL=89H(56H)ADCAL、byteteptrw2; AL=E0H、CF=0、AF=1DAA; AL=46H,CF=1MOVSUM 1,almovsum 2,0; 也可以将处理进位到万位的rcl sum 2,1,1的命令adcsum 2,0 retbeginendopcodeenddsendbegin,示例8.2将未压缩BCD数W1和W2 (都是字变量)相加,并传递给sum字节变量。datasegmentW1DW0809H; 即89DW2DW0607H; 即,在67DSUMDB3DUP(0) 1字节中插入1位BCD码,加入相加后的值156dataends、MOVAX、W1的AX=0809H、W2为0607HADDAL、BYTEPTRW2; AL=10H,CF=0,AF=1AAA; 由于属于第一种情况,所以AL为(AL 06H)AL=05H、AH=01H; 第一种情况处理:显示AL=(AL 06H )提示“”,换行MOVAH,O9INT21HMOVDX,OFFSETIBUF; 字符串MOVAH,10INT21HMOVBL,IBUF 1MOVBH,0MOVIBUFBX 2, $movdl,0AH; 换行MOVAH、2INT21HMOVDX、OFFSETIBUF 2; 显示输入的字符串MOVAH、9INT21H、8.2分支程序设计,利用改变标志位的命令和迁移命令来实现。 无条件迁移指令: jmp (参见p207 )条件迁移指令: Jcondshort-label (偏移地址发送到IP )的特征:如果满足条件,实现段内迁移的80386现在可以移动到代码段的任何地方。 8.3循环程序设计, 8.3.2重复控制指令loop short-labellooppzshort-label或looppeshort-labellooppnzshort-label或looppneshshort-labeljcxzshort - 是EXC的值控制,请参见P214-215计算8.3.3单周期设计示例,示例8.11z=xry。 其中x和y是双字变量分析:双字变量为4字节,和可以占5字节。 作业8.4求出两个4比特未压缩BCD数的和,制作在显示器上显示的程序。 (p61 ),分析:两个相加分别以4字节为单位,并且考虑DD类型的进位,需要5字节的单元,并且,输出在显示器上的结束符$需要一个单元的存储,因而,总共6字节。 因此,数据段为datasegrmentw1DD 01020304 HW2DD 05060708 hsu db 5d up (0) db$dataends,代码段中的核心语句,MOVCX,4MOVSI,0MOVDI,4; 在SUM 4中加入位时,在SUM 0中加入最高位的进位。 XORAX,AX; 清CFA 1:移动、BYTEPTRW1SI; ADCAL,BYTEPTRW2SIAAAMOVSUMDI、ALINCSIDECDILOOPA1MOVSUMDI、0RCLSUMDI; 以上相加的结果被加入到SUM中。 然后,输出到监视器的程序语句MOVDX、OFFSETSUMMOVAH、09INT21H、作业8.5求出两个4位压缩BCD数的和,制作在监视器上显示的程序。(p61 )、分析:两个相加分别以2字节为单位,考虑到DW型也可以的进位,总和需要3字节的单元,而输出在显示器上的结束符号$需要1个单元,合计需要4字节。 因此,数据段为datasegrmentw1dw 1234 HW2dw 5678 hsudbddup (0) db$ 在SUM 2中加入位时,在SUM 0中加入最高位的进位。 XORAX,AX; 清CFA1:MOVAL、BYTEPTRW1SI; ADCAL,BYTEPTRW2SIDAAMOVSUMDI、ALINCSIDECDILOOPA1MOVSUMDI、0RCLSUMDI; 以上相加的结果被加入到SUM中。 然后,程序字符MOVDX、OFFSETSUMMOVAH、09INT21H、作业8.17将输入式加上1并加上2来显示。 根据(加数及其和都是4比特,即压缩的) BCD数,P262 )分析的结果,要求在屏幕上输出“加数1加数2 :”,从键盘输入两个4字节的BCD数,在相加后发送。 使用的变量: W1和W2即使从键盘输入也不知道几位的十进制数,所以确认其最大位数不超过使用的W1,例如6.2,将存储器(10050 )单元的内容分割为2个,每段4位,分别为存储器(10051 )和(10051 ) 也就是说,(10050 )单元的下位4比特属于(10051 )单元的下位4比特,(10050 )单元的上位4比特属于(10052 )单元的下位4比特。 用开始、初始化、元地址方法计数到AL,用AND命令取得该数量的“andofh到下位4位,存储到存储器(10051 )中,计数到原来的AL,将逻辑右移动到上位4位,存储到存储器(10052 )中,暂时停止,将逻辑右移动到上位4位将物理地址设为10000H 0050H=10050H的存储内容是ALANDAL,0FH; AL中的上位4位清零,下位4位的MOVSI 1、AL; 得到的低位4位是(10051H )单元MOVAL,SI; 进而,将分解的字节放入AL中的MOVCL、4SHRAL、CL; 逻辑上向右移位4次,高位4位补充0的MOVSI 2、AL; 求出(10052 )单元、ANDAL、F0HMOVESI 2、AL、6-3、分支结构程序、分支结构、多分支结构,例6.3ax累加器与BX寄存器的两个无符号数之差的绝对值,结果放入存储器(2800 )单元中。 分析:不知道AX和BX中的数量的大小,所以判断谁大后,可以大幅度减少求出绝对值,其流程图如图6-5、开始、初始化、清CF、AX-BXAX、AX存储器(2800和(2801 )单元,暂时,AX-BX0,AX-BXAXBX存储器(2800和(2801 )单元,不,相应的程序如下(p141 ),CLCSUBAX, BXJCAA进位位为1,取AAMOVDI、2800HMOVDI、AXHLTAA:SUBBX、AXMOVDI、2800HMOVDI、BXHLT,例6.4外围设备71号中的数m,其值在10和20之间对于向外围设备73H发送0FFH的M10,如果00H被发送至外围设备73H,并且存储在存储器(2001 )中,那么从(2002 )单元存储数据块本身,以及最后,将找到的最大值存储在(2002 )单元中假定此块的数目为无符号的8位。 (1)分析主题:这个问题必须是循环程序,并且处理部分应该包含判断分支。 (2)通过指令系统,可以采用求最大值的计算方法。 首先,将00的值作为最大值放入AL累加器中,然后对数据块的第一个数与AL中的数进行比较,如果大于00,则将00替换为该数,然后取出放入AL中的第二个数,将其与AL中的数进行比较,如果比其大,则取而代之这样,最后的AL累加器一定存储了最大的数量。 这是查找最大值的方法,数据块的总长度(数目)为循环次数。 (3)画出这个计算过程的程序流程如图6-l5所示。变更为子程序时的程序段、max : puhfpushaxpuscxpushstart : movsi、2001HMOVCL、SIINCSIMOVAL、00MOVCH、00HLP:CLCCMPAL jcbbjmpaabb : moval si aa : incisilooplpmov 2000 h 、ALHLTPOPSIPOPCXPOPAXPOPFRET,SUB1PROCNEAR/FAR, SUB1ENDP 1,调用程序和子例程位于同一代码段子例程中的类型是near cod1segmentcall sub 1sub1proc near. retsub1end PC od1ends,红色部分是子例程,而子程序SUB1的类型可以是FAR、段间调用、段内调用、sub1proc near. retsub1endop. call sub 1.代码2 ends、代码1 segmentcallfarptrs 段内调用.CODE2ENDS子例程SUB1的类型为FAR,段间调用,段内调用, 6.6查找表程序,点:1)将表的开头地址(或基地址)设置为BX2 ) 3 )使用转码指令XLAT,将累加器的值变更为存储器表中的任一值。 注意:表的起始地址是存储器物理地址的偏移地址,通过程序实现例6.9:5.2节中表5-2所示的十进制7段显示代码示例,假定该数据存储在来自2000H的存储器中,与“5”对应的7段代码另外,程序段使用START:MOVBX、2000HMOVAL、5XLATHLT、例2编辑子程序XLAT命令,将十六进制转换成ASCII代码。 ASCII码被存储在以DAT1为首的地址的数据区域中,对应的十六进制被存储在以DAT2为首的地址的数据区域中,转换结果被发送给以DAT3为首的地址的数据区域。 分析:第一个地址即基本地址DAT1被发送到BX,ASCII代码表中共有7FH (即128 )个字符。 因此,为了将索引值从0变更为128 (存储在以DAT3为首的地址的数据区域中),需要将得到的值以循环的方式发送到以DAT3为首的地址的数据区域。 作为查找表的核心的程序语句被发送到累加器AX,其中,名为MOVBX,2000H (表的开头地址) MOVAL,5 (表中的相应偏移,即索引值) XLAT的程序段的结果被发送到累加器AX,以用于Suu 或MOVSI,dat 2第I行,DAT3; 或者,MOVDI、DAT3MOVBX、DAT1MOVCX、16LP1:MOVAL、SI; 或者,RAMAX/ALXLATMOVDI、AL; STOSB :从ax/alramincsi中使用LODSB和STOSB时,不使用这两个语句,INCDI; 串行操作时SI和DI自动循环lp1retsub1endop,POPALP0PCXPOPDIPOPSIPOPBX,pushbxpushaushicxpuhal, 第6章为了修正练习问题和思考问题1,通过字符串操作命令实现:首先,将100H的个数从2170H的单元移动到1000H1的单元,从其中检索与AL中的文字相等的单元,将该单元替换为空白字符。 在DS段中有一个由从TABLE开始的160个字符构成的链表,在搜索该表,找到第一个非零的元素后,将该60个元素配置在AL中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年 工业锅炉G1证理论考试练习题附答案
- 节能报告范文17汇编
- 税务师网盘课件下载指南
- 中国文化娱乐服务行业全景评估及投资规划建议报告
- 2025年中国消防火灾报警系统行业发展前景预测及投资战略咨询报告
- 中国体育场地与设施建设行业全景评估及投资规划建议报告
- 2025年变配电保护自动化项目投资分析及可行性报告
- 巴曲酶项目投资可行性研究分析报告(2024-2030版)
- 中国装潢设计行业投资研究分析及发展前景预测报告
- 移动应用开发合同
- 城市绿化与噪音减少的技术措施
- 电梯维保培训
- 内审不符合项案例
- 在高中语文教学中如何融入中华民族共同体意识
- 柔性温度-压力传感器的设计与制备
- 2025年版中医(壮医)专业医师资格考试大纲
- 2025年安徽芜湖宜居投资集团招聘笔试参考题库含答案解析
- 2025年中国南方航空招聘笔试参考题库含答案解析
- 2024版北美留学咨询与申请一体化服务合同3篇
- 2025版国家开放大学法学本科《知识产权法》期末纸质考试总题库
- 建设项目全过程工程咨询-第二次形成性考核-国开(SC)-参考资料
评论
0/150
提交评论