微机原理第三章 8086寻址和指令系统.ppt_第1页
微机原理第三章 8086寻址和指令系统.ppt_第2页
微机原理第三章 8086寻址和指令系统.ppt_第3页
微机原理第三章 8086寻址和指令系统.ppt_第4页
微机原理第三章 8086寻址和指令系统.ppt_第5页
已阅读5页,还剩73页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、第三章 8086寻址和指令系统,学习要点 1、8086的寻址方式 2、8086的指令系统,指令,机器指令 以二进制代码(机器码)表示指令 直接,不易读懂 汇编指令 以符号形式表示指令 易读,需要翻译(汇编) 与CPU相关,指令成分,操作码:操作的性质 表示指令应完成的具体操作 以助记符的形式表示 操作数:操作的对象 表示指令的操作对象(参与操作的对象) 源操作数、目的操作数,指令操作数,双操作数 OPRDEST,SRC 单操作数 OPRDEST 无操作数 OPR(隐含操作数),8086的寻址方式,寻址方式:CPU寻找操作数或送操作结果的方式。,操作数可能存放的场所,MOV数据传送指令 其格式为

2、: MOV 目的操作数,源操作数 目的操作数和源操作数均可采用不同的寻址方式,但两个操作数的类型必需一致。,操作数就在指令中,MOVSP,0100H,MOVAL,20H,MOVCX,100,0064H;16bit,一、立即寻址,问题:操作数是16位,还是8位?,16bit,8bit,二、寄存器寻址,MOVCL , AH (AH)CL,MOVDS , AX (AX)DS,操作数在寄存器中,三、直接寻址,MOVAX,2000H,操作数在内存中,其段内偏移(有效) 地址EA在指令中,四、寄存器间接寻址,MOVAX,SI(DS):(SI)AX MOVAX,BP(SS):(BP)AX,操作数在内存中,其

3、EA在指令指明的寄存器中,五、寄存器相对寻址,MOVAX,100 SI (SI)+(-100) AX MOVDX,ALFA DI (DI)+ALFADX,注:disp可以是一个带符号数,也可是已赋值的变量,六、基址变址寻址,MOV BXS I,DX (DX)(BX)+(SI)的内存中,操作数在内存中,其EA是指令指明的基址与变址寄存器内容与指令中给出的8bit/16bit带符号位移量之和。,七、相对基址变址寻址,MOV AX,24BXS I (BX)+(SI)+24) AX,八、I/O端口寻址,操作数在外部设备时,使用两种不同寻址方式的I/O指令。,1、直接端口寻址方式 指令中直接给出端口地址

4、,范围是:0FFH,2、采用寄存器间接寻址方式 采用DX寄存器进行间址,范围是:0FFFFH,3、I/O寻址时的操作寄存器为AL或AX,IN AL , 25H MOV DX , 3E4H OUT DX , AL,第三章作业1,1,2,3,8086的指令系统,六大类指令: 1、数据传送; 2、算术运算; 3、逻辑运算; 4、串操作; 5、控制传送; 6、处理器控制。,要求了解指令的 1、操作码; 2、操作功能; 3、操作对象; 4、操作结果; 5、对PSW标志位的影响;6、后继地址。,数据传送指令,数据传送是计算机中最基本、最重要的一种操作 除标志寄存器传送指令和POP指令外,均不影响标志位,数

5、据传送指令表,1、通用传送指令 MOV OPRD1,OPRD2 把一个byte/word操作数从源传送到目的。对标志位不 起作用。,OPRD1OPRD2 Im立即数 a aAL/AX seg seg段寄存器 r r通用寄存器 dst src内存,段寄存器 CS、DS、SS、ES,Memory,立即数,通用寄存器 AX、BX、CX、 DX、BP、SP、 SI、DI,MOV指令传送功能图解,2、堆栈操作指令 PUSH OPRD OPRD(SP)-1/(SP)-2 (SP) -2SP POP OPRD(SP)+1) /(SP)OPRD (SP)+2SP,r seg src(push) / dst(p

6、op),PUSH DX,POP BX,3、交换指令 XCHG OPRD1,OPRD2 a r register memory register register,XCHG AL,CL / XCHGAX,DI XCHG BX,DATA SI XCHG BX,DI,操作数不能为立即数;段寄存器不能作为操作数。,OFFSET是运算符,4、查表转换指令 XLAT 指定表首地址BX;表元素号AL 查表结果(BX)+(AL) AL,例:若十进制数字09 的 LED七段显示码对照表已存放在内存中,表格的首地址为TABLE,用 XLAT 指令求数字5的七段显示码值程序如下:,TABLE DB 40H, 79H

