微机原理与接口技术第3章节2章节

上传人:E**** 文档编号:91695841 上传时间:2019-07-01 格式:PPT 页数:92 大小:2.58MB
返回 下载 相关 举报
微机原理与接口技术第3章节2章节_第1页
第1页 / 共92页
微机原理与接口技术第3章节2章节_第2页
第2页 / 共92页
微机原理与接口技术第3章节2章节_第3页
第3页 / 共92页
微机原理与接口技术第3章节2章节_第4页
第4页 / 共92页
微机原理与接口技术第3章节2章节_第5页
第5页 / 共92页
点击查看更多>>
资源描述

《微机原理与接口技术第3章节2章节》由会员分享,可在线阅读,更多相关《微机原理与接口技术第3章节2章节(92页珍藏版)》请在金锄头文库上搜索。

1、1,8086指令系统(2),2,逻辑运算和移位指令,3,指令类型,逻辑运算 与,或,非,异或 移位操作 非循环移位,循环移位,4,一、逻辑运算,逻辑运算指令对 操作数的 要求大多与MOV指令 相同。 “非”运算指令 要求操作数 不能是立即数; 除“非”运算指令 外,其余指令的执行都会使标志位OF=CF=0,5,1.“与”指令:,格式: AND OPRD1,OPRD2 操作: 两操作数相“与”,结果送目标地址。,6,“与”指令的应用,实现两操作数按位相与的运算 AND BL,SI 使目标操作数的某些位不变,某些位清零 AND AL,0FH 在操作数不变的 情况下使CF和OF清零 AND AX,A

2、X,7,“与”指令应用例,从地址为3F8H 端口中读入一个字节数,如果该数 bit1位为1,则可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数据传送。 编写相应的程序段。,8,“与”指令应用例,开 始,取待输出数的偏移地址,读入状态字,测试bit1位状态,Bit1=1?,取输入口地址,取输出口地址,输出一个字,N,Y,9,“与”指令应用例,LEA SI,DATA MOV DX,3F8H WATT:IN AL,DX AND AL,02H JZ WATT ;ZF=1转移 MOV DX,38FH MOV AX,SI OUT DX,AX,10,2.“或”运算指令,格式: OR OPRD

3、1,OPRD2 操作: 两操作数相“或”,结果送目标地址,11,“或”指令的应用,实现两操作数 相 “或”的 运算 OR AX,DI 使某些位不变,某些位置“1” OR CL,0FH 在不改变操作数的 情况下使OF=CF=0 OR AX,AX,12,“或”指令的应用例,OR AL,AL JPE GOON OR AL,80H GOON:.,PF=1转移,13,“或”指令的应用,将一个二进制数9变为字符9,如何实现?,14,3.“非”运算指令,格式: NOT OPRD 操作: 操作数按位取反再送回原地址 注: 指令中的操作数不能是立即数 指令的执行对标志位无影响 例:NOT BYTE PTRBX,

4、15,4.“异或”运算指令,格式: XOR OPRD1,OPRD2 操作: 两操作数相“异或”,结果送目标地址 例: XOR BL,80H XOR AX,AX,16,5.“测试”指令,格式: TEST OPRD1,OPRD2 操作: 执行“与”运算,但运算的结果不送回目标地址。 应用: 常用于测试某些位的状态,17,例:,从地址为3F8H的 端口中读入一个字节数,当该数的 bit1, bit3, bit5位同时为1时,可从38FH端口将DATA为首地址的一个字输出,否则就不能进行数 据传送。 编写相应的 程序段。,18,源程序代码:,LEA SI,DATA MOV DX,3F8H WATT:I

