书签 分享 收藏 举报 版权申诉 / 149
上传文档赚钱

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

  • 上传人(卖家):三亚风情
  • 文档编号:2604829
  • 上传时间:2022-05-10
  • 格式:PPT
  • 页数:149
  • 大小:770KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《32位微机原理与接口技术钱晓捷课件04.ppt》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    32 微机 原理 接口 技术 钱晓捷 课件 04
    资源描述:

    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 l

    7、abel; ;程序转向程序转向labellabel标号指定的地址标号指定的地址; ;段内相对寻址,段间直接寻址段内相对寻址,段间直接寻址JMP reg32/reg16JMP reg32/reg16; ;程序转向寄存器指定的地址程序转向寄存器指定的地址; ;寄存器间接寻址寄存器间接寻址JMP mem48/mem32/mem16JMP mem48/mem32/mem16; ;程序转向存储单元指定的地址程序转向存储单元指定的地址; ;存储器间接寻址存储器间接寻址微机原理与接口技术第5版机械工业出版社JMPJMP指令的指令的4 4种类型种类型1. 1. 段内转移、相对寻址段内转移、相对寻址标号指明目标

    8、地址,指令代码包含位移量标号指明目标地址,指令代码包含位移量2. 2. 段内转移、间接寻址段内转移、间接寻址通用寄存器或主存单元包含目标指令偏移地址通用寄存器或主存单元包含目标指令偏移地址3. 3. 段间转移、直接寻址段间转移、直接寻址标号包含目标指令的段地址和偏移地址标号包含目标指令的段地址和偏移地址4. 4. 段间转移、间接寻址段间转移、间接寻址3232位段用位段用3 3字存储单元包含目标地址字存储单元包含目标地址1616位段用双字存储单元包含目标地址位段用双字存储单元包含目标地址MASM会根据存储模式等信息自动识别会根据存储模式等信息自动识别微机原理与接口技术第5版机械工业出版社例例4-

    9、14-1无条件转移程序无条件转移程序1 1; ; 数据段数据段00000000000000000000000000000000nvarnvardword ?dword ? ; ; 代码段代码段0000000000000000EB 01EB 01jmp labl1jmp labl1; ; 相对寻址相对寻址00000002000000029090nopnop0000000300000003E9 00000001E9 00000001labl1:labl1:jmpjmp near near ptrptr labl2 labl2; ; 相对近转移相对近转移00000008000000089090nop

    10、nop0000000900000009B8 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 labl4m

    11、ov 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 ; ;数据的寄存器间接寻址数据的寄存器间接寻址数据的存

    12、储器直接寻址数据的存储器直接寻址微机原理与接口技术第5版机械工业出版社4.1.2 4.1.2 条件转移指令条件转移指令根据指定的条件确定程序是否发生转移根据指定的条件确定程序是否发生转移JccJcc label label; ;条件满足,发生转移;否则,顺序执行下条指令条件满足,发生转移;否则,顺序执行下条指令LABELLABEL表示目标地址,采用段内相对寻址表示目标地址,采用段内相对寻址3232位位IA-32IA-32处理器:达到处理器:达到3232位的全偏移量位的全偏移量1616位位80 x8680 x86处理器:处理器:-128-128+127+127间的短转移间的短转移条件转移指令不影

    13、响标志,但要利用标志条件转移指令不影响标志,但要利用标志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

    14、 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

    15、 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 Equ

    16、alJump 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/

    17、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版机械工业

    18、出版社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”

    19、的个数是偶数还是奇数的个数是偶数还是奇数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; ; 否则余数为否则余数

    20、为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 go

    21、even; ; 余数为余数为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 e

    22、ax,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

    23、 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

    24、; 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 R

    25、eady 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

    26、_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 ; ; 回车换行(用于分隔)回车换行(用

    27、于分隔)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. 两数大小关系作为条件的条件转移指令两数大小关系作为条件的条件

    28、转移指令无符号数用高(无符号数用高(AboveAbove)、低()、低(BelowBelow)低于(不高于等于):低于(不高于等于):JBJB(JNAEJNAE)不低于(高于等于):不低于(高于等于):JNBJNB(JAEJAE)低于等于(不高于):低于等于(不高于):JBEJBE(JNAJNA)不低于等于(高于):不低于等于(高于):JNBEJNBE(JAJA)有符号数用大(有符号数用大(GreaterGreater)、小()、小(LessLess)小于(不大于等于):小于(不大于等于):JLJL(JNGEJNGE)不小于(大于等于):不小于(大于等于):JNLJNL(JGEJGE)小于等于

    29、(不大于):小于等于(不大于):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

    30、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;

    31、 ; 输入第一个数据输入第一个数据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; ; 二个数据进行比较二个数据进行比较j

    32、ne 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 e

    33、bx,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; ; 显示较

    34、大数显示较大数call dispmsgcall dispmsgmovmov eax,ecxeax,ecx; ; 较大数在较大数在ECXECX中中call call dispsiddispsid done:done:微机原理与接口技术第5版机械工业出版社4.1.3 4.1.3 单分支结构单分支结构只有一个分支的程序只有一个分支的程序类似高级语言的类似高级语言的IF-THENIF-THEN语句结构语句结构注意采用正确的条件转移指令注意采用正确的条件转移指令当条件满足(成立),发生转移,跳过分支体当条件满足(成立),发生转移,跳过分支体条件不满足,顺序向下执行分支体条件不满足,顺序向下执行分支体条件

    35、转移指令与高级语言的条件转移指令与高级语言的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

    36、0,为负数,为负数; ; 需求补得正值需求补得正值nonneg:nonneg:call dispuidcall dispuid; ;分支结束,显示结果分支结束,显示结果示意图示意图微机原理与接口技术第5版机械工业出版社单分支结构的流程图单分支结构的流程图返回返回neg eax微机原理与接口技术第5版机械工业出版社例例4-74-7字母判断程序字母判断程序call readccall readc; ; 输入一个字符,从输入一个字符,从ALAL返回值返回值cmp al,Acmp al,A; ; 与大写字母与大写字母A A比较比较jb donejb done; ; 比大写字母比大写字母A A小,不是大

    37、写字母,转移小,不是大写字母,转移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 双分支结构双分支结构双分支程序结构有两个分支,条件为真执行双分支程序结构有两个分支,条件

    38、为真执行一个分支;条件为假,执行另一个分支一个分支;条件为假,执行另一个分支相当于高级语言的相当于高级语言的IF-THEN-ELSEIF-THEN-ELSE语句语句顺序执行的分支体顺序执行的分支体1 1最后一定要有一条最后一定要有一条JMPJMP指指令跳过分支体令跳过分支体2 2JMPJMP指令必不可少,实现结束前一个分支回到共指令必不可少,实现结束前一个分支回到共同的出口作用同的出口作用双分支结构有时可以改变为单分支结构双分支结构有时可以改变为单分支结构事先执行其中一个分支(选择出现概率较高的事先执行其中一个分支(选择出现概率较高的分支)分支) 微机原理与接口技术第5版机械工业出版社例例4-

    39、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; ; 一定要跳过另一个分支一定要跳过另一

    40、个分支one:one:mov al,1mov al,1; AL1; AL1two:two:call dispccall dispc; ; 显示显示 示意图示意图双分支结构双分支结构微机原理与接口技术第5版机械工业出版社双分支结构的流程图双分支结构的流程图返回返回微机原理与接口技术第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 twojn

    41、c 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 -999999999dvar3dvar3d

    42、word ?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,offs

    43、et 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 循环程序结构循环程序结构三个部分组成:三个部分组成:循环初始循环初始为开始循环准备必要的条件,如为开始循环准备必要的条件,如循环次数、循环体需要的初始值等;循环次数、循环体需要的初始值等;循环体循环体重复执行的程序代码,其中包括

    44、对重复执行的程序代码,其中包括对循环条件的修改等;循环条件的修改等;循环控制循环控制判断循环条件是否成立,决定是判断循环条件是否成立,决定是否继续循环否继续循环“先判断、后循环先判断、后循环”的循环程序结构的循环程序结构对应高级语言的对应高级语言的WHILEWHILE语句语句“先循环、后判断先循环、后判断”的循环程序结构的循环程序结构对应高级语言的对应高级语言的DODO语句语句示意图示意图微机原理与接口技术第5版机械工业出版社循环程序结构的流程图循环程序结构的流程图返回返回微机原理与接口技术第5版机械工业出版社4.2.1 4.2.1 循环指令循环指令LOOP labelLOOP label;E

    45、CXECX;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 arraymo

    46、v 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 disps

    47、idcall dispsid; ; 显示结果显示结果循环体循环体循环控制循环控制循环初始循环初始微机原理与接口技术第5版机械工业出版社4.2.2 4.2.2 计数控制循环计数控制循环通过次数控制循环通过次数控制循环利用利用LOOPLOOP指令属于计数控制指令属于计数控制常见是常见是“先循环、后判断先循环、后判断”循环结构循环结构计数可以减量进行,即减到计数可以减量进行,即减到0 0结束结束计数可以增量进行,即达到规定值结束计数可以增量进行,即达到规定值结束循环程序结构的关键是如何控制循环循环程序结构的关键是如何控制循环微机原理与接口技术第5版机械工业出版社例例4-114-11简单加密解密程序简

    48、单加密解密程序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,Origina

    49、l 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简单加密解密程序

    50、简单加密解密程序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 en

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:32位微机原理与接口技术钱晓捷课件04.ppt
    链接地址:https://www.163wenku.com/p-2604829.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库