7、, 24H, 30H, 19H DB 12H, 02H, 78H, 00H, 18H,; 建立七段显示码表格,AL 5,BX 表格首地址,AL 12H,MOV AL,5 ;,MOV BX,OFFSET TABLE ;,XLAT ;,5、地址目的传送指令 16bit地址目的传送指令(段内有效偏移地址) 把源操作数的段内有效偏移地址16bit传送到目的地址。 LEA OPRD1,OPRD2 rsrt (memory的EA),LEASI,AREA1 把变量名为AREA1的内存(16bit)地址SI =MOVSI,OFFSET AREA1 OFFSET是运算符,32bit地址目的传送指令(段地址和段内

8、有效偏移地址) 把源操作数的段地址16bit和段内有效偏移地址16bit传送到目的地址。 LDSOPRD1,OPRD2 LESOPRD1,OPRD2 r srt DS,BP/SI/DI ES, BP/SI/DI 段地址,EA,6、标志寄存器传送 LAHF(FLAG/L8bit)AH SAHF(AH)FLAG/L8bit PUSFFLAG/16bit 入栈保护 POPF堆栈弹出FLAG/16bit,算术运算指令,压缩BCD数在一个字节中存放二个BCD码十进制数。,非压缩BCD在一个字节的低4位存放一个BCD码十进制数,高4位为全0。,二进制数可以是8位或16位;若是带符号数则用补码表示。,808

9、6可处理四种类型的数:无符号、带符号、压缩BCD码、非压缩BCD码,7 无效 无效,07 89 无效,1、加法指令 ADD OPRD1,OPRD2OPRD1OPRD2OPRD1 ADC OPRD1,OPRD2OPRD1OPRD2CFOPRD1 影响的标志 CF、OF、PF、SF、ZF ACC im r r dst src,AAA非压缩十进制加法BCD调整(8bit) CF、OF、PF、SF、ZF 8bit(0)加法后,AL中的非压缩BCD码AH(0+拾位)AL(0+个位)。,例: MOVBL,09H ;非压缩BCD码 MOVAL,05H ; ADDAL,BL AAA ;(AX)0104H,DA

10、A压缩十进制加法BCD调整(8bit) CF、OF、PF、SF、ZF 8bit()加法后,AL中的压缩BCD码AL(拾位、个位)中。若调整结果99,则CF1。,例:MOVBL,38H MOVAL,15H ADDAL,BL DAA ;(AL)=53H CF=0,2、减法指令 SUB OPRD1,OPRD2 OPRD1OPRD2OPRD1 SBB OPRD1,OPRD2 OPRD1OPRD2CFOPRD1 ACC im CF、OF、PF、SF、ZF r r dst src,DEC OPRD OPRD1OPRD r CF、 OF、PF、SF、ZF src,AAS 未压缩十进制数减法BCD调整(8bi

11、t) CF、OF、PF、SF、ZF 8bit(0) 减法后,AL中的非压缩BCD码AL(0个位)中。若有借位,CF1。,例: MOVCL,08H MOVAL,03H SUBAL,CL AAS ;(AL)05H,CF1(有借位),DAS 压缩十进制数减法BCD调整(8bit) CF、OF、PF、SF、ZF 8bit() 减法后,AL中的压缩BCD码AL(拾位、个位)中。,例: MOVCL,98H MOVAL,56H SUBAL,CL DAS ;(AL)58H,CF1 (有借位),在使用(AAA、DAA)和(AAS、DAS)时: 仅对AL调整,运算必须是字节; 必须紧跟在加法或减法指令后面,NEG

12、 OPRD 取负 0OPRD(取补) OPRD r / Memory,注意CMP和SUB区别,扩展指令,第三章作业2,6,7,9,逻辑指令,逻辑运算指令的运算特点:按bit运算,ANDOPRD1,OPRD2 OROPRD1,OPRD2 XOROPRD1,OPRD2 a im rr dst src,PF、SF、ZF CF=OF= 0,TEST AL,01H JNZ THERE 若(AL)为奇数,转THERE语句 ;若为偶数,继续执行下一语句。,TEST CX,0FFFFH JZ THERE 若(CX)0,转THERE语句。,2、算术逻辑移位指令 SHLOPRD,m逻辑左移 SALOPRD,m算术

13、左移 SHROPRD,m逻辑右移 SAROPRD,m算术右移 r / Memory 1 / CL 移位次数,3、循环移位指令 ROLOPRD,m ROR OPRD,m RCL OPRD,m RCR OPRD,m r / Memory 1 / CL 移位次数,例:(AX)= 0012H,(BX)= 0034H,把它们装配成(AX)= 1234H,例:(BX) = 84F0H (1) (BX) 为无符号数,求 (BX) / 2 SHR BX, 1 ; (BX) = 4278H (2) (BX) 为带符号数,求 (BX) 2 SAL BX, 1 ; (BX) = 09E0H, OF=1 (3) (B

14、X) 为带符号数,求 (BX) / 4 MOV CL, 2 SAR BX, CL ; (BX) = 0E13CH,MOV CL, 8 ROL AX, CL ADD AX, BX,例:将DX.AX中32位数值左移一位,shl ax,1 ;AX左移1位,最低位补0,最高位进入CF rcl dx,1 ;带进位循环左移1位,串操作指令:用一条指令实现对一串字符或一串数据的操作。,串操作指令的共同特点: 、可以对字节(8bit)串操作,也可对字(16bit)串操作;,、所有串操作指令都是 SI用于对源操作数间址,段地址为DS(源操作数物理地址在数据段)。源操作数的的地址为DS:SI。 DI用于对目的操作

