




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、3.3.4 串操作指令串内存中的字节或字类型的数据. 以字节(B字节串; 以字(W字串。字符串长度可达64K字节。串操作指令共有五种基本指令,可以对字符串进行传送、比较、搜索及存和取操作。 *待操作的数据串称为源串,目标地址称为目的串。两种情况:1、两个操作数均为串数据; MOVS 用于将一串从源移动到目的 CMPS 用于将两串逐一比较2、两个操作数一为AL/AX,另一为串 STOS 用于将AL/AX中字节/字填充到目的串 LODS 用于从源串中取字节/字到AL/AX SCAS 用于在目的串中查找特定的字节/字串操作指令的操作数(见表3.8)串操作指令的特点(约定)源串一般存放在数据段,偏移地
2、址由SI指定。逻辑地址为(DS:SI),允许段超越;目的串必须在附加段(ES),偏移地址由DI指定,逻辑地址为(ES:SI) ;每执行一次串指令,地址指针SI和DI将自动修改,修改方向由DF决定。 DF=0 增址 +1/+2; (CLD) DF=1 减址 - 1/- 2; (STD)数据块长度(字节或字数)放在CX中;可增加自动重复前缀以实现串操作的重复执行; 也可设计普通循环来实现串操作的一般流程取源串首/尾 地址取目的串首/尾地址设循环次数(串长度)设置方向DF 串操作指令修改串长度值传送完否?重复前缀重复次数隐含在CX寄存器中,重复过程中会自动修改CX值。REP 无条件重复REPE 相等
3、重复REPZ 为零重复REPNE 不相等重复REPNZ 不为零重复条件重复CX0且ZF=1CX0且ZF=0CX0 重复串操作指令串传送 MOVS串比较 CMPS串扫描 SCAS串读取 LODS串送存 STOS1、串传送指令MOVS 格式: 1) MOVS 目的串,原串 MOVSB ;字节串传送,传送一个8位的元素。 (ES:DI)(DS:SI) SISI1,DIDI1 MOVSW ;字串传送,传送一个16位的元素。 (ES:DI)(DS:SI) SISI2,DIDI2串传送指令常与无条件重复前缀REP连用可实现存储器到存储器的数据传送 LEA SI,DATA1 LEA DI,DATA2 MOV
4、 CX,200 CLD REP MOVSB 例:用串传送指令实现200个字节数据的串的传送: LEA SI,DATA1 LEA DI,DATA2 MOV CX,200 CLDAGAIN: MOVSB DEC CX JNZ AGAIN 先执行,再判断先判断,再执行REP MOVSB 执行的操作:若CX=0时,串指令执行完毕,否则执行CX=CX-1执行串指令MOVSB再返回执行循环过程为:先判断,再执行 CX=0 ,为循环结束的条件。2、串比较指令CMPS 格式: CMPSB CMPSW功能:由(DS:SI) (ES:DI)的差值 设置标志位 A,C,O,P,S,Z。 SISI1/2,DIDI1/
5、2指令的执行不改变操作数,仅影响标志位。串比较指令常与条件重复前缀REPE/REPNE连用。 LEA SI,DATA1 LEA DI,DATA2 MOV CX,200 CLD REPE CMPSB JNZ UNMAT MAT: UNMAT: 例:比较两个串是否相同 (两个串长度相同) LEA SI,DATA1 LEA DI,DATA2 MOV CX,200 CLDAGAIN: CMPSB JNE UNMAT DEC CX JNZ AGAIN MAT: UNMAT : REPE CMPSB 执行的操作:CX0且ZF=1(相同)时,继续执行否则结束执行串指令,跳出循环。CX=CX-1执行串指令CM
6、PS重复执行循环过程为:先判断,再执行循环结束的条件:CX=0或ZF=0(有不同) 。串比较指令例测试200个字节数据是否传送正确,如有错误,将第一个出现的错误位置记录下来,存到BX里LEA SI,MEM1LEA DI,MEM2MOV CX,200CLD XOR AL,ALREPE CMPSB JZ STOP DEC SI MOV BX,SISTOP: CX0,ZF=0 出现不等元素 CX=0 ,ZF=0 最后一个元素不等 CX=0, ZF=1 两串相等结束循环后,CX与ZF的状态3、串搜索指令SCAS格式: SCASB SCASW操作:与CMPS指令相似,只是源操作数是AX/AL 。 AL/
7、AX (ES:DI), DIDI1/2应用:常用于在目的串(指定存储区域)中寻找某个关键字。关键字存放在AX或AL中。指令常可与条件重复前缀REPE/REPNE连用程序段:START:LEASI , BLOCKLEADI , PDATALEABX, NDATAMOVCX , 100 LOP:LODSB;取源串的一个字节送ALTESTAL , 80H;测试符号位JNZMINUS;是负数,转移到MINUSSTOSB;正数存入正数区域JMPNEXTMINUS:XCHGBX, DI;交换正、负数指针STOSB;负数送入负数区XCHGBX, DI;恢复正、负数指针NEXT:DECCX;次数减1JNZLO
8、P;未处理完,继续HLT154、串读取指令LODS格式: LODSB LODSW操作:对字节: AL (DS:SI) 对 字: AX (DS:SI) SISI1/2用于将内存某个区域的数据串依次装入累加器,以便显示或输出到接口。LODS指令一般不加重复前缀。5、串送存指令STOS 格式: STOSB STOSW操作:对字节: AL (ES:DI) 对 字: AX (ES:DI) DIDI1/2可与重复前缀REP连用串送存指令例 将内存某个区域清零设计思想: 串首/尾地址送ES:DI串长度送CX置方向标志DF0送累加器AL重复执行串送存指令 REP STOS3.4.5 程序控制传送指令 转移指令
9、 JMP、JCC 循环控制 LOOP、LOOPZ、LOOPNZ 过程调用和返回 CALL、RET 中断指令 INT、IRET、INTO控制程序的执行顺序。实质为通过改变(IP)或(CS、IP)的值 来改变程序的执行顺序。 (一) 转移指令无条件转移指令JMP 无条件转移到目标地址,执行新的指令有条件转移指令JCC 在具备一定条件的情况下转移到目标地址转移指令的实质:改变IP(或CS、IP)的值。分为所有转移指令不会影响标志位。1、无条件转移指令JMP格式: JMP OPRD目标地址与JMP在同一代码段与JMP不在同一代码段代码段2代码段1段内转移段间转移段内转移指令中直接给出目标地址由指令中的
10、寄存器或存储器操作数指出目标地址段内直接寻址段内间接寻址转移的目标地址在当前代码段内段间转移转移的目标地址在另一代码段内段间直接寻址段间间接寻址由指令中的存储器操作数指出目标地址指令中直接给出目标地址段内直接寻址 格式:JMP Label JMP指令的下一条指令的偏移地址短转移:位移量在-128 +127 之间。 SHORT 近转移:位移量在-32768+32767 之间. NEAR PTR JMP Label代码段位移量功能:IP 当前IP + 位移量称为相对寻址标号 JMP SHORT L1 MOV AX , 0 MOV BX , 0 MOV CX , 0L1: MOV DX , CX J
11、MP NEAR PTR L2 .L2: MOV AL , 0例:例:段内间接寻址 格式:JMP r16 /mem16 功能:IP r16 /mem16例: JMP BX JMP WORD PTR BX+SI段间直接寻址由指令中的32位存储器操作数 给出目标地址。格式: JMP FAR PTR Label功能: IP Label的偏移地址 CS Label所在段的段基址段间间接寻址JMP DWORD PTR mem32远地址标号 JMP DWORD PTR BXXXHXXHXXHXXHBXIPCSJMP指令码代码段1代码段2数据段IP BX字CS BX+2字例:JMP FAR PTR L12 、
12、条件转移指令格式: JCC LABEL在满足一定条件下,程序转移到目标地址执行,不满足条件时,继续执行下一条指令。条件转移指令均为段内短转移,即转移范围为: -128-+127转移条件是判断标志位状态 5个可测试标志C、S、Z、O、P 转移条件单测5个标志: C、S、Z、O、PJC /JB/JNAE (低于)JNC/JNB/JAE (高于或等于)JZ/JEJNZ/JNEJSJNSJP/JPEJNP/JPOJOJNO组合测:无符号数的高低:组合测Z、C JA/JNBE ;高于转移 CZ=0 JNA/JBE ;低于或等于转移 CVZ=1 比较有符号数大小:组合测S、O、Z JG/JNLE ;大于转
13、移 SO=0 (Z=0) JGE/JNL ;大于或等于转移 SO=0 JL/JNGE ;小于转移 SO=0 且 Z=0 JLE/JNG ;小于或等于转移SO=1或Z=1测CX: JCXZ : 若CX=0,转移例1: ADD AL ,8 JNC L1 ADC AH ,0 L1: MOV BX , AX例2:CMP AL ,BL JA L1 ;(高于,转移) L1: 例3: MOV CX, 4 L1: ADD AL ,1 DEC CX JNE L1 MOV BL ,AL (二) 重复(循环)控制指令控制程序在以当前IP为中心的-128+127范围内循环执行;循环次数由CX寄存器指定。 LOOP L
14、OOPZ LOOPNZJCXZ无条件循环指令LOOP格式: LOOP Label循环条件: CX 0执行的操作: CX=CX-1 若CX0,就继续循环;否则,结束循环 。 例: MOV CX, 4 L1: ADD AL ,1 LOOP L1 MOV BL ,AL 相当于:DEC CX JNZ Label条件循环指令LOOPZ/LOOPNZ格式: LOOPZ LABEL LOOPE LABEL循环条件: CX 0且 ZF=1格式: LOOPNZ LABEL LOOPNE LABEL循环条件: CX 0 且 ZF=0JCXZ OPRDCX=0时转移到目标地址,否则顺序执行JCXZ的下一条指令。用在
15、循环之前,在循环次数为0时,直接跳过循环。 MOV CX ,BX JCXZ GONEAGAIN: LOOP AGAINGONE:例: MOV CX, 4 L1: ADD AL ,1 CMP AL,BL LOOPNZ L1 MOV BL ,AL (三)、 过程调用CALL和返回RET段内调用段间调用段内直接调用段内间接调用段间直接调用段间间接调用子过程调用的流程主程序中使用一条调用指令 CALL PROC先保护断点地址然后改变IP 或CSIP执行子过程,结束后要返回 原调用处(断点)继续执行 主程序。所以子过程要负责恢复 断点,用一条 RET 指令来恢复。在断点处继续执行主程序断点入口地址CAL
16、LRET主程序子过程CALL的功能: 将CALL指令的下一条指令(断点)的地址(偏移地址或段地址与偏移地址)压入堆栈 ; 将子过程的入口地址(子过程第1条指令的偏移地址)赋给 IP或CS/IP,即进入子程序。RET的功能 将断点地址由堆栈弹出到IP 或CS与 IP ,即返回原程序。注意CALL和RET指令对堆栈的影响段内调用子过程与原调用程序在同一代码段,在调用之前只需保护断点的偏移地址格式: CALL PROC 近过程名 CALL r16/mem16例:CALL NEAR PTR TIME ; 直接调用 CALL WORD PTR SI ;间接调用段间调用子过程与原调用程序不在同一代码段,在
17、调用之前需保护断点的段基地址和偏移地址。先将断点的CS压栈,再压入IP。格式: CALL PROC CALL mem32例: CALL FAR PTR TIME CALL DWORD PTR SICALL OPRD 返回指令 RETRET指令一般位于子程序的最后。段内调用的返回时是段内返回,段间调用的返回时是段间返回。格式1: RET 功能:从堆栈中弹出断点地址(POP IP,POP CS),返回原程序。 格式2:带弹出值的RET RET OPD ;OPD为16位无符号整数 执行的操作:恢复断点(POP IP, POP CS)SP=SP+OPD,修改SP指针,使栈定回复到参数入栈以前的位置。
18、使程序方便的废除若干执行CALL前入栈的参数。例:PUSH AXPUSH BXCALL PROC1RET 4中断中断的过程中断的来源:外部中断:外部设备发来的中断请求(中断申请信号) 。管理I/O设备与CPU之间的通信。内部中断:CPU执行某条指令引起的中断中断向量号 N(中断类型号、中断号) 0255 共256种中断类型中断向量(中断服务程序的入口地址):这是必须知道的关键信息。 4个字节,段基址:偏移量中断向量表:按中断向量号的顺序存放中断向量的表格。中断向量表的长度:256*4 B=1KB 8086中断表的地址:00000H 003FFHIP N*4CS N*4+24.中断指令有关中断的概念:详见教材第7章中断指令 INT n 格式: INT n说明: n4 =存放中断服务子程序入口地址的单元的地址。中断类型号n=0 255n 4 XXHXXHXXHXXH入口偏移地址赋给IP入口段地址赋给CS中断向量表中断指令操作:将FLAGS压入堆栈;禁止新的可屏蔽中断和单步中断 IF=TF=0断点保护:将INT指令的下一条指令的地址(32位)入栈;取中断服务程序入口地址。 执行中断程序 中断指令例执行IN
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年中级银行从业资格之中级风险管理练习题(一)及答案
- 2025长期租赁房屋合同
- 推动绿色教育理念的具体实践计划
- 2025弱电工程合同交底记录合同交底记录表
- 2025房屋租赁合同书正对承租方
- 代签融资合同标准文本
- 内江商场保安合同样本
- 代理进口贸易合同标准文本
- 云梯酒店合同标准文本
- 码头栏杆维护方案范本
- 2024年信息安全试题及答案
- 药物治疗管理MTM
- 广东省佛山市南海区2024-2025学年七年级外研版英语期中练习题(含答案)
- 2025年中国铁路投资集团有限公司招聘(28人)笔试参考题库附带答案详解
- 钢筋精算管理操作手册
- 2025年河南水利与环境职业学院单招职业技能测试题库审定版
- 近十年英语中考完形填空试题
- 教学课件:密织法律之网和强化法治之力
- 【人教】七下英语不规则动词表(背诵+默写)
- GB/T 45155-2024质量管理理解、评价和改进组织的质量文化指南
- 河南农商银行系统招聘笔试真题2024
评论
0/150
提交评论