32位微机原理与接口技术钱晓捷课件04.ppt
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 32 微机 原理 接口 技术 钱晓捷 课件 04
- 资源描述:
-
钱晓捷,微机原理与接口技术钱晓捷,微机原理与接口技术基于基于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 分支程序结构分支程序结构改改变变程程序序执执行行顺顺序序、形形成成分分支支、循循环环、调调用用等程序结构是很常见的程序设计问题等程序结构是很常见的程序设计问题高高级级语语言言采采用用IFIF等等语语句句表表达达条条件件,并并根根据据条条件是否成立转向不同的程序分支件是否成立转向不同的程序分支汇编语言需要汇编语言需要首先利用比较首先利用比较CMPCMP、测试、测试TESTTEST、加减、加减运算、逻辑运算等影响状态标志的运算、逻辑运算等影响状态标志的指令形成条件指令形成条件然后利用条件转移指令判断由标志然后利用条件转移指令判断由标志表达的条件表达的条件,并根据标志状态控制程序并根据标志状态控制程序转移到不同的程序段转移到不同的程序段微机原理与接口技术第5版机械工业出版社4.1.1 4.1.1 无条件转移指令无条件转移指令程序代码在代码段程序代码在代码段CSCS:指明代码段在主存中的段基地址:指明代码段在主存中的段基地址EIPEIP:给出将要执行指令的偏移地址:给出将要执行指令的偏移地址程序顺序执行,处理器自动增量程序顺序执行,处理器自动增量EIPEIP程序控制转移,程序控制转移,EIPEIP随之改变随之改变程序转移到另外的代码段,程序转移到另外的代码段,EIPEIP和和CSCS都改变都改变控控制制转转移移类类指指令令:改改变变EIPEIP(有有些些也也改改变变CSCS),即即改改变变程程序序执执行行顺顺序序(实实现现程程序序控控制制转移)的指令转移)的指令本章学习本章学习控制转移类指令控制转移类指令微机原理与接口技术第5版机械工业出版社1.1.转移范围转移范围段内转移段内转移在当前代码段范围内的程序转移在当前代码段范围内的程序转移不需更改不需更改CSCS,只要改变只要改变EIPEIP(偏移地址)(偏移地址)近近转转移移(NearNear):3232位位近近转转移移NEAR32NEAR32,1616位位近近转移转移NEAR16NEAR16短转移(短转移(ShortShort):转移范围在:转移范围在127127-128-128字节字节段间转移段间转移从当前代码段跳转到另一个代码段从当前代码段跳转到另一个代码段需要更改需要更改CSCS(段地址)和(段地址)和EIPEIP(偏移地址)(偏移地址)远远转转移移(FarFar):4848位位远远转转移移FAR32FAR32,3232位位远远转转移移FAR16FAR16微机原理与接口技术第5版机械工业出版社2.2.指令寻址方式指令寻址方式相对寻址方式相对寻址方式提供目标地址相对于当前指令指针提供目标地址相对于当前指令指针EIPEIP的位移量的位移量目标地址(转移后的目标地址(转移后的EIPEIP)当前)当前EIPEIP位移量位移量相对寻址都是段内转移,最常用、最灵活相对寻址都是段内转移,最常用、最灵活直接寻址方式直接寻址方式直接提供目标地址直接提供目标地址目标地址(转移后的目标地址(转移后的CSCS和和EIPEIP)指令操作数)指令操作数间接寻址方式间接寻址方式指示寄存器或存储单元指示寄存器或存储单元目标地址来自寄存器或存储单元、间接获得目标地址来自寄存器或存储单元、间接获得寄存器间接寻址:用寄存器保存目标地址寄存器间接寻址:用寄存器保存目标地址存储器间接寻址:用存储单元保存目标地址存储器间接寻址:用存储单元保存目标地址目标地址目标地址目的地址目的地址转移地址转移地址微机原理与接口技术第5版机械工业出版社3.JMP3.JMP指令指令无条件转移:程序无条件改变执行顺序无条件转移:程序无条件改变执行顺序JMPJMP指令相当于高级语言的指令相当于高级语言的gotogoto语句语句JMP labelJMP label;程序转向程序转向labellabel标号指定的地址标号指定的地址;段内相对寻址,段间直接寻址段内相对寻址,段间直接寻址JMP reg32/reg16JMP reg32/reg16;程序转向寄存器指定的地址程序转向寄存器指定的地址;寄存器间接寻址寄存器间接寻址JMP mem48/mem32/mem16JMP mem48/mem32/mem16;程序转向存储单元指定的地址程序转向存储单元指定的地址;存储器间接寻址存储器间接寻址微机原理与接口技术第5版机械工业出版社JMPJMP指令的指令的4 4种类型种类型1.1.段内转移、相对寻址段内转移、相对寻址标号指明目标地址,指令代码包含位移量标号指明目标地址,指令代码包含位移量2.2.段内转移、间接寻址段内转移、间接寻址通用寄存器或主存单元包含目标指令偏移地址通用寄存器或主存单元包含目标指令偏移地址3.3.段间转移、直接寻址段间转移、直接寻址标号包含目标指令的段地址和偏移地址标号包含目标指令的段地址和偏移地址4.4.段间转移、间接寻址段间转移、间接寻址3232位段用位段用3 3字存储单元包含目标地址字存储单元包含目标地址1616位段用双字存储单元包含目标地址位段用双字存储单元包含目标地址MASM会根据存储模式等信息自动识别会根据存储模式等信息自动识别微机原理与接口技术第5版机械工业出版社例例4-14-1无条件转移程序无条件转移程序1 1;数据段数据段00000000000000000000000000000000nvarnvardword?dword?;代码段代码段0000000000000000EB 01EB 01jmp labl1jmp labl1;相对寻址相对寻址00000002000000029090nopnop0000000300000003E9 00000001E9 00000001labl1:labl1:jmpjmp near near ptrptr labl2 labl2;相对近转移相对近转移00000008000000089090nopnop0000000900000009B8 00000011 RB8 00000011 Rlabl2:labl2: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 00000000 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 条件转移指令条件转移指令根据指定的条件确定程序是否发生转移根据指定的条件确定程序是否发生转移JccJcc label label;条件满足,发生转移;否则,顺序执行下条指令条件满足,发生转移;否则,顺序执行下条指令LABELLABEL表示目标地址,采用段内相对寻址表示目标地址,采用段内相对寻址3232位位IA-32IA-32处理器:达到处理器:达到3232位的全偏移量位的全偏移量1616位位80 x8680 x86处理器:处理器:-128-128+127+127间的短转移间的短转移条件转移指令不影响标志,但要利用标志条件转移指令不影响标志,但要利用标志cccc表示利用标志判断的条件,表示利用标志判断的条件,1616种、两类种、两类单个标志状态作为条件单个标志状态作为条件两数大小关系作为条件两数大小关系作为条件微机原理与接口技术第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/JPEJP/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=0Jump 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=1Jump 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 Less/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(JNE):利用零位标志:利用零位标志ZFZF判断结果是零(相等)还是非零(不等)判断结果是零(相等)还是非零(不等)JSJS和和JNSJNS:利用符号标志:利用符号标志SFSF判断结果是负还是正判断结果是负还是正JOJO和和JNOJNO:利用溢出标志:利用溢出标志OFOF判断结果是溢出还是没有溢出判断结果是溢出还是没有溢出JP(JPE)JP(JPE)和和JNP(JPO)JNP(JPO):利用奇偶标志:利用奇偶标志PFPF判断结果低字节判断结果低字节“1”1”的个数是偶数还是奇数的个数是偶数还是奇数JCJC和和JNCJNC:利用进位标志:利用进位标志CFCF判断结果是有进位(为判断结果是有进位(为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运行结果微机原理与接口技术第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操作操作goeven: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,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,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 dispmsgcall 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 eax,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 dispcrlf;回车换行(用于分隔)回车换行(用于分隔)call dispbbcall dispbb;以二进制形式显示数据以二进制形式显示数据call dispcrlfcall dispcrlf;回车换行(用于分隔)回车换行(用于分隔)and al,7fhand al,7fh;最高位置最高位置“0”0”、其他位不变、其他位不变;同时标志同时标志PFPF反映反映“1”1”的个数的个数jnp nextjnp next;个数为奇数,不需处理,转移个数为奇数,不需处理,转移or al,80hor al,80h;个数为偶数,最高位置个数为偶数,最高位置“1”1”、其他位不变、其他位不变 next:next:call dispbbcall dispbb;显示含校验位的数据显示含校验位的数据微机原理与接口技术第5版机械工业出版社2.2.两数大小关系作为条件的条件转移指令两数大小关系作为条件的条件转移指令无符号数用高(无符号数用高(AboveAbove)、低()、低(BelowBelow)低于(不高于等于):低于(不高于等于):JBJB(JNAEJNAE)不低于(高于等于):不低于(高于等于):JNBJNB(JAEJAE)低于等于(不高于):低于等于(不高于):JBEJBE(JNAJNA)不低于等于(高于):不低于等于(高于):JNBEJNBE(JAJA)有符号数用大(有符号数用大(GreaterGreater)、小()、小(LessLess)小于(不大于等于):小于(不大于等于):JLJL(JNGEJNGE)不小于(大于等于):不小于(大于等于):JNLJNL(JGEJGE)小于等于(不大于):小于等于(不大于):JLEJLE(JNGJNG)不小于等于(大于):不小于等于(大于):JNLEJNLE(JGJG)微机原理与接口技术第5版机械工业出版社例例4-54-5数据比较程序数据比较程序1 1;数据段数据段in_msg1in_msg1byte Enter a number:,0byte Enter a number:,0in_msg2in_msg2byte Enter another number:,0byte Enter another number:,0out_msg1out_msg1 byte Two numbers are equal:,0byte Two numbers are equal:,0out_msg2out_msg2 byte The less number is:,0byte The less number is:,0out_msg3out_msg3 byte 13,10,The greater number is:,0byte 13,10,The greater number is:,0;代码段代码段mov eax,offset mov eax,offset in_msg1in_msg1;提示输入提示输入call dispmsgcall dispmsgcall readsidcall readsid;输入第一个数据输入第一个数据mov ebx,eaxmov ebx,eax;保存到保存到EBXEBXmov eax,offset in_msg2mov eax,offset in_msg2;提示输入提示输入call dispmsgcall dispmsgcall readsidcall readsid;输入第二个数据输入第二个数据mov ecx,eaxmov ecx,eax;保存到保存到ECXECX微机原理与接口技术第5版机械工业出版社例例4-54-5数据比较程序数据比较程序2 2cmp ebx,ecxcmp ebx,ecx;二个数据进行比较二个数据进行比较jne nequaljne nequal;两数不相等,转移两数不相等,转移mov eax,offset out_msg1mov eax,offset out_msg1call dispmsgcall dispmsg;显示两数相等显示两数相等mov eax,ebxmov eax,ebxcall dispsidcall dispsid;显示相等的数据显示相等的数据jmp donejmp done;转移到结束转移到结束nequal:nequal:jl firstjl first;EBX;EBX较小,不需要交换,转移较小,不需要交换,转移xchg ebx,ecxxchg ebx,ecx;EBX;EBX保存较小数,保存较小数,ECXECX保存较大数保存较大数微机原理与接口技术第5版机械工业出版社例例4-54-5数据比较程序数据比较程序3 3first:first:mov eax,offset out_msg2mov eax,offset out_msg2;显示较小数显示较小数call dispmsgcall dispmsgmov eax,ebxmov eax,ebx;较小数在较小数在EBXEBX中中call dispsidcall dispsidmovmov eax,offseteax,offset out_msg3 out_msg3;显示较大数显示较大数call dispmsgcall dispmsgmovmov eax,ecxeax,ecx;较大数在较大数在ECXECX中中call call dispsiddispsid done:done:微机原理与接口技术第5版机械工业出版社4.1.3 4.1.3 单分支结构单分支结构只有一个分支的程序只有一个分支的程序类似高级语言的类似高级语言的IF-THENIF-THEN语句结构语句结构注意采用正确的条件转移指令注意采用正确的条件转移指令当条件满足(成立),发生转移,跳过分支体当条件满足(成立),发生转移,跳过分支体条件不满足,顺序向下执行分支体条件不满足,顺序向下执行分支体条件转移指令与高级语言的条件转移指令与高级语言的IFIF语句正好相反语句正好相反IFIF语句是条件成立,执行分支体语句是条件成立,执行分支体微机原理与接口技术第5版机械工业出版社例例4-64-6求绝对值程序求绝对值程序;代码段代码段call readsidcall readsid;输入一个有符号数,从输入一个有符号数,从EAXEAX返回值返回值cmp eax,0cmp eax,0;比较比较EAXEAX与与0 0jge nonnegjge nonneg;条件满足:条件满足:EAX0EAX0,转移,转移neg eaxneg eax;条件不满足:条件不满足:EAXEAX0 0,为负数,为负数;需求补得正值需求补得正值nonneg:nonneg:call dispuidcall dispuid;分支结束,显示结果分支结束,显示结果示意图示意图微机原理与接口技术第5版机械工业出版社例例4-74-7字母判断程序字母判断程序call readccall readc;输入一个字符,从输入一个字符,从ALAL返回值返回值cmp al,Acmp al,A;与大写字母与大写字母A A比较比较jb donejb done;比大写字母比大写字母A A小,不是大写字母,转移小,不是大写字母,转移cmp al,Zcmp al,Z;与大写字母与大写字母Z Z比较比较ja doneja done;比大写字母比大写字母Z Z大,不是大写字母,转移大,不是大写字母,转移or al,20hor al,20h;转换为小写转换为小写call dispcrlfcall dispcrlf;回车换行回车换行call dispccall dispc;显示小写字母显示小写字母done:done:微机原理与接口技术第5版机械工业出版社4.1.4 4.1.4 双分支结构双分支结构双双分分支支程程序序结结构构有有两两个个分分支支,条条件件为为真真执执行行一个分支;条件为假,执行另一个分支一个分支;条件为假,执行另一个分支相当于高级语言的相当于高级语言的IF-THEN-ELSEIF-THEN-ELSE语句语句顺顺序序执执行行的的分分支支体体1 1最最后后一一定定要要有有一一条条JMPJMP指指令跳过分支体令跳过分支体2 2JMPJMP指指令令必必不不可可少少,实实现现结结束束前前一一个个分分支支回回到到共共同的出口作用同的出口作用双分支结构有时可以改变为单分支结构双分支结构有时可以改变为单分支结构事事先先执执行行其其中中一一个个分分支支(选选择择出出现现概概率率较较高高的的分支)分支)微机原理与接口技术第5版机械工业出版社例例4-84-8显示数据最高位程序显示数据最高位程序1 1;数据段数据段dvardvardword 0bd630422hdword 0bd630422h;假设一个数据假设一个数据;代码段代码段mov ebx,dvarmov ebx,dvarshl ebx,1shl ebx,1;EBX;EBX最高位移入最高位移入CFCF标志标志jc onejc one;CF;CF1 1,即最高位为,即最高位为1 1,转移,转移mov al,0mov al,0;CF;CF0 0,即最高位为,即最高位为0 0:AL0AL0jmp twojmp two;一定要跳过另一个分支一定要跳过另一个分支one:one:mov al,1mov al,1;AL1;AL1two:two:call dispccall dispc;显示显示 示意图示意图双分支结构双分支结构微机原理与接口技术第5版机械工业出版社例例4-84-8显示数据最高位程序显示数据最高位程序2 2mov ebx,dvarmov ebx,dvarmov al,0mov al,0;假设最高位为假设最高位为0 0:AL0AL0shl ebx,1shl ebx,1;EBX;EBX最高位移入最高位移入CFCF标志标志jnc twojnc two;CF;CF0 0,即最高位为,即最高位为0 0,转移,转移mov al,1mov al,1;CF;CF1 1,即最高位为,即最高位为1 1,AL1AL1two:two:call dispccall dispc;显示显示单分支结构单分支结构微机原理与接口技术第5版机械工业出版社例例4-94-9有符号数运算溢出程序有符号数运算溢出程序;数据段数据段dvar1dvar1dword 1234567890dword 1234567890;假设两个数据假设两个数据dvar2dvar2dword-999999999dword-999999999dvar3dvar3dword?dword?okmsgokmsgbyte Correct!,0byte Correct!,0;正确信息正确信息errmsgerrmsgbyte ERROR!Overflow!,0byte ERROR!Overflow!,0;错误信息错误信息;代码段代码段mov eax,dvar1 mov eax,dvar1 sub eax,dvar2sub eax,dvar2;求差求差jo errorjo error;有溢出,转移有溢出,转移mov dvar3,eaxmov dvar3,eax;无溢出,保存差值无溢出,保存差值mov eax,offset okmsgmov eax,offset okmsg;显示正确显示正确jmp dispjmp disperror:error:mov eax,offset errmsgmov eax,offset errmsg;显示错误显示错误disp:disp:call dispmsgcall dispmsg 微机原理与接口技术第5版机械工业出版社4.2 4.2 循环程序结构循环程序结构三个部分组成:三个部分组成:循循环环初初始始为为开开始始循循环环准准备备必必要要的的条条件件,如如循环次数、循环体需要的初始值等;循环次数、循环体需要的初始值等;循循环环体体重重复复执执行行的的程程序序代代码码,其其中中包包括括对对循环条件的修改等;循环条件的修改等;循循环环控控制制判判断断循循环环条条件件是是否否成成立立,决决定定是是否继续循环否继续循环“先判断、后循环先判断、后循环”的循环程序结构的循环程序结构对应高级语言的对应高级语言的WHILEWHILE语句语句“先循环、后判断先循环、后判断”的循环程序结构的循环程序结构对应高级语言的对应高级语言的DODO语句语句示意图示意图微机原理与接口技术第5版机械工业出版社4.2.1 4.2.1 循环指令循环指令LOOP labelLOOP label;ECXECX;ECXECX1 1;若;若ECX0ECX0,循环到,循环到LABELLABEL;否则,顺序执行否则,顺序执行JECXZ labelJECXZ label;ECX;ECX0 0,转移;否则顺序执行,转移;否则顺序执行目标地址采用相对短转移目标地址采用相对短转移实地址存储模型使用实地址存储模型使用CXCX作为计数器作为计数器DEC ECXDEC ECXJNZ labelJNZ labelCMP ECX,0CMP ECX,0JZ labelJZ label微机原理与接口技术第5版机械工业出版社例例4-104-10数组求和程序数组求和程序mov ecx,lengthof arraymov ecx,lengthof array;ECX;ECX数组元素个数数组元素个数xor eax,eaxxor eax,eax;求和初值为求和初值为0 0mov ebx,eaxmov ebx,eax;数组指针为数组指针为0 0again:again:add add eax,arrayebxeax,arrayebx*(type array)*(type array);求和求和 inc ebxinc ebx;指向下一个数组元素指向下一个数组元素loop againloop againmov sum,eaxmov sum,eax;保存结果保存结果call dispsidcall dispsid;显示结果显示结果循环体循环体循环控制循环控制循环初始循环初始微机原理与接口技术第5版机械工业出版社4.2.2 4.2.2 计数控制循环计数控制循环通过次数控制循环通过次数控制循环利用利用LOOPLOOP指令属于计数控制指令属于计数控制常见是常见是“先循环、后判断先循环、后判断”循环结构循环结构计数可以减量进行,即减到计数可以减量进行,即减到0 0结束结束计数可以增量进行,即达到规定值结束计数可以增量进行,即达到规定值结束循环程序结构的关键是如何控制循环循环程序结构的关键是如何控制循环微机原理与接口技术第5版机械工业出版社例例4-114-11简单加密解密程序简单加密解密程序1 1;数据段数据段keykeybyte 234byte 234bufnumbufnum=255=255bufferbufferbyte bufnum+1 dup(0)byte bufnum+1 dup(0);定义键盘输入需要的缓冲区定义键盘输入需要的缓冲区msg1msg1byte Enter byte Enter messgemessge:,0:,0msg2msg2byte Encrypted message:,0byte Encrypted message:,0msg3msg3byte 13,10,Original byte 13,10,Original messgemessge:,0:,0;代码段代码段movmov eax,offseteax,offset msg1 msg1;提示输入字符串提示输入字符串call call dispmsgdispmsgmovmov eax,offseteax,offset buffer buffer;设置入口参数设置入口参数EAXEAXcall call readmsgreadmsg;调用输入字符串子程序调用输入字符串子程序push push eaxeax;字符个数保存进入堆栈字符个数保存进入堆栈微机原理与接口技术第5版机械工业出版社例例4-114-11简单加密解密程序简单加密解密程序2 2movmov ecx,eaxecx,eax;ECX;ECX实际输入的字符个数,作为循环的次数实际输入的字符个数,作为循环的次数xorxor ebx,ebxebx,ebx;EBX;EBX指向输入字符指向输入字符movmov al,keyal,key;AL;AL加密关键字加密关键字encrypt:encrypt:xorxor bufferebx,albufferebx,al;异或加密异或加密inc inc ebxebxdecdec ecxecx;等同于指令:等同于指令:loop encryptloop encryptjnzjnz encrypt encrypt;处理下一个字符处理下一个字符movmov eax,offseteax,offset msg2 msg2call call dispmsgdispmsgmovmov eax,offseteax,offset buffer buffer;显示密文显示密文call call dispmsgdispmsg微机原理与接口技术第5版机械工业出版社例例4-114-11简单加密解密程序简单加密解密程序3 3pop pop ecxecx;从堆栈弹出字符个数,作为循环的次数从堆栈弹出字符个数,作为循环的次数xorxor ebx,ebxebx,ebx;EBX;EBX指向输入字符指向输入字符movmov al,keyal,key;AL;AL解密关键字解密关键字decrypt:decrypt:xorxor bufferebx,albufferebx,al;异或解密异或解密inc inc ebxebxdecdec ecxecxjnzjnz decrypt decrypt;处理下一个字符处理下一个字符movmov eax,offseteax,offset msg3 msg3call call dispmsgdispmsgmovmov eax,offseteax,offset buffer buffer;显示明文显示明文call call dispmsgdispmsg示意图示意图微机原理与接口技术第5版机械工展开阅读全文
咨信网温馨提示:1、咨信平台为文档C2C交易模式,即用户上传的文档直接被用户下载,收益归上传人(含作者)所有;本站仅是提供信息存储空间和展示预览,仅对用户上传内容的表现方式做保护处理,对上载内容不做任何修改或编辑。所展示的作品文档包括内容和图片全部来源于网络用户和作者上传投稿,我们不确定上传用户享有完全著作权,根据《信息网络传播权保护条例》,如果侵犯了您的版权、权益或隐私,请联系我们,核实后会尽快下架及时删除,并可随时和客服了解处理情况,尊重保护知识产权我们共同努力。
2、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据,个别因单元格分列造成显示页码不一将协商解决,平台无法对文档的真实性、完整性、权威性、准确性、专业性及其观点立场做任何保证或承诺,下载前须认真查看,确认无误后再购买,务必慎重购买;若有违法违纪将进行移交司法处理,若涉侵权平台将进行基本处罚并下架。
3、本站所有内容均由用户上传,付费前请自行鉴别,如您付费,意味着您已接受本站规则且自行承担风险,本站不进行额外附加服务,虚拟产品一经售出概不退款(未进行购买下载可退充值款),文档一经付费(服务费)、不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
4、如你看到网页展示的文档有www.zixin.com.cn水印,是因预览和防盗链等技术需要对页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有水印标识(原文档上传前个别存留的除外),下载后原文更清晰;试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓;PPT和DOC文档可被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;PDF文档不管是原文档转换或图片扫描而得,本站不作要求视为允许,下载前可先查看【教您几个在下载文档中可以更好的避免被坑】。
5、本文档所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用;网站提供的党政主题相关内容(国旗、国徽、党徽--等)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
6、文档遇到问题,请及时联系平台进行协调解决,联系【微信客服】、【QQ客服】,若有其他问题请点击或扫码反馈【服务填表】;文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“【版权申诉】”,意见反馈和侵权处理邮箱:1219186828@qq.com;也可以拔打客服电话:0574-28810668;投诉电话:18658249818。




32位微机原理与接口技术钱晓捷课件04.ppt



实名认证













自信AI助手
















微信客服
客服QQ
发送邮件
意见反馈



链接地址:https://www.zixin.com.cn/doc/2652872.html