15、数间址,段地址为ES(目的操作数物理地址在附加段)。目的操作数的地址为ES:DI。,、串操作时,地址的自动修改取决于方向标志DF DF1,SI、DI自动减修改;字节操作减1,字操作减2。 DF0,SI、DI自动增修改;字节操作加1,字操作加2。,、可以在串操作前加重复前缀完成多次串操作。,、待操作的字符串长度(字节或字)放在CX中。,串操作指令,2、串比较指令 CMPSB字节操作 (SI)(DI) PSW; (SI)+/1SI;(DI)+/1DI CMPSW字操作 (SI)1):(SI)(DI)1):(DI) PSW; (SI)+/2 SI;(DI) +/2 DI CF、OF、PF、SF、ZF

16、,6、重复前缀 使用重复前缀时,重复次数计数器为CX;每重复一次,(CX)1CX。,REP 无条件重复前缀。重复操作后随的串操作指令, 结束条件:(CX)0。,REPZ/REPE 当ZF1 时,重复操作后随的串操作指令, 结束条件:ZF0或(CX)0。,REPNZ/REPNE 当ZF0 时,重复操作后随的串操作指令, 结束条件:ZF1或(CX)0。,执行 重复前,应先做好: (1) 源串首地址(末地址) SI (2) 目的串首地址(末地址) DI (3) 串长度 CX (4) 建立方向标志 ( CLD 使 DF=0,STD 使 DF=1 ),例:已知BLOCK为字符串首地址,COUNT为字符串

17、长度,CHAR为关键字。,结论:DI为0,无该关键字;DI为不为0的数,表示寻找次数; POINT为等于关键字的首个内存地址。,MOVDI,OFFSET BLOCK MOVCX,COUNT MOVAL,CHAR REPNE SCASB JZFOUND MOVDI,0 JMPDONE FOUND:DECDI MOVPOINT,DI MOVBX,OFFSET BLOCK SUBBX,DI MOVDI,BX DONE:HLT,不重复操作二种可能: (CX)=0 ,找遍没找到; ZF=1,找到关键字。,第三章作业3,10,11,12,控制转移指令,1、转移地址的方式 CPU执行的指令是按顺序存放在内存

18、中,程序执行的顺序是由CS和IP的内容决定的。正常情况下,每当CPU完成一次取指令操作后,IP的内容自动1,使取指指向下一条指令的地址。于是实现程序的顺序执行。 当程序执行需要转移,可通过改变CS和IP的内容实现。即需要将待执行指令在内存的地址送CS和IP。,这里所指的转移方式是:寻找待转移指令地址的方式。与寻找操作数的寻找方式不同。,近转移(NEAR),IP为0000FFFFH。,短转移(SHORT),转移地址与当前地址差在128127 (8位带符号数)范围内。,转移地址在代码段的寻址类型有(以JMP指令为例),1、无条件转移指令 JMP SHORT OPRD 段内短转移 转移地址与当前地址

19、差应在128127,JMP NEAR PTR OPRD JMP OPRD 段内转移 转移地址在同一代码段,JMP FAR PTR OPRD 段间转移 转移地址包括段地址CS、有效地址IP,JMP BX,段内转移,(BX) IP,JMP WORD PTR 5 BX,段内转移, (BX)+5 间指数据段内存的16位数IP,JMP NEXT,段内转移, 转移至同一代码段的语句NEXT,JMP DWORD PTR SI+0125H,段间转移, (SI) +0125H间指数据段内存的32位数IP、CS,JMP FAR PTR ONE,段间转移, 将语句ONE的段地址CS,有效地址IP,2、调用、返回指令 CALL (NEAR)/FAR OPRD 段间调用FAR 子程序首地址(或语句名) RET 返回指令 不必说明(NEAR)/FAR,段内直接:目标地址的偏差在指令中 CALL PROG_G (CS)=2000H,(IP)=1050H (SS)=5000H,(SP)=0100H DISP=1234H IP(IP) + DISP,段内间接: 目标地址在寄存器中 CALL BX 目标地址在存储器中 CALL WORD PTR BX+SI,段间直接 目标地址在指令中 CALL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论