5、N AL,DX MOV DX,38FH MOV AX,SI OUT DX,AX,AND AL,2AH CMP AL,2AH JNZ WATT,TEST AL,02H JZ WATT ;ZF=1转移 TEST AL,08H JZ WATT TEST AL,20H JZ WATT,AND AL,2AH XOR AL,2AH JNZ WATT,19,二、移位指令,非循环移位指令 循环移位指令,注: 移动一位时由指令直接给出; 移动两位及以上,则移位次数由CL指定。,20,1. 非循环移位指令,逻辑左移 算术左移 逻辑右移 算术右移,21,算术左移和逻辑左移,算术左移指 令: SAL OPRD,1 S

6、AL OPRD,CL 逻辑左移指 令: SHL OPRD,1 SHL OPRD,CL,有符号数,无符号数,22,逻辑右移,格式: SHR OPRD,1 SHR OPRD,CL,0,CF,无符号数的右移,23,逻辑右移例:,MOV AL,68H MOV CL,2 SHR AL,CL,0,CF,0 1 1 0 1 0,AL,0,0,0,0 0 1 1 0 1 0 0,AL,CF,0,0,0 0 0 1 1 0 1 0,AL,CF,0,0,移动1次,移动2次,24,算术右移,格式: SAR OPRD,1 SAR OPRD,CL,有符号数的右移,CF,25,非循环移位指令的应用,左移可实现乘法运算 右

7、移可实现除法运算,26,2. 循环移位指令,不带进位位的循环移位 带进位位的循环移位,左移 ROL 右移 ROR,左移 RCL 右移 RCR,指令格式、对操作数的要求与非循环移位指令相同,27,不带进位位的循环移位,CF,CF,28,带进位位的循环移位,CF,CF,29,循环移位指令的应用,用于对某些位状态的测试; 高位部分和低位部分的交换; 与非循环移位指令一起组成32位或更长字长数的移位。,P124例3-34,P124例3-35,30,程序功能,将1000H开始存放的4个压缩BCD码转换为ASCII码存放在3000H开始的单元中去。,12H,34H,56H,78H,1000H,3000H,

8、31,程序例,MOV SI,1000H MOV DI,3000H MOV CX,4 Next:MOV AL,SI MOV BL,AL AND AL,0FH OR AL,30H MOV DI,AL INC DI MOV AL,BL,PUSH CX MOV CL,4 SHR AL,CL OR AL,30H MOV DI,AL INC DI INC SI POP CX DEC CX JNZ Next HLT,32,串操作指令,33,串操作指令说明,针对数据块或字符串的操作; 可实现存储器到存储器的数据传送; 待操作的数据串称为源串,目标地址称为目标串。,34,串操作指令的特点,源串一般存放在数据段,

9、偏移地址由SI指定。允许段重设; 目标串必须在附加段,偏移地址由DI指定; 指令自动修改地址指针,修改方向由DF决定。 DF=0 DF=1 数据块长度值由CX指定 可增加自动重复前缀以实现自动修改CX内容。,增地址方向;,减地址方向;,35,重复前缀,无条件重复 REP 条件重复 REPE 相等重复 REPZ 为零重复 REPNE 不相等重复 REPNZ 不为零重复,CX0 ZF=1,CX0 ZF=0,CX0 重复,36,串操作指令,串传送 MOVS 串比较 CMPS 串扫描 SCAS 串装入 LODS 串送存 STOS,37,串操作指令流程(以传送操作为例),取源串地址,取目标串地址,设串长

10、度,传送一个字节或字,修改地址指针,修改串长度值,传送完否?,N,Y,设操作方向,38,1. 串传送指令,格式: MOVS OPRD1,OPRD2 MOVSB MOVSW 串传送指令常与无条件重复前缀连用,39,串传送指令,对比用MOV指令和MOVS指令实现将200个字节数据从内存的一个区域送到另一个区域的程序段。,P104例3-12,40,串传送指令例,用串传送指令实现200个字节数据的传送: LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REP MOVSB HLT,41,2. 串比较指令,格式: CMPS OPRD1,OPRD2 CMPSB CMPSW 串比

