32位微机原理与接口技术钱晓捷课件04.ppt
《32位微机原理与接口技术钱晓捷课件04.ppt》由会员分享,可在线阅读,更多相关《32位微机原理与接口技术钱晓捷课件04.ppt(149页珍藏版)》请在咨信网上搜索。
1、钱晓捷,微机原理与接口技术钱晓捷,微机原理与接口技术基于基于IA-32IA-32处理器和处理器和3232位汇编语言位汇编语言第第 4 4 章章汇编语言程序设计汇编语言程序设计4.1 4.1 分支程序结构分支程序结构4.2 4.2 循环程序结构循环程序结构4.3 4.3 子程序结构子程序结构4.4 Windows4.4 Windows应用程序编程应用程序编程4.5 4.5 与与C+C+语言的混合编程语言的混合编程微机原理与接口技术第5版机械工业出版社4.1 4.1 分支程序结构分支程序结构改改变变程程序序执执行行顺顺序序、形形成成分分支支、循循环环、调调用用等程序结构是很常见的程序设计问题等程序
2、结构是很常见的程序设计问题高高级级语语言言采采用用IFIF等等语语句句表表达达条条件件,并并根根据据条条件是否成立转向不同的程序分支件是否成立转向不同的程序分支汇编语言需要汇编语言需要首先利用比较首先利用比较CMPCMP、测试、测试TESTTEST、加减、加减运算、逻辑运算等影响状态标志的运算、逻辑运算等影响状态标志的指令形成条件指令形成条件然后利用条件转移指令判断由标志然后利用条件转移指令判断由标志表达的条件表达的条件,并根据标志状态控制程序并根据标志状态控制程序转移到不同的程序段转移到不同的程序段微机原理与接口技术第5版机械工业出版社4.1.1 4.1.1 无条件转移指令无条件转移指令程序
3、代码在代码段程序代码在代码段CSCS:指明代码段在主存中的段基地址:指明代码段在主存中的段基地址EIPEIP:给出将要执行指令的偏移地址:给出将要执行指令的偏移地址程序顺序执行,处理器自动增量程序顺序执行,处理器自动增量EIPEIP程序控制转移,程序控制转移,EIPEIP随之改变随之改变程序转移到另外的代码段,程序转移到另外的代码段,EIPEIP和和CSCS都改变都改变控控制制转转移移类类指指令令:改改变变EIPEIP(有有些些也也改改变变CSCS),即即改改变变程程序序执执行行顺顺序序(实实现现程程序序控控制制转移)的指令转移)的指令本章学习本章学习控制转移类指令控制转移类指令微机原理与接口
4、技术第5版机械工业出版社1.1.转移范围转移范围段内转移段内转移在当前代码段范围内的程序转移在当前代码段范围内的程序转移不需更改不需更改CSCS,只要改变只要改变EIPEIP(偏移地址)(偏移地址)近近转转移移(NearNear):3232位位近近转转移移NEAR32NEAR32,1616位位近近转移转移NEAR16NEAR16短转移(短转移(ShortShort):转移范围在:转移范围在127127-128-128字节字节段间转移段间转移从当前代码段跳转到另一个代码段从当前代码段跳转到另一个代码段需要更改需要更改CSCS(段地址)和(段地址)和EIPEIP(偏移地址)(偏移地址)远远转转移移
5、(FarFar):4848位位远远转转移移FAR32FAR32,3232位位远远转转移移FAR16FAR16微机原理与接口技术第5版机械工业出版社2.2.指令寻址方式指令寻址方式相对寻址方式相对寻址方式提供目标地址相对于当前指令指针提供目标地址相对于当前指令指针EIPEIP的位移量的位移量目标地址(转移后的目标地址(转移后的EIPEIP)当前)当前EIPEIP位移量位移量相对寻址都是段内转移,最常用、最灵活相对寻址都是段内转移,最常用、最灵活直接寻址方式直接寻址方式直接提供目标地址直接提供目标地址目标地址(转移后的目标地址(转移后的CSCS和和EIPEIP)指令操作数)指令操作数间接寻址方式间
6、接寻址方式指示寄存器或存储单元指示寄存器或存储单元目标地址来自寄存器或存储单元、间接获得目标地址来自寄存器或存储单元、间接获得寄存器间接寻址:用寄存器保存目标地址寄存器间接寻址:用寄存器保存目标地址存储器间接寻址:用存储单元保存目标地址存储器间接寻址:用存储单元保存目标地址目标地址目标地址目的地址目的地址转移地址转移地址微机原理与接口技术第5版机械工业出版社3.JMP3.JMP指令指令无条件转移:程序无条件改变执行顺序无条件转移:程序无条件改变执行顺序JMPJMP指令相当于高级语言的指令相当于高级语言的gotogoto语句语句JMP labelJMP label;程序转向程序转向labella
7、bel标号指定的地址标号指定的地址;段内相对寻址,段间直接寻址段内相对寻址,段间直接寻址JMP reg32/reg16JMP reg32/reg16;程序转向寄存器指定的地址程序转向寄存器指定的地址;寄存器间接寻址寄存器间接寻址JMP mem48/mem32/mem16JMP mem48/mem32/mem16;程序转向存储单元指定的地址程序转向存储单元指定的地址;存储器间接寻址存储器间接寻址微机原理与接口技术第5版机械工业出版社JMPJMP指令的指令的4 4种类型种类型1.1.段内转移、相对寻址段内转移、相对寻址标号指明目标地址,指令代码包含位移量标号指明目标地址,指令代码包含位移量2.2.
8、段内转移、间接寻址段内转移、间接寻址通用寄存器或主存单元包含目标指令偏移地址通用寄存器或主存单元包含目标指令偏移地址3.3.段间转移、直接寻址段间转移、直接寻址标号包含目标指令的段地址和偏移地址标号包含目标指令的段地址和偏移地址4.4.段间转移、间接寻址段间转移、间接寻址3232位段用位段用3 3字存储单元包含目标地址字存储单元包含目标地址1616位段用双字存储单元包含目标地址位段用双字存储单元包含目标地址MASM会根据存储模式等信息自动识别会根据存储模式等信息自动识别微机原理与接口技术第5版机械工业出版社例例4-14-1无条件转移程序无条件转移程序1 1;数据段数据段000000000000
9、00000000000000000000nvarnvardword?dword?;代码段代码段0000000000000000EB 01EB 01jmp labl1jmp labl1;相对寻址相对寻址00000002000000029090nopnop0000000300000003E9 00000001E9 00000001labl1:labl1:jmpjmp near near ptrptr labl2 labl2;相对近转移相对近转移00000008000000089090nopnop0000000900000009B8 00000011 RB8 00000011 Rlabl2:labl
10、2:movmov eax,offseteax,offset labl3 labl3 微机原理与接口技术第5版机械工业出版社例例4-14-1无条件转移程序无条件转移程序2 20000000E0000000EFF E0FF E0jmp eaxjmp eax;寄存器间接寻址寄存器间接寻址00000010000000109090nopnop0000001100000011B8 00000022 RB8 00000022 Rlabl3:labl3:mov eax,offset labl4mov eax,offset labl40000001600000016A3 00000000 RA3 0000000
11、0 Rmov nvar,eaxmov nvar,eax0000001B0000001BFF 25 00000000 RFF 25 00000000 Rjmp nvarjmp nvar;存储器间接寻址存储器间接寻址00000021000000219090nopnoplabl4:labl4:movmov ebx,offsetebx,offset nvarnvarjmpjmp near near ptrptr ebxebx;数据的寄存器间接寻址数据的寄存器间接寻址数据的存储器直接寻址数据的存储器直接寻址微机原理与接口技术第5版机械工业出版社4.1.2 4.1.2 条件转移指令条件转移指令根据指定的条
12、件确定程序是否发生转移根据指定的条件确定程序是否发生转移JccJcc label label;条件满足,发生转移;否则,顺序执行下条指令条件满足,发生转移;否则,顺序执行下条指令LABELLABEL表示目标地址,采用段内相对寻址表示目标地址,采用段内相对寻址3232位位IA-32IA-32处理器:达到处理器:达到3232位的全偏移量位的全偏移量1616位位80 x8680 x86处理器:处理器:-128-128+127+127间的短转移间的短转移条件转移指令不影响标志,但要利用标志条件转移指令不影响标志,但要利用标志cccc表示利用标志判断的条件,表示利用标志判断的条件,1616种、两类种、两
13、类单个标志状态作为条件单个标志状态作为条件两数大小关系作为条件两数大小关系作为条件微机原理与接口技术第5版机械工业出版社转移条件转移条件cccc:单个标志状态:单个标志状态JZ/JEJZ/JEZF=1ZF=1Jump if Zero/EqualJump if Zero/EqualJNZ/JNEJNZ/JNEZF=0ZF=0Jump if Not Zero/Not EqualJump if Not Zero/Not EqualJSJSSF=1SF=1Jump if SignJump if SignJNSJNSSF=0SF=0Jump if Not SignJump if Not SignJP/J
14、PEJP/JPEPF=1PF=1Jump if Parity/Parity EvenJump if Parity/Parity EvenJNP/JPOJNP/JPOPF=0PF=0Jump if Not Parity/Parity OddJump if Not Parity/Parity OddJOJOOF=1OF=1Jump if OverflowJump if OverflowJNOJNOOF=0OF=0Jump if Not OverflowJump if Not OverflowJCJCCF=1CF=1Jump if CarryJump if CarryJNCJNCCF=0CF=0Ju
15、mp if Not CarryJump if Not Carry多个助记符方便记忆多个助记符方便记忆微机原理与接口技术第5版机械工业出版社转移条件转移条件cccc:两数大小关系:两数大小关系JB/JNAEJB/JNAECF=1CF=1Jump if Below/Not Above or EqualJump if Below/Not Above or EqualJNB/JAEJNB/JAECF=0CF=0Jump if Not Below/Above or EqualJump if Not Below/Above or EqualJBE/JNAJBE/JNACF=1CF=1或或ZF=1ZF=1J
16、ump if Below/Not AboveJump if Below/Not AboveJNBE/JAJNBE/JACF=0CF=0且且ZF=0ZF=0Jump if Not Below or Equal/AboveJump if Not Below or Equal/AboveJL/JNGEJL/JNGESFOFSFOFJump if Less/Not Greater or EqualJump if Less/Not Greater or EqualJNL/JGEJNL/JGESF=OFSF=OFJump if Not Less/Greater or EqualJump if Not Le
17、ss/Greater or EqualJLE/JNGJLE/JNGSFOFSFOF或或ZF=1ZF=1Jump if Less or Equal/Not GreaterJump if Less or Equal/Not GreaterJNLE/JGJNLE/JGSF=OFSF=OF且且ZF=0ZF=0Jump if Not Less or Equal/GreaterJump if Not Less or Equal/Greater微机原理与接口技术第5版机械工业出版社1.1.单个标志状态作为条件的条件转移指令单个标志状态作为条件的条件转移指令JZ(JE)JZ(JE)和和JNZ(JNE)JNZ(
18、JNE):利用零位标志:利用零位标志ZFZF判断结果是零(相等)还是非零(不等)判断结果是零(相等)还是非零(不等)JSJS和和JNSJNS:利用符号标志:利用符号标志SFSF判断结果是负还是正判断结果是负还是正JOJO和和JNOJNO:利用溢出标志:利用溢出标志OFOF判断结果是溢出还是没有溢出判断结果是溢出还是没有溢出JP(JPE)JP(JPE)和和JNP(JPO)JNP(JPO):利用奇偶标志:利用奇偶标志PFPF判断结果低字节判断结果低字节“1”1”的个数是偶数还是奇数的个数是偶数还是奇数JCJC和和JNCJNC:利用进位标志:利用进位标志CFCF判断结果是有进位(为判断结果是有进位(
19、为1 1)还是无进位(为)还是无进位(为0 0)微机原理与接口技术第5版机械工业出版社例例4-24-2个数折半程序个数折半程序1 1mov eax,885mov eax,885;假设一个数据假设一个数据shr eax,1shr eax,1;数据右移进行折半数据右移进行折半jncjnc goeven goeven;余数为余数为0 0,即,即CFCF0 0条件成立,转移条件成立,转移add eax,1add eax,1;否则余数为否则余数为1 1,即,即CFCF1 1,进行加,进行加1 1操作操作goeven:goeven:call dispuidcall dispuid;显示结果显示结果 443
20、运行结果微机原理与接口技术第5版机械工业出版社例例4-24-2个数折半程序个数折半程序2 2mov eax,886mov eax,886;假设一个数据假设一个数据shr eax,1shr eax,1;数据右移进行折半数据右移进行折半jcjc goodd goodd;余余数数为为1 1,即即CFCF1 1条条件件成成立立,转转移移到到分分支体,进行加支体,进行加1 1操作操作jmpjmp goeven goeven;余余数数为为0 0,即即CFCF0 0,不不需需要要处处理理,转转移移到显示!到显示!goodd:goodd:add eax,1add eax,1;进行加进行加1 1操作操作goev
21、en:goeven:call dispuidcall dispuid;显示结果显示结果jnc goeven 何不合二为一?何不合二为一?微机原理与接口技术第5版机械工业出版社例例4-24-2个数折半程序个数折半程序3 3mov eax,887mov eax,887;假设一个数据假设一个数据shr eax,1shr eax,1;数据右移进行折半数据右移进行折半adc eax,0adc eax,0;余数余数CFCF1 1,进行加,进行加1 1操作操作;余数;余数CFCF0 0,没有加,没有加1 1call dispuidcall dispuid;显示结果显示结果movmov eax,888 eax
22、,888;假设一个数据假设一个数据add eax,1add eax,1;个数加个数加1 1rcrrcr eax,1 eax,1;数据右移进行折半数据右移进行折半call call dispuiddispuid;显示结果显示结果改进算法改进算法消除分支消除分支微机原理与接口技术第5版机械工业出版社例例4-34-3位测试程序位测试程序1 1;数据段数据段no_msgno_msgbyte Not Ready!,0byte Not Ready!,0yes_msgyes_msgbyte Ready to Go!,0byte Ready to Go!,0;代码段代码段mov eax,56hmov eax,
23、56h;假设一个数据假设一个数据test eax,02htest eax,02h;测试测试D1D1位位(D1(D11 1,其他位为,其他位为0)0)jzjz nom nom;D1;D10 0条件成立,转移条件成立,转移mov eax,offset yes_msgmov eax,offset yes_msg;D1;D11 1,显示准备好,显示准备好jmp jmp donedone;跳转过另一个分支体!跳转过另一个分支体!nom:nom:mov eax,offset no_msgmov eax,offset no_msg;显示没有准备好显示没有准备好done:done:call dispmsgca
24、ll dispmsg微机原理与接口技术第5版机械工业出版社例例4-34-3位测试程序位测试程序2 2;数据段数据段no_msgno_msgbyte Not Ready!,0byte Not Ready!,0yes_msgyes_msgbyte Ready to Go!,0byte Ready to Go!,0;代码段代码段mov eax,56hmov eax,56h;假设一个数据假设一个数据test eax,02htest eax,02h;测试测试D1D1位位(D1(D11 1,其他位为,其他位为0)0)jnzjnz yesm yesm;D1;D11 1条件成立,转移条件成立,转移mov ea
25、x,offset no_msgmov eax,offset no_msg;D1;D10 0,显示没有准备好,显示没有准备好jmpjmp done done;跳转过另一个分支体!跳转过另一个分支体!yesm:yesm:mov eax,offset yes_msgmov eax,offset yes_msg;显示准备好显示准备好done:done:call dispmsgcall dispmsg微机原理与接口技术第5版机械工业出版社例例4-44-4奇校验程序奇校验程序call readccall readc;键盘输入,键盘输入,ALAL返回值返回值call dispcrlfcall dispcrl
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 32 微机 原理 接口 技术 钱晓捷 课件 04
1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前自行私信或留言给上传者【w****g】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时私信或留言给本站上传会员【w****g】,需本站解决可联系【 微信客服】、【 QQ客服】,若有其他问题请点击或扫码反馈【 服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【 版权申诉】”(推荐),意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:4008-655-100;投诉/维权电话:4009-655-100。