- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
西安电子科技大学考研复试科目-微机原理和接口技术chap03_02
微机原理及接口技术
第3章 Intel处理器指令系统及汇编语言;布尔和比较指令
条件跳转
条件循环指令
条件结构;在汇编语言中如何写一条 IF 语句?
编译器是如何将嵌套的 IF 语句翻译成机器语言的?
如何设置和清除二进制数字中的单个位?
如何对数据进行简单的二进制加密?
如何通知计算机正在比较的是有符号数字还是无符号数字?;功能:在操作数的对应数据位之间执行布尔(位)“与”操作,并将结果保存在目的操作数中。
格式:
AND 目的操作数,源操作数
允许的操作数形式:
AND reg,reg
AND reg,mem
AND mem,reg
AND reg,imm
AND mem,imm
两个操作数可以是8、16 或 32位的,但它们的尺寸必须相同。;影响的标志位:
总是清除 OF 和 CF;
根据结果修改 SF、ZF、PF。
主要用途:对特定的位清“0”,同时保留其它的位。例:
mov al
and al;大写字母与小写字母的 ASCII 码之间的关???:
a:61h,A:41h,例:将字符转换位大写形式:;功能:按位取“或”。
格式:与 AND 指令相同。
主要用途:对特定的位置“1”,并保留其它位。例:
mov al
or al;【例】将0到9之间的整数转换成对应的ASCII码数字。方法:将位4和位5设置为1。
mov dl,5 ; 二进制值
or dl,30h ; 转换到 ASCII 码;功能:按位取“异或”。
格式:与 AND 及 OR 指令相同。
XOR指令的用途:
对某些位取反,同时不影响其它的位。
判断16位或32位值的奇偶性。
mov ax,64C1h ; 0110 0100 1100 0001
xor ah,al ; PE,奇偶标志被设置
简单数据加密。将某个操作数与同样的操作数执行两次异或运算后,其值保持不变。;功能:将操作数所有数据位取反,结果为反码。
格式:
NOT reg
NOT mem
例:
mov al
not al ; AL =
NOT指令不影响任何状态标志。;功能:两操作数按位“与”,根据结果设置标志位,但不回送结果(不修改目的操作数)。
格式:与 AND 指令相同。
用途:测试操作数的某一位是“0”还是“1”。
例子:测试多个位
想知道AL中第0位、第3位是否同时为“0”。
test al ;test bits 0 and 3
判断ZF是否等于1
影响的标志:清除 OF、CF;修改 SF、ZF、PF。;格式:与 AND 指令相同。
cmp 目的操作数,源操作数
功能:与减法指令一样执行减法操作,即 目的操作数-源操作数, 但不回送结果,只影响标志位。
影响的标志:根据相减结果修改 OF、SF、ZF、CF、AF、PF。
无符号操作数的比较:;有符号操作数的比较:;例:;条件分支的实现:
使用 CMP、AND、SUB 之类的指令修改 CPU 标志;
使用条件跳转指令测试标志值,以决定是否向新的分支转移。
例子:;功能:
条件标志为真:分支转移到新的目的标号处;
条件标志为假:执行紧跟在条件跳转指令之后的指令。
格式:
Jcond 目标地址例:
限制:
默认情况下,跳转目标应在当前过程之内。可声明全局变量(变量后面跟“::”)来突破这种限制。
跳转目标和跳转指令的下一条指令之间的偏移地址必须在-128到+127字节范围之内。;条件转移指令有很多(下面将要介绍30条)。一些指令是冗余的,仅是已存指令的别名。
按照以下条件可将跳转指令分成4组:
根据特定的标志值。
根据操作数之间是否相等,或根据(E)CX的值。
根据无符号操作数的比较结果。
根据有符号操作数的比较结果。;基于特定 CPU 标志值的跳转指令;依据相等比较的跳转指令;基于无符号整数比较结果的跳转指令;基于有符号整数比较结果的跳转指令;例:;例:8位内存操作数status中存放着同接口卡相连的外设的状态信息。
bit5为“1”时外设处于脱机状态,跳转到某标号处
bit0、bit1、bit4中任何一位为“1”时跳转到某标号处
bit2、bit3、bit7全部为“1”时跳转到某标号处;例:比较 V1、V2、V3 三个无符号变量的值,将最小值送入AX寄存器。;\Masm615\Examples\ch06\ArryScan.asm
过程(子程序)设计及布尔指令的综合应用:
字符串加密程序
\Masm615\Examples\ch06\Encrypt.asm;INCLUDE Irvine32.inc
.data
intArray
文档评论(0)