11、较指令常与条件重复前缀连用,指令的执 行不改变操作数,仅影响标志位。 前缀的操作对标志位不影响,42,串比较指令例,测试200个字节数据是否传送正确:,LEA SI,MEM1 LEA DI,MEM2 MOV CX,200 CLD REPE CMPSB TEST CX,00FFH,JZ STOP DEC SI MOV AL,SI MOV BX,SI STOP:HLT,43,3. 串扫描指令,格式: SCAS OPRD SCASB SCASW 执行与CMPS指令相似的操作,只是这里的源 操作数是AX或AL,目 标 操作数,44,串扫描指令的应用,常用于在指定存储区域中寻找某个关键字。,教材p127

12、例,45,4. 串装入指令,格式: LODS OPRD LODSB LODSW 操作: 对字节: 对 字:,源操作数,DS:SI,DS:SI,AL,AX,46,4. 串装入指令,用于将内存某个区域的数据串依次装入累加 器,以便显示或输出到接口。 LODS指令一般不加重复前缀。,47,5. 串存储指令,格式: STOS OPRD STOSB STOSW 操作: 对字节: AL 对 字: AX,目 标 操作数,ES:DI,ES:DI,48,串存储指令的应用,常用于将内存某个区域置同样的值 此时: 将待送存的数据放入AL(字节数)或AX(字数据); 确定操作方向(增地址/减地址)和区域大小(串长度值

13、); 使用串存储指令+无条件重复前缀,实现数据传送。,49,串存储指令例,将内存某单元清零 P129例3-40,50,串操作指令应用注意事项,需要定义附加段 目标操作数必须在附加段 需要设置数据的操作方向 确定DF的状态 源串和目标串指针分别为SI和DI 串长度值必须由CX给出 注意重复前缀的使用方法 传送类指令前加无条件重复前缀 串比较类指令前加条件重复前缀,但前缀不影响ZF状态,51,程序控制指令,转移指令 循环控制 过程调用 中断控制,52,程序的执行方向,程序控制类指令的本质是: 控制程序的执行方向 决定程序执行方向的因素: CS,IP 控制程序执行方向的方法: 修改CS 和IP ,则

14、程序转向另一个代码段执行; 仅修改IP,则程序将改变当前的执行顺序,转向本代码段内其它某处执行。,53,一、转移指令,无条件转移指令 无条件转移到目标地址,执行新的指令 有条件转移指令 在具备一定条件的情况下转移到目标地址,通过修改指令的偏移地址或段地址及偏移地址 实现程序的转移,54,1. 无条件转移指令,格式: JMP OPRD,目标地址,与JMP在同一代码段,与JMP不在同一代码段,原则上可实现在整个内存空间的转移,55,无条件段内转移,转移的目标地址在当前代码段内,段地址不 改变。 即:目标地址是16位偏移地址。,指令中直接给出目标地址,由指令中的寄存器或存储器操作数指出目标地址,段内

15、直接转移,段内间接转移,56,段内直接转移,转移的目标地址由指令直接给出 格式: JMP Label,近地址标号,57,段内直接转移示图,JMP,Label,代码段,位移量,下一条要执行指令的偏移地址=当前IP+位移量,JMP Label,58,段内间接转移,段内间接转移 转移的目标地址存放在某个16位寄存器或存储器 的某两个单元中 例: JMP BX 若:BX=1200H 则:转移的目标地址=1200H,JMP,代码段,1200H,MOV,59,段内间接转移例,JMP WORD PTRBX 设:BX=1200H,JMP,代码段,数据段,BX=1200,XXH,XXH,IP,指令码,60,无条件段间转移,转移的目标地址不在当前代码段内。 目标地址为32位,包括段地址和偏移地址。,指令中直接给出目标地址,由指令中的32位存储器操作数指出目标地址,段间直接转移,段间间接转移,61,段间直接转移,段内直接转移 转移的目标地址由指令直接给出 格式: JMP FAR Label,远地址标号,62,段间直接转移示图,JMP,Label,代码段1,Label与JMP之间的位移量,代码段

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 高等教育 > 大学课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号