




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第3章 8086/8088微处理器及其系统1. 8086/8088微处理器结构微处理器功能结构寄存器结构(编程结构)2. 8086/8088存储器组织3. 8086/8088工作方式时序和引脚信号最大和最小模式4. 8086/8088寻址方式5. 8086/8088指令系统9/27/20221第3章 8086/8088微处理器及其系统92种基本指令,全部公开,六个功能组(六大类)一、数据传送(Data transfer)二、算术运算(Arithmetic)三、逻辑运算和移位指令(Logic & Shift)四、串操作(String manipulation)五、控制转移(Control Tra
2、nsfer)六、处理器控制(Processor Control)9/27/20222第3章 8086/8088微处理器及其系统8086/8088指令一览表逻辑移位/串处理指令类型助记符逻辑移位逻辑运算AND, TEST, OR, XOR, NOT移位运算SHL, SAL, SHR, SAR循环移位ROL, ROR, RCL, RCR串处理串操作MOVS, CMPS, SCAS, LODS,STOS重复控制REP, REPE/REPZ, REPNE/REPNZ9/27/202235. 8086/8088指令系统三、逻辑运算和移位指令(Logic & Shift)逻辑运算指令格式逻辑与 AND D
3、, S ; DESTSRCDEST逻辑或 OR D, S ; DEST SRC DEST 异 或 XOR D, S ; DEST SRC DEST 逻辑非 NOT D ; DEST DESTTEST TEST D,S ; DEST SRC1.两个操作数要满足类型组合:D (R或M), S(R/M/N)2.TEST不改变目标操作数内容, 其后常紧跟条件转移指令以实现判断分支, AND将运算结果送目标操作数3.逻辑操作按位进行9/27/202245. 8086/8088指令系统三、逻辑运算和移位指令(Logic & Shift)逻辑运算指令应用AND指令通常用于将操作数的某些位清0AND AL,0
4、FCH ;AL的低2位清0,其余保持不变TEST指令常用于“取出”操作数的某一位来进行判断TEST AL,20H ;取AL的D5位OR指令通常用于将操作数的某些位置1OR AL,80H ;AL的D7位置1, 其余位保持不变XOR指令通常用于将操作数的某些位取反XOR AL,0FH ;AL的低4位取反,高4位保持不变NOT指令按位取反MOV BX,8A51H ; (1000 1010 0101 0001)NOT BX ; BX=75AEH (0111 0101 1010 1110)Lets do it!9/27/202255. 8086/8088指令系统三、逻辑运算和移位指令(Logic & S
5、hift)移位指令格式:SAL/SAR/SHL/SHR OPRD,1 ;移1位SAL/SAR/SHL/SHR OPRD,CL ;移CL次why?9/27/202265. 8086/8088指令系统三、逻辑运算和移位指令(Logic & Shift)循环移位指令格式:ROL/ROR/RCL/RCR 操作数,1;移1位ROL/ROR/RCL/RCR 操作数,CL;移位CL次9/27/202275. 8086/8088指令系统三、逻辑运算和移位指令(Logic & Shift)小结AND、TEST、OR、XOR指令对标志位的影响:固定使CF=OF=0;根据运算结果改变SF、ZF、PF。NOT指令形式
6、上只有一个操作数;不影响任何标志位。SAL、SAR、SHL、SHR指令的使用方法相同,对标志位的影响也相同:移出位给CF;根据结果改变SF、ZF、PF;当移位次数为1时,影响OF。ROL、ROR、RCL、RCR的使用方法相同,对标志位的影响相同:移出位给CF;当移位次数为1时,影响OF。SHR/SAR每移1位,可视为分别将无符号数和带符号数除以2;使用SHL/SAL每移1位,可视为将数值乘以2。9/27/202285. 8086/8088指令系统思考将两个非压缩BCD码(高位在BL,低位在AL)合并成压缩BCD码送AL。MOV CL, 4 ;将计数值送CLSHL BL, CL ;将高位移到BL
7、的高4位AND AL, 0FH ;清零AL高4位OR AL, BL ;合并AL和BL形成压缩BCD码分析下面的程序段所实现的功能(可以用别的指令实现吗) SHL AL,1 ; 将AL中数左移1位,得2X MOVBL,AL ; 2X保存在BL中 MOVCL,2 ; 移位次数置入CL中 SHL AL,CL ; 2X左移2位,得8X ADD AL,BL ; 2X加上8X,所以AL中为10XLets do it!9/27/202295. 8086/8088指令系统四、串操作(String manipulation)串内存中一段地址连续的字节或字存储单元。通常用于存放同一类数据。数据源:源串;数据结果:
8、目的串。串操作对串中各项进行操作(传送、比较、检索、装入、存储),也叫数据块操作。串操作指令是86/88实现内存之间数据传送的一组指令。串操作重复前缀加在串操作指令之前,根据不同条件判断是否重复执行串操作。可以实现对整个串的同一种操作。9/27/2022105. 8086/8088指令系统四、串操作(String manipulation)在同一个段内实现字符串传送时,应该设置DS和ES为同一数值,仍由SI和DI分别指出源串操作数和目的操作数的偏移地址。 串操作指令是唯一的一组源操作数和目的操作数都在存储单元的指令。方向标志DF决定指针的修改方向 DF =0,指针加;DF =1,指针减。串元素
9、的类型决定修改量字节串,指针加减1;字串,指针加/减2。加有重复前缀时,固定使用CX计录并修改重复次数,再根据CX值及标志位ZF判断是否重复进行串操作。前缀本身不影响任何标志位。DS:SI默认的源串指针,可段超越ES:DI固定的目标串指针,不允许段超越DFCX9/27/2022115. 8086/8088指令系统四、串操作(String manipulation) 串传送 MOVS(Move string)MOVS D,S ;(ES):(DI)(DS):(SI)MOVSB (字节) ;(SI)(SI)1,(DI)(DI)1, MOVSW (字) ;(SI)(SI)2,(DI)(DI)2, RE
10、P CLD, DF=0, SI/DI增加; STD, DF=1, SI/DI递减 MOV单指令不能完成存储单元之间的数据传送;MOVS指令就是为解决 存储单元之间数据传送而设置的MOVSB/MOVSW隐含了源、目的操作数9/27/2022125. 8086/8088指令系统思考:重叠串操作 34H,0F2H,1CH,89H,76H,6BHLets do it!SIDISTD; 设DF=16B76891CF2346B76891CF234XXMOV CX,5 ;串操作次数MOV SI, 1005MOV DI, 1007REP MOVSB4000H:1000H4000H:1006H4000H:100
11、4H4000H:1005H4000H:1003H4000H:1004H4000H:1002H4000H:1003H4000H:1001H4000H:1000H4000H:1002H9/27/2022135. 8086/8088指令系统四、串操作(String manipulation)CMPS(Compare string ) 串比较指令CMPS D,S ;(ES):(DI) - (DS):(SI),结果不存,置标志CMPSB ; (字节) (SI) (SI)1,(DI)(DI) 1CMPSW ; (字)(SI) (SI)2,(DI) (DI)2 与前缀REPZ连用两数相减,只影响标志,不影响
12、操作数,其它操作规定与MOVS同。SCAS (Scan string ) 串扫描、搜索指令SCAS SCASB ;(字节)(AL) (ES):(DI),(DI)(DI)1SCASW ;(字)(AX) (ES):(DI),(DI) (DI)2与前缀REPNE连用(DI)字符串起始地址,(AL)或(AX) 关键字两数相减, 只影响标志, 不影响操作数, 其它特性同MOVS9/27/2022145. 8086/8088指令系统四、串操作(String manipulation)LODS(Load from string)读串指令LODS ;(字节)(AL) (DS):(SI), (SI) (SI)
13、1 ;(字) (AX) (DS):(SI),(SI) (SI)2LODS B ;(字节)(AL) (DS):(SI),(SI) (SI) 1LODS W ;(字) (AX) (DS):(SI),(SI) (SI)2STOS(Store into string) 存入串指令STOS ;(字节) (ES):(DI) (AL) , (DI) (DI) 1 ;(字) (ES):(DI) (AX) , (DI) (DI) 2STOSB ;(字节) (ES):(DI) (AL) , (DI) (DI) 1STOSW ;(字) (ES):(DI) (AX) , (DI) (DI) 2与REP联用时,(CX)
14、缓冲区长度。用来建立一串相同的值,初始清零。9/27/2022155. 8086/8088指令系统四、串操作(String manipulation)PRACTICE AND PROGRESSSTOSB / LODSBStore a to 15 memory cells, with start address ES:DI 3000H:1230H, then load character again. CMPSB / SCASBCompare string aaA with aaa, check flag bit CFSearch character a with china, check fl
15、ag bit CFLets debugging !9/27/202216第3章 8086/8088微处理器及其系统8086/8088指令一览表控制转移指令类型助记符控制转移无条件转移JMP条件转移JE/JZ, JNE/JNZ, JS, JNS, JO, JNOJP, JNP, JC, JNC, JCXZJA/JNBE, JAE/JNB, JB/JNAE JBE/JNAJG/JNLE, JGE/JNL, JL/JNGE, JLE/JNG循环控制LOOP, LOOPE/LOOPZ, LOOPNE/LOOPNZ过程调用CALL, RET中断指令INT, INTO, IRET处理机控制CLC, STC
16、, CMC,CLD, STD, CLI, STINOP, HLT, WAIT, ESC, LOCK9/27/2022175. 8086/8088指令系统五、控制转移指令概述控制转移指令对IP(或CS:IP)进行强制性修改,只有一个操作数,通过该操作数给出目标地址新的IP(或CS:IP)段内转移(CS不变,IP改变)( IP)(IP)当前+ OPR(DISP)短转移(short)相对偏移量为1字节, 取值范围-128 +127,操作数为8位(正值向后跳转,负值向前跳转)近转移(near)相对偏移量为1个字, 取值范围-32768 +32767, 操作数为16位(正值向后跳转,负值向前跳转)段间转
17、移(CS改变,IP改变)远转移(far)目标地址与正常顺序IP值不在同一个代码段内9/27/2022185. 8086/8088指令系统五、控制转移指令-无条件转移JMP指令格式:JMP 目标标号(操作数/目标地址)操作数(目标地址)的给出方式:段内直接给出:JMP (NEAR/SHORT) SUM0(IP)=(IP)+SUM0段内间接给出:JMP AX / JMP WORD PTR BX(IP)= (AX) / (IP)=(PA)= (DS)X10H+(BX)段间直接给出:JMP FAR PTR BRCH / JMP 2101H:1234H(CS)= BRCH 段地址, (IP)= BARC
18、H 偏移地址段间间接给出:JMP DWORD PTR DI+1200H PA=(DS)X10H+(DI)+200H(IP)=(PA),(PA+1) (CS)=(PA+2), (PA+3)9/27/2022195. 8086/8088指令系统五、控制转移指令-条件转移条件转移指令的特点格式: 指令助记符 目标地址OPR (短标号)功能:根据当前各标志位状态进行判断,如果满足指令所指定的条件,则转移至目标地址处;否则顺序执行。转移范围:只有短转移,即相对位移量是一个8位的带符号数(128127)。寻址方式:(IP)(IP)当前+ OPR(D8)正值表示向后跳转,负值表示向前跳转(条件转移指令为两字
19、节长度,一字节为指令功能码,一字节指令为一个字节的相对跳转地址偏移量)9/27/2022205. 8086/8088指令系统五、控制转移指令-条件转移助记符转移条件助记符转移条件JZ/JEZF=1JNZ/JNEZF=0JSSF=1JNSSF=0JOOF=1JNOOF=0JP/JPEPF=1JNP/JPOPF=0JCCF=1JNCCF=0助记符转移条件JCXZCX=0以单个状态标志作为转移条件以CX的值为0作为转移条件9/27/2022215. 8086/8088指令系统助记符转移条件JA/JNBECFZF=0高于/不低于等于JAE/JNB/JNCCF=0 高于或等于/不低于/无进位JB/JNA
20、E/JCCF=1 低于/不高于等于/有进位JBE/JNACFZF=1 低于或等于/不高于助记符转移条件JG/JNLE(SFOF)ZF=0大于/不小于等于JGE/JNL SFOF=0 大于或等于/不小于JL/JNGE SFOF=1 小于/不大于等于JLE/JNG(SFOF)ZF=1小于或等于/不大于以两个带符号数比较的结果作为转移条件以两个无符号数比较的结果作为转移条件9/27/2022225. 8086/8088指令系统五、控制转移指令-循环控制指令格式: LOOP 短标号 功能:根据CX的值和ZF标志判断是否转移。寻址方式:相对寻址,只能实现短转移。指令本身不影响ZF!助记符转移条件不转移条
21、件LOOPCX0CX=0LOOPZCX0且ZF=1 (相等)CX=0或ZF=0(不等)LOOPNZCX0且ZF=0 (不等)CX=0或ZF=1 (相等)9/27/2022235. 8086/8088指令系统五、控制转移指令-过程调用CALL指令执行的操作格式:CALL 过程名(即操作数/目标地址)与JMP的不同之处:有对应的返回指令;必须保存断点,执行过程与堆栈有关。9/27/2022245. 8086/8088指令系统五、控制转移指令-过程调用过程返回指令RET格式: RET RET n功能:从栈顶弹出1个字(段内返回)或2个字(段间返回),作为返回地址(即断点)给IP或CS:IP;SP相应加2或加4。指令后跟8位立即数,用以在恢复断点后,在现行SP值上再加此数,以释放相应数目的堆栈空间。位于被调过程的末尾;必须与CALL指令成对使用!根据对应的CALL指令转移类型,自动确定段内/段间返回。9/27/2022255. 8086/8088指令系统五、控制
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 供应商入围资格预审文件须知3篇
- 延期合同补充条款3篇
- 后浇带施工合同项目经理职责3篇
- 工程用土方运输规定样本
- 发包方提前终止合同3篇
- 合伙协议合同合作方合作理念3篇
- 健身中心交接协议书详细版3篇
- 垃圾场施工宣传合同3篇
- 产品委托生产合同样本3篇
- 煤气化过程中的合成气质量分析与调控方法考核试卷
- 三级电子商务师测试试题库与答案
- 2023年高考历史真题新高考福建卷试题含答案解析
- DZ/T 0430-2023 固体矿产资源储量核实报告编写规范(正式版)
- 【农业技术推广探究文献综述2300字】
- 2024年中铁集装箱运输有限责任公司招聘笔试参考题库附带答案详解
- 新生儿肠胀气课件
- 物业管理中英文对照外文翻译文献
- 专题17浮力与液面升降问题(选择、填空题)- 中考物理一轮复习专题练习(解析版)
- 《麻醉后苏醒延迟》课件
- 《物业客服培训》课件
- 06J403-1 楼梯、栏杆、栏板图集
评论
0/150
提交评论