版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1三、逻辑运算和移位类逻辑运算逻辑运算移位操作移位操作与与或或非非异或异或非循环移位非循环移位循环移位循环移位逻辑移位逻辑移位算术移位算术移位不带进位位的移位不带进位位的移位带进位位的移位带进位位的移位21. 逻辑运算n逻辑运算指令对操作数的要求大多与逻辑运算指令对操作数的要求大多与MOV指指令相同。令相同。“非非”运算指令要求操作数不能是立运算指令要求操作数不能是立即数;即数;n除除“非非”运算指令外,其余指令的执行都会使运算指令外,其余指令的执行都会使标志位标志位OF=CF=03“与”指令n格式:格式: AND OPRD1,OPRD2n操作:操作: 两操作数按位相两操作数按位相“与与”,结
2、果送目标,结果送目标地地 址址4“与”指令的应用n实现两操作数相与的运算;实现两操作数相与的运算;n使目标操作数的某些位不变,某些位清零;使目标操作数的某些位不变,某些位清零;n在操作数不变的情况下使在操作数不变的情况下使CF和和OF清零。清零。5“与”指令的应用nAND BL,BXnAND AL,0FHnAND AX,AX6“或”运算指令n格式:格式: OR OPRD1,OPRD2n操作:操作: 两操作数按位相两操作数按位相“或或”,结果送目,结果送目标标 地址地址7“或”运算指令的应用n实现两操作数相实现两操作数相“或或”的运算;的运算;n使某些位不变,某些位置使某些位不变,某些位置“1”
3、n在不改变操作数的情况下使在不改变操作数的情况下使OF=CF=08应用程序例OR AX,DIOR CL,0FHOR AX,AX OR AL,AL JPE GOON OR AL,80H GOON:.偶校验转移偶校验转移(PF=1)将一个二将一个二进制数进制数9变变为字符为字符9?9“非”运算指令n格式:格式:NOT OPRDNOT OPRDn操作:操作数按位取反再送回原地址操作:操作数按位取反再送回原地址n指令中的操作数不能是立即数指令中的操作数不能是立即数n指令的执行对标志位无影响指令的执行对标志位无影响n例:例:NOT BYTE PTRBXNOT BYTE PTRBX10“异或”运算指令n格
4、式:格式: XOR OPRD1,OPRD2n操作:操作: 两操作数相两操作数相“异或异或”,结果送目标,结果送目标 地址地址n两操作数自身相异或,结果为零两操作数自身相异或,结果为零 XOR AX,AX11“测试”指令n格式:格式: TEST OPRD1,OPRD2n操作:操作: 执行执行“与与”运算,但运算的结果不运算,但运算的结果不 送回目标地址。送回目标地址。n应用:应用: 常用于测试某些位的状态常用于测试某些位的状态12“测试”指令例n从地址为从地址为38F0H的端口中读入一个字节数,的端口中读入一个字节数,如果该数的如果该数的bit1位为位为1,则可从,则可从38FEH端口端口将将D
5、ATA为首地址的一个字输出,否则就不为首地址的一个字输出,否则就不能进行数据传送。能进行数据传送。 编写相应的程序段。编写相应的程序段。13“测试”指令例开开 始始取待输出数的取待输出数的偏移地址偏移地址读入状态字读入状态字测试测试bit1位状态位状态Bit1=1?取输入口地址取输入口地址取输出口地址取输出口地址 输出一个字输出一个字NY14“测试”指令例 LEA SI,DATA MOV DX,38F0HWATT:IN AL,DX TEST AL,02H JZ WATT ;ZF=1转移转移 MOV DX,38FEH MOV AX,SI OUT DX,AX152. 移位指令n非循环移位指令非循环
6、移位指令n循环移位指令循环移位指令n注:注: 移动一位时可由指令直接给出;移动两位及以移动一位时可由指令直接给出;移动两位及以上,则移位次数由上,则移位次数由CL指定。指定。16非循环移位指令n逻辑左移逻辑左移n算术左移算术左移n逻辑右移逻辑右移n算术右移算术右移17算术左移和逻辑左移n格式:格式: SAL OPRD,1 SAL OPRD,CL SHL OPRD,1 SHL OPRD,CL有符号数有符号数无符号数无符号数逻辑逻辑左移左移移动一位后,若移动一位后,若CF与最高位不相等(移位前与最高位不相等(移位前后的符号位不相同),则后的符号位不相同),则OF=1;否则;否则OF=00CF18逻
7、辑右移n格式:格式: SHR OPRD,1 SHR OPRD,CL0CF无符号数无符号数的右移的右移仅移动一位时,若次高位与最高位不相等,则仅移动一位时,若次高位与最高位不相等,则OF=1;否则;否则OF=019算术右移n格式:格式: SAR OPRD,1 SAR OPRD,CLn 操作操作有符号数有符号数的右移的右移CF20非循环移位指令的应用n左移可实现乘法运算左移可实现乘法运算n右移可实现除法运算右移可实现除法运算 见见21循环移位指令不带进位位的循环移位不带进位位的循环移位 带进位位的循环移位带进位位的循环移位循环移位指令的格式、对操作数的要求与非循环移位指循环移位指令的格式、对操作数
8、的要求与非循环移位指令相同;影响标志位令相同;影响标志位CF和和OF。左移左移 ROL右移右移 ROR左移左移 RCL右移右移 RCR22不带进位位的循环移位CFCF23带进位位的循环移位CFCF24循环移位指令的应用n用于对某些位状态的测试;用于对某些位状态的测试;n高位部分和低位部分的交换;高位部分和低位部分的交换;n与非循环移位指令一起组成与非循环移位指令一起组成32位或更长字位或更长字长数的移位。长数的移位。25程序例 MOV SI,1000H MOV DI,3000H MOV CX,4BBB:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV D
9、I,AL INC DI MOV AL,BLPUSH CXMOV CL,4SHR AL,CLOR AL,30HMOV DI,ALINC DIINC SIPOP CXDEC CXJNZ BBBHLT程序程序功能?功能?26程序功能n将将1000H开始存放的开始存放的四个压缩四个压缩BCD码转换码转换为为ASCII码存放在码存放在3000H开始的单元中开始的单元中去。去。12H34H56H78H1000H3000H27四、串操作指令n针对数据块或字符串的操作;针对数据块或字符串的操作;n可实现存储器到存储器的数据传送;可实现存储器到存储器的数据传送;n待操作的数据串称为源串,目标地址称为待操作的数据
10、串称为源串,目标地址称为目标串。目标串。28串操作指令的特点n源串一般存放在数据段,偏移地址由源串一般存放在数据段,偏移地址由SI指定。指定。允许段重设;允许段重设;n目标串必须在附加段,偏移地址由目标串必须在附加段,偏移地址由DI指定;指定;n指令自动修改地址指针,修改方向由指令自动修改地址指针,修改方向由DF决定。决定。DF=0 增地址方向;增地址方向;DF=1 减地址方减地址方向;向;n数据块长度值由数据块长度值由CX指定;指定;n可增加自动重复前缀以实现自动修改可增加自动重复前缀以实现自动修改CX内容。内容。29串操作指令流程取源串地址取源串地址取目标串地址取目标串地址设串长度设串长度
11、传送一个字节或字传送一个字节或字修改地址指针修改地址指针修改串长度值修改串长度值传送完否?传送完否?30重复前缀nREP 无条件重复无条件重复nREPE 相等重复相等重复nREPZ 为零重复为零重复nREPNE 不相等重复不相等重复nREPNZ 不为零重复不为零重复条件重复条件重复CX0ZF=1CX0 ZF=0CX0 重复重复31串操作指令n串传送串传送 MOVSn串比较串比较 CMPSn串扫描串扫描 SCASn串装入串装入 LODSn串送存串送存 STOS32串传送指令n三种指令格式:三种指令格式: MOVS OPRD1,OPRD2 MOVSB MOVSW指令用于实现数据块的传送,常与无条件
12、重复前缀连用。指令用于实现数据块的传送,常与无条件重复前缀连用。33串传送指令n对比用对比用MOV指令和指令和MOVS指令实现将指令实现将200个字节数据从内存的一个区域送到另一个个字节数据从内存的一个区域送到另一个区域的程序段。区域的程序段。34串传送指令例n用串传送指令实现用串传送指令实现200个字节数据的传送:个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT35串比较指令n格式:格式: CMPS OPRD1,OPRD2 CMPSB CMPSWn该指令用于两个数据块或两个字符串之间的比较;该指令用于两个数据块或两个
13、字符串之间的比较;n常与条件重复前缀连用,指令的执行不改变操作数,常与条件重复前缀连用,指令的执行不改变操作数,仅影响标志位。仅影响标志位。36串比较指令例n例例3-42测试上例中测试上例中200个字节数据是否传送正个字节数据是否传送正确,并把第一个不相等的字符及其地址分别传确,并把第一个不相等的字符及其地址分别传给给AL,BX:LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD REPE CMPSB JZ STOP DEC SI MOV AL,SI MOV BX,SISTOP:HLT 37串扫描指令n格式:格式: SCAS OPRD SCASB SCASWn指令执行:指令
14、执行:AX(或(或AL)- OPRDn该指令常用于在某个区域中寻找关键字。该指令常用于在某个区域中寻找关键字。目目 标标操作数操作数38串装入指令n格式:格式: LODS OPRD LODSB LODSWn操作:操作:对字节:对字节: AL (DS:SI)AL (DS:SI) 对对 字:字: AX (DS:SI)AX (DS:SI) 修改源串地址指针修改源串地址指针 SISI源操作数源操作数39串装入指令n用于将内存某个区域的数据串依次装入累加器,用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。以便显示或输出到接口。nLODS指令不影响标志位,一般不加重复前缀。指令不影响标志位
15、,一般不加重复前缀。40串送存指令n格式:格式: STOS OPRD STOSB STOSWn操作:操作:对字节:对字节: AL (ES:DI)AL (ES:DI) 对对 字:字: AX (ES:DI)AX (ES:DI) 修改目的串地址指针修改目的串地址指针 DIDInSTOSB 指令对标志位没有影响。指令对标志位没有影响。目目 标标操作数操作数41串送存指令的应用n利用前缀利用前缀REP将内存某个区域清零将内存某个区域清零 区域首地址送区域首地址送ES:DI串长度送串长度送CX置方向标志置方向标志DF0送累加器送累加器AL执行串送存指令执行串送存指令开始开始42五、程序控制指令n转移指令转
16、移指令n循环控制循环控制n过程调用过程调用n中断控制中断控制431. 转移指令n无条件无条件转移指令转移指令 无条件转移到目标地址,执行新的指令无条件转移到目标地址,执行新的指令n有条件转移指令有条件转移指令 在具备一定条件的情况下转移到目标地址在具备一定条件的情况下转移到目标地址44转移指令的转移原理n通过通过修改修改代码段寄存器代码段寄存器CS及指令指针及指令指针IP的内容,使程序改变顺序执行的模式,转的内容,使程序改变顺序执行的模式,转到新的目标地址执行。到新的目标地址执行。45无条件转移指令n指令格式:指令格式: JMP OPRDn无条件转移的目标地址可以是在当前代码段,无条件转移的目
17、标地址可以是在当前代码段,也可在另一代码段(即无条件段内转移指令和也可在另一代码段(即无条件段内转移指令和段间转移指令)段间转移指令)46无条件转移指令n段内转移段内转移目标地址与目标地址与JMP指令在同一代码段指令在同一代码段n转移方式:转移方式: 直接转移直接转移指令中直接给出转移的目标地址指令中直接给出转移的目标地址 间接转移间接转移由指令中的寄存器或存储器间接给出转移由指令中的寄存器或存储器间接给出转移 目标地址目标地址47无条件段内转移n直接转移:直接转移: JMP Lablen转移目标地址:转移目标地址: 段基地址不变;段基地址不变; 偏移地址偏移地址=当前当前IP+位移量位移量J
18、MPLabel代代码码段段位移量位移量近地址标号近地址标号48无条件段内转移n间接转移:间接转移: JMP BX JMP WORD PTRBXJMP代代码码段段数数据据段段BX=1200XXHXXHIP指令码指令码49无条件段间转移n直接转移:直接转移: JMP FAR Lable远地址标号远地址标号JMPLabel代代码码段段1代代码码段段2XXHXXHXXHXXHIPCS50无条件段间转移n间接转移:间接转移: JMP DWORD PTRBXXXHXXHXXHXXHBXIPCSJMP指令码指令码代代码码段段1代代码码段段2数数据据段段51条件转移指令n在满足一定的条件下,程序转移到目标地址
19、继在满足一定的条件下,程序转移到目标地址继续执行;续执行;n在条件转移指令之前,应有一条为条件转移指在条件转移指令之前,应有一条为条件转移指令的执行形成条件的指令(如对标志位产生影令的执行形成条件的指令(如对标志位产生影响的指令);响的指令);n条件转移指令均为段内短转移,即转移范围为:条件转移指令均为段内短转移,即转移范围为: -128-+127p142522. 循环控制指令n控制程序在以当前控制程序在以当前IP为中心的为中心的-128+127范围范围内循环执行;内循环执行;n循环次数由循环次数由CX寄存器指定。寄存器指定。 循环指令循环指令无条件循环指令无条件循环指令LOOP 条件循环指令
20、条件循环指令LOOPZ LOOPNZ53无条件循环指令n格式:格式: LOOP Lablen循环条件:循环条件: CX 0nLOOP指令的操作相当于:指令的操作相当于: DEC CX JNZ Lable54条件循环指令n格式:格式: LOOPZ Lable LOOPE Lablen循环条件:循环条件: CX 0 ZF=1n格式:格式: LOOPNZ Lable LOOPNE Lablen循环条件:循环条件: CX 0 ZF=0553. 过程调用和返回段内调用段内调用段间调用段间调用段内直接调用段内直接调用段内间接调用段内间接调用段间直接调用段间直接调用段间间接调用段间间接调用56调用指令与转移
21、指令的比较n用于调用一个子过程;用于调用一个子过程;n调用前须保护断点地址;调用前须保护断点地址;n子过程执行结束后要返回原调用处继续执行子过程执行结束后要返回原调用处继续执行原程序原程序 断点恢复。断点恢复。57调用指令的执行过程n将调用指令的下一条指令的地址(断点)压入将调用指令的下一条指令的地址(断点)压入堆栈;堆栈;n获取子过程的入口地址(子过程第获取子过程的入口地址(子过程第1条指令的条指令的偏移地址);偏移地址);n(执行子过程,含相应参数的保存及恢复);(执行子过程,含相应参数的保存及恢复);n将断点偏移地址由堆栈弹出,返回原程序。将断点偏移地址由堆栈弹出,返回原程序。58段内调
22、用n子过程与原调用程序在同一代码段,在调子过程与原调用程序在同一代码段,在调用之前只需保护断点的偏移地址用之前只需保护断点的偏移地址n格式:格式: CALL NEAR PROC近过程名近过程名断点断点入口入口地址地址59段内调用例nCALL WORD PTRSInCALL BXnCALL TIMRE直接调用直接调用间接调用间接调用60段间调用n子过程与原调用程序不在同一代码段,子过程与原调用程序不在同一代码段,在调在调用之前需保护断点的段基地址和偏移地址。用之前需保护断点的段基地址和偏移地址。n断点地址的保护是先将断点的断点地址的保护是先将断点的CS压栈,再将压栈,再将IP压入堆栈。压入堆栈。n指令格式:指令格式: CALL FAR PROC61段间调用例nCALL FAR TIMREnCALL 8000H:2130HnCALL DWORD PTRSI62返回指令n从堆栈中弹出断点地址,返回原程序。从堆栈中弹出断点地址,返回原程序。n格式:格式: RETRETnRETRET指令一般位于子程序的最后。指令一般位于子程序的最后。634. 中断指令中断与过程调用:中断与过程调用:n中断是随机事件或异常事件引起,调用则是事中断是随机事件或异常事件引起,调用则是事先已在程序中安排好先已在程序中安排好 ; n响应中断请求不仅要保护断点地址,还要保护响应中断请求不仅要保护断点地址,还要保护FL
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 建材行业安全监督检查
- 2022年高考语文试卷(上海)(秋考)(解析卷)
- 农行聘用合同(2篇)
- DB33T 2188.8-2019 大型赛会志愿服务岗位规范 第8部分:媒体宣传志愿服务
- 2025届广东省广州市白云区达标名校中考三模生物试题含解析
- “十三五”重点项目-电池储能电站项目节能评估报告(节能专)
- 过氧化氢项目可行性研究报告范文
- 2025装修门店合同范本
- 2025房屋买卖合同范文
- 2024年度四川省公共营养师之四级营养师过关检测试卷A卷附答案
- 附件2:慢病管理中心评审实施细则2024年修订版
- 《ISO56001-2024创新管理体系 - 要求》之4:“4组织环境-确定创新管理体系的范围”解读和应用指导材料(雷泽佳编制-2024)
- 2024-2030年中国散热产业运营效益及投资前景预测报告
- 和父亲断绝联系协议书范本
- 2024时事政治考试题库(100题)
- 2024地理知识竞赛试题
- 《城市轨道交通工程盾构吊装技术规程》(征求意见稿)
- 【新教材】统编版(2024)七年级上册语文期末复习课件129张
- 钦州市浦北县2022-2023学年七年级上学期期末语文试题
- 古典时期钢琴演奏传统智慧树知到期末考试答案章节答案2024年星海音乐学院
- 乐山市市中区2022-2023学年七年级上学期期末地理试题【带答案】
评论
0/150
提交评论