〔例4-2〕个数折半程序-3 理 mov eaX,887;假设一个数据 接 shr eax. 1 ;数据右移进行折半 技 术 adc eax. 0 第;余数=CF=1,进行加1操作 版;余数=CF=0,没有加1 消除分支 机 械 call di spuid 显示结果 出 mov eaX,888;假设一个数据 版 社 add eax,1 ;个数加1 rcr eax. 1 数据右移进行折半 call dispuid 显示结果 改进算法
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-2〕个数折半程序-3 mov eax,887 ; 假设一个数据 shr eax,1 ; 数据右移进行折半 adc eax,0 ; 余数=CF=1,进行加1操作 ;余数=CF=0,没有加1 call dispuid ; 显示结果 mov eax,888 ; 假设一个数据 add eax,1 ; 个数加1 rcr eax,1 ; 数据右移进行折半 call dispuid ; 显示结果 改进算法 消除分支
微机原理与接口 例4-3〕位测试程序-1 ;数据段 ti no_msg byte Not Ready !, 0 i yes_ msg byte'Ready to Go!',0 ;代码段 术·第4版机械工业出版社 moⅴeax,56h;假设一个数据 test eax,02h;测试D1位①D1=1,其他位为0 JZ nom ;D1=0条件成立,转移 mov eax, offset yesmsg ;D1=1,显示准备好 jmp done ;跳转过另一个分支体! nom moⅴeax, offset no msg;显示没有准备好 done: call dispmsg
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-3〕位测试程序-1 ; 数据段 no_msg byte 'Not Ready!',0 yes_msg byte 'Ready to Go!',0 ; 代码段 mov eax,56h ; 假设一个数据 test eax,02h ; 测试D1位(D1=1,其他位为0) jz nom ; D1=0条件成立,转移 mov eax,offset yes_msg ; D1=1,显示准备好 jmp done ; 跳转过另一个分支体! nom: mov eax,offset no_msg ; 显示没有准备好 done: call dispmsg
微机原理与接口 例4-3〕位测试程序-2 ;数据段 ti no_msg byte Not Ready !, 0 i yes_ msg byte'Ready to Go!',0 ;代码段 术·第4版机械工业出版社 moⅴeax,56h;假设一个数据 test eax,02h;测试D1位①D1=1,其他位为0 Jnz yes ;D1=1条件成立,转移 mov eax, offset no msg D1=0,显示没有准备好 jmp done ;跳转过另一个分支体! yesh moⅴeax, offset yes msg;显示准备好 done: call dispmsg
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-3〕位测试程序-2 ; 数据段 no_msg byte 'Not Ready!',0 yes_msg byte 'Ready to Go!',0 ; 代码段 mov eax,56h ; 假设一个数据 test eax,02h ; 测试D1位(D1=1,其他位为0) jnz yesm ; D1=1条件成立,转移 mov eax,offset no_msg ; D1=0,显示没有准备好 jmp done ; 跳转过另一个分支体! yesm: mov eax,offset yes_msg ; 显示准备好 done: call dispmsg
〔例4-4〕奇校验程序 call readc 微机原理与接口技术·第4版机械工业出版社 键盘输入,AL=返回值 call dispcrlf;回车换行(用于分隔) cal1 dispar;以二进制形式显示数据 call dispcrlf;回车换行(用于分隔) and al.7fh ;最高位置“0”、其他位不变 同时标志PF反映“1”的个数 Jnp next ;个数为奇数,不需处理,转移 or al. 80h ;个数为偶数,最髙位置“1”、其他位不变 next: call di spb;显示含校验位的数据
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 〔例4-4〕奇校验程序 call readc ; 键盘输入, AL=返回值 call dispcrlf ; 回车换行(用于分隔) call dispbb ; 以二进制形式显示数据 call dispcrlf ; 回车换行(用于分隔) and al,7fh ; 最高位置“0” 、其他位不变 ; 同时标志PF反映“1”的个数 jnp next ; 个数为奇数,不需处理,转移 or al,80h ; 个数为偶数,最高位置“1” 、其他位不变 next: call dispbb ; 显示含校验位的数据
概2两数大小关系作为条件的条件转移指令 理>无符号数用高( Above)、低( Below) 低于(不高于等于):JB(JNAE) 术 不低于(高于等于):JNB(JAE) 第·低于等于(不高于):JBE(JNA) 不低于等于(高于):JNBE(JA) >有符号数用大( Greater)、小(Less) 业·小于(不大于等于):J(JNGE) 版·不小于(大于等于):JNL(JGE) ●小于等于(不大于):JLE(JNG) 不小于等于(大于):JNE(JG)
微 机 原 理 与 接 口 技 术 · 第 4 版 机 械 工 业 出 版 社 2. 两数大小关系作为条件的条件转移指令 ➢无符号数用高(Above)、低(Below) 低于(不高于等于):JB(JNAE) 不低于(高于等于):JNB(JAE) 低于等于(不高于):JBE(JNA) 不低于等于(高于):JNBE(JA) ➢有符号数用大(Greater)、小(Less) 小于(不大于等于):JL(JNGE) 不小于(大于等于):JNL(JGE) 小于等于(不大于):JLE(JNG) 不小于等于(大于):JNLE(JG)