ImageVerifierCode 换一换
格式:DOCX , 页数:27 ,大小:566.14KB ,
资源ID:6847906      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/6847906.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机控制课件 4.docx)为本站会员(b****5)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机控制课件 4.docx

1、微机控制课件 42011-10-27第二章 微机原理及其工艺过程控制应用第1节 86系列微处理器结构第2节 86系列微型计算机的指令系统指令是让计算机完成某种操作的命令,指令的集合称作指令系统,2.1 86系列汇编语言指令语句格式86系列汇编语言指令语句格式如图27所示。图中由前向后的箭头表示是可选项,由后向前的箭头表示是重复项,回头方框表示是语句中的关键字。图2-7 86系列汇编语言指令语句格式例如: AA: MOV AX,BX; 将寄存器BX内容送到寄存器AX之中 标号 助记符 操作数 注释 图2-8 86系列的操作数寻址方式例21 设BX0158H,DI10A5H,位移量1B57H,DS

2、2100H,假定没有使用段前缀,即把DS作为操作数对应的段寄存器。在各种寻址方式下,这些寄存器和位移量所产生的有效地址和物理地址为:(1)直接寻址: 有效地址1B57H 物理地址21000H十1B57H22B57H(2)寄存器间接寻址(寄存器为BX): 有效地址0158H 物理地址21000H十0158H21158H (3) BX寄存器相对间接寻址: 有效地址0158H十1B57H1CAFH 物理地址21000H十1CAFH22CAFH (4)变址寻址(寄存器为DI): 有效地址l0A5H 物理地址21000H十10A5H220A5H(5)DI寄存器相对变址寻址: 有效地址10A5H十lB57

3、H2BFCH 物理地址21000H十2BFCH23BFCH(6)基址加变址的寻址(BX为基址寄存器,DI为变址寄存器): 有效地址0158H十10A5H11FDH 物理地址21000H十llFDH221FDH(7)相对的基址加变址的寻址(BX为基址寄存器,DI为变址寄存器) 有效地址0158H十l0A5H十1B57H2D54H 物理地址21000H十2D54H23D54H*指令系统:传送类指令、算术运算类指令、逻辑运算和移位指令、串操作指令、控制指令23 传送类指令传送类指令是指令系统中最活跃的一类指令,也是条数最多的一类指令,主要用于数据的保存及交换等场合。此处我们把这类指令分为4种,并把各

4、种指令操作码助记符和对应的操作数列表所示。表2-3 传送类指令指令类型指令格式指令功能状态标志位备注O S Z A P C通用数据传送MOV 目标,源PUSH 源POP 目标XCHG 目标,源XLAT传送字节或字字压入堆栈字弹出堆栈交换字节或字字节翻译- - - - - - - - - - - - - - - - - - - - - -源:寄存器、存储器、立即数目标:寄存器、存储器源:寄存器、存储器目标:寄存器(CS除外)、存储器源:通用寄存器、存储器目标:通用寄存器、存储器目标地址传送LEA 目标,源LDS 目标,源LES 目标,源装入有效地址装入数据段指针到DS装入附加段指针到ES- -

5、- - - - - - - - - - - - - -源:内存操作数目标:16位通用寄存器标志位传送LAHFSAHFPUSHFPOPF把FR低字节装入AH把AH内容装入FR低字节把FR内容压入堆栈从堆栈弹出FR内容- - - - - - - - - - - - I/O数据传送IN 累加器,端口OUT 端口,累加器输入字节或字输出字节或字- - - - - - - - - - -累加器:AL或AX端口:地址0255或间址寄存器DX说明:运算结果影响标志位,- 运算结果不影响标志位。1传送类指令 (1)通用数据传送指令通用传送指令中包括最基本的传送指令MOV,堆栈指令PUSH和POP,数据交换指令

6、XCHG。MOV指令是形式最简单、用的最多的指令。它可以实现CPU内部寄存器之间的数据传送、寄存器和内存之间的数据传送,还可以把一个立即数送给CPU的内部寄存器或者内存单元。例如: MOV AL,BL ;BL中的8位数据送AL MOV ES,DX ;DX中16位数据送ES MOV AX, BX ;BX和BX十1所指的两个内存单元的内容送AX MOV DI,AX ;累加器的内容送DI和Dl十1所指的两个单元 MOV CX,1000 ;将1000和1001两单元的内容送CX MOV BL,40 ;立即数40送BL MOV DX,5040 ; 立即数5040送DX MOV WORD PTRSI,60

7、70 ;立即数6070送到SI和SI十1所指的两个单元 ;这里的PTR是一个汇编操作符,与前面的WORD ;一起,标明往SI地址中写一个字,而不是一个节*(2)堆栈操作指令在子程序调用和中断处理过程时,分别要保存返回地址和断点地址,在进入子程序和中断处理后,还需要保留通用寄存器的值;子程序返回和中断处理返回时,则要恢复通用寄存器的值,并分别将返回的地址或断点地址恢复到指令指针寄存器中。这些操作都要通过堆栈来操作,其中寄存器的保存和恢复需要有堆栈指令来完成。8086/8088的堆栈操作遵循“先进后出”原则。例: 保存和恢复DS,ES内容的指令如下PUSH DSPUSH ESPOP ESPOP D

8、S与上比较:PUSH DSPUSH ESPOP DSPOP ES结果有何不同?*(3)交换指令交换指令XCHG可以实现字节交换,也可以实现字交换。交换过程可以在CPU的内部寄存器之间进行,也可以在内部寄存器和存储单元之间进行,但不能在两个存储之间执行数据交换过程。例如:XCHG AL,BL ;AL和BL之间进行字节交换XCHG BX,CX ;BX和CX之间进行字节交换XCHG 2503,CX ;CX中的内容和2530,2531两单元的内容交换*(4)换码指令 XLAT是一条完成字节翻译功能的指令,称为换码指令。它可以使累加器中的一个值变换为内存表格中的某一个值,一般用来实现编码制的转换。使用换

9、码指令时,要求BX寄存器指向表的首地址,AL中为表中某一项与表格首地址之间的偏移量,指令执行时,会将BX和AL中的值相加,把得到的值作为地址,然后将此地址所对应的单元中的值取到AL中去。XLAT指令是通过查表方式来完成翻译功能的,因此,在执行该指令之前,必须建立好一张翻译表,该表的最大容量为256字节。例如,将十进制数字(09)翻译成7段显示码的译码表顺序存放在内存中,假设这段数据存放的偏移地址首址为2000H,取出“6”所对应的7段码,该过程可用如下几条程序实现:MOV BX,2000HMOV AL,3XLAT*2目标地址传送指令 这是一类专用于传送地址码的指令,可用来传送操作数的段地址或偏

10、移地址,共包含以下3条指令:(1)取有效地址指令取有效地址指令LEA的功能是将存储器地址送到一个寄存器。LEA指令要求源操作数必须为内存单元地址,目的操作数必须为一个16位的通用寄存器。这条指令常用来使一个寄存器作为地址指针。例如:LEA AX,2728 ;将2728单元的偏移量送AX,指令执行后,AX中为2728LEA BX,BPSI ;指令执行后,BX中的内容为BPSI的值LEA SP,0482 ;使堆栈指针SP为482*(2)将地址指针装到DS和另一个寄存器的指令LDS指令的功能是把4个字节的地址指针(其中包括一个段地址和一个偏移量)传送到两个目的寄存器,其中,地址指针的后两个字节即段地

11、址一定送到DS中。比如,设2l30H一2133H这4个单元中存放着一个地址,2130H和2131H中为地址的偏移量,2132H和2133H中为地址的段值,执行指令:LDS DI,2130H该指令功能是:2130H和2131H中的偏移量送到DI,2132H和2133H中的段值送到DS。*88(3)将地址指针装到ES和另一个寄存器的指令 LES指令与LDS指令的操作基本相同,所不同仅在于将源操作数所指向地址指针中的段基址(后两个字节)传送到ES段寄存器,而不是DS段寄存器。3标志位传送指令可完成标志位传送的指令共有4条:(1)读取标志指令读取标志指令LAHF被执行时,将标志寄存器中的低8位传送到A

12、H中,如图29所示。图2-9 LAHF指令的功能(2)设置标志指令设置标志指令SAHF被执行时,将AH寄存器的相应位传送到标志寄存器的低8位。用图表示,就是将图2-9的5个箭头方向反过来。(3)对标志寄存器的压入堆栈指令和弹出堆栈指令 PUSHF指令将标志寄存器的值压入堆栈顶部,同时,堆栈指针SP的值减2。此指令在执行时标志寄存器的值不变。POPF指令的功能正好相反,此指令在执行时从堆栈中弹出一个字送到标志寄存器中,同时堆栈指针SP的值加2。PUSHF和POPF指令一般用在子程序和中断处理程序的首尾,起保存主程序标志和恢复主程序标志的作用。4输入输出数据传送指令输入输出指令用来完成累加器(AX

13、AL)与IO端口之间的数据传送功能。执行输入指令时,CPU可以从一个8位端口读入一个字节到AL中,也可以从两个连续的8位端口读一个字到AX中。执行输出指令时,CPU可以将AL中的个字节写到一个8位端口中,或者将AX中的一个字写到两个连续的8位端口中。例如:IN AL,50H ;将50H端口的字节读入ALIN AX,70H ;将70、71端口的值读入AX, 将70H端口的内容读入AL,71H端口的内容读入AHIN AL,DX ;从DX所指的端口中读取一个字节OUT 44H,AL ;将AL中的一个字节输出到44H端口。OUT 80H,AX ;将AL中的内容输出到80H,AH中的内容输出到81HOU

14、T DX,AL ;将AL中的内容输出到DX所指的端口中OUT DX,AX ;将AL中的内容输出到DX所指的端口中;AH中的内容输出到DX1所指的端口中*2.2.4 算术运算类指令86系列CPU指令系统中,具有完备的加,减,乘,除算术运算指令,可处理不带符号或带符号的8/16位二进制整数,以及不带符号的装配型/拆开型十进制整数。表2-4给出了86系列指令系统中算术运算类指令。表2-4 算术运算类指令指令类型指令格式指令功能状态标志位备注O S Z A P C加法ADD 目标,源ADC 目标,源INC 目标加法(字节/字)带进位加法(字节/字)加1(字节/字) -源:通用寄存器、存储器、立即数目标

15、:通用寄存器、存储器源:通用寄存器、存储器、立即数目标:通用寄存器、存储器目标:通用寄存器、存储器减法SUB 目标,源SBB 目标,源DEC 目标NEG 目标CMP 目标,源减法(字节/字)带借位减法(字节/字)减1(字节/字)取补比较 - 1 源:通用寄存器、存储器、立即数目标:通用寄存器、存储器源:通用寄存器、存储器、立即数目标:通用寄存器、存储器目标:通用寄存器、存储器目标:通用寄存器、存储器源:通用寄存器、存储器、立即数目标:通用寄存器、存储器乘法MUL 源IMUL 源无符号乘法(字节/字)有符号乘法(字节/字) * * * * * * * * 源:通用寄存器、存储器源:通用寄存器、存

16、储器除法DIV 源IDIV 源CBWCWD无符号除法(字节/字)有符号除法(字节/字)字节转换成字字转换成双字* * * * * * * * * * *- - - - - - - - - - -源:通用寄存器、存储器源:通用寄存器、存储器十进制调整AAADAAAASDASAAMAAD加法的ASCII码调整加法的十进制调整减法的ASCII码调整减法的十进制调整乘法的ASCII码调整除法的ASCII码调整* * * * 1* * * * * 1* * * * - *说明:运算结果影响标志位,- 运算结果不影响标志位,*标志位为任意值,“1”将标志位置11加法指令 (1)不带进位位的加法指令ADD用

17、来执行两个字或两个字节的相加操作,结果放在原来存放目的操作数的地方。例如: ADD AL,50H ;AL和50H相加,结果放在AL中 ADD CX,l000H ;CX中的内容和1000H相加,结果放在CX中 ADD DI,SI ;DI和SI的内容相加,结果放在DI中 ADD BXDI,AX ;BX十DI和BX十DI十1两个存储单元的内容和AX中的内容相加,;结果放在BXDI和BXDI1所指的存储单元中 ADD AX,BX2000H ;BX2000H和BX2001H所指的两单元的内容和AX的内容相加,;结果放在AX中(2)带进位位的加法指令ADC在形式上和功能上都和ADD指令类似,只有一点区别,

18、就是ADC指令被执行时,将进位标志CF的值加在和中。例如: ADC AX,SI ;AX和SI中的内容以及CF的值相加,结果放在AX中ADC指令为实现多字节的加法运算提供了方便。【例子】有两个4字节的无符号数相加,这两个数分别放在2000H和3000H开始的存储单元中,低位在前,高位在后,要求进行运算后,得到的和放在2000H开始的内存单元中。可以用如下程序段实现这种多字节的加法:CLC ;清进位位CFMOV SI,2000H ;取第一个数的首地址MOV AX,SI ;将第一个数的低16位取到AXMOV DI,3000H ;取第二个数的首地址ADD AX,DI ;第一个数和第二个数的低16位相加

19、MOV SI,AX ;低16位相加的结果送到2000H,200lH单元MOV AX,SI2 ;取第一个数的高16位送到AX中ADC AX,DI2 ;两个数的高16位连同进位位相加MOV SI2,AX ;高16位相加的结果送到2002H、2003H单元(3)增量指令INC只有1个操作数,指令在执行时,将操作救的内容加1,再送回该操作数。这条指令一般用在循环程序中修改指针和循环次数。例如:INC AL ;将AL中的内容加1INC CX ;将CX中的内容加IINC BYTE PTRBXDI500 ;将BX十DI十500所指的存储单元的内容加1在编程中要注意,INC指令不影响进位标志CF的状态。2减法

20、指令 (1)不带借位的减法指令SUB完成两个字节或两个字的相减。例如:SUB BX,CX ;将BX中的内容减去CX中的内容。结果放在BX中SUB BP2,CL ;将SS段的BP2所指的单元中的值减去CL中的值。 ;结果放在BP2所指的堆栈单元中SUB AL,20 ;AL中的数减去20,结果放在AL中SUB SI,5010H ;SI中的数减去50l0H,结果放在SI中(2)带借位的减法指令SBB在形式上和功能上都和SUB指令类似,只是SBB指令在执行减法运算时,还要减去CF的值。在减法运算中,CF的值就是两数相减时,向高位产生的借位,所以,SBB在执行减法运算时,是用被减数减去减数,并减去低位字

21、节相减时产生的借位。和带进位位的加法指令类似,SBB主要用在多字节减法运算中。例如:SBB AX,2030H ;将AX的内容减去立即数2030H,并减去进位位CF的值SBB WORD PTRDI,1000H ;DI和DI1所指的单元中的数减去1000H及CF,;结果;放在DI和DI1所指的单元中(3)减量指令DEC只有1个操作数,执行时,将操作数的值减1,再将结果送回操作数。例如:DEC AX ;将AX的内容减1 ,再送回AX中DEC BL ;将BL的内容减1,结果送回BL中DEC BYTE PTRDI2 ;将DI2所指的单元中的内容减1,结果送回此单元(3)取补指令NEG对指令中给出的操作数

22、取补码,再将结果送回。因为对一个操作数取补码相当于用0减去此操作数,所以NEG指令执行的也是减法操作。例如:NEG AL ;将AL中的数取补码,送回ALNEG CX ;将CX中的内容取补码,送回CX(4)比较指令CMP也是执行两个数的相减操作,但不送回相减的结果,只是使结果影响标志位。例如:CMP AX,2000H ;将AX的内容和2000H相比较,结果影响标志位CMP AX,BXDI100 ;将累加器和两个存储单元的数相比较,结果影响标志;位,地址由BXDI100和BXDI101指出CMP DX,DI ;将DX和DI的内容相比,结果影响标志位一般情况下,CMP指令后面经常会有一条条件转移指令

23、,用来检查标志位的状态是否满足了某种关系。CMP指令对标志位的影响如表2-5所示。表2-5 CMP指令执行后标志位的状态数据类型目的操作数与源操作数的关系 CF ZF SF OF带符号位的操作数0 1 0 0- 0 1 0- 0 0 1- 0 0 0- 0 1 1不带符号位的操作数0 1 0 01 0 - -0 0 - -3乘法指令乘法运算是双操作数运算,但是,在指令中却只指定了个操作数,另一个操作数是隐含规定的,乘法运算的隐含规则如图210所示。其中的操作数可以是寄存器操作数或存储器操作数,而隐含的为AL或AX。从图210中可以看出,两个8位数相乘,其结果是16位数;两个16位数相乘,其结果

24、是32位数。图2-10 乘法运算规则4除法指令除法运算也是双操作数运算,它的隐含规则如图211所示,其中的操作数与乘法指令相同。在除法运算中,如果除数是8位的,则要求被除数是16位的;如果除数是16位的,则要求被除数是32位的。如果被除数的位数不够,则应在进行除法以前,预先将被除数扩展到所需要的位数。对于带符号数,这种扩展应该保持被扩展数的值(包括符号位)不变,因此应该是带符导位的扩展。例如,0111 000B应扩展成0000 0000 0111 0000B,1111 0000应扩展成1111 1111 1111 0000B。CBW和CWD指令就是分别用于这两种扩展的。对于带符号数的除法,86

25、系列是按表2-6所示的方式来处理商和余数的。图2-11 除法运算规则表2-6 带符号数除法的商和余数被除数除数商余数99-9-92-22-24-4-4411-1-1从表2-6可以看出.余数始终与被除数同号,也就是说,商是往0靠拢的。*2.2.5逻辑运算和移位指令8086指令系统提供了对8位数和16位数的逻辑操作指令。这些指令分为两类:一类是逻辑运算指令,另一类是移位指令。表2-7给出了86系列指令系统中逻辑运算和移位类指令。表2-7 逻辑运算和移位指令指令类型指令格式指令功能状态标志位备注O S Z A P C逻辑运算NOT 目标AND 目标,源OR 目标,源XOR 目标,源TEST 目标,源

26、非(字节/字)与(字节/字)或(字节/字)异或(字节/字)测试(字节/字)- - - - - -0 * 0 * 0 * 00 * 0目标:通用寄存器、存储器源:通用寄存器、存储器、立即数目标:通用寄存器、存储器源:通用寄存器、存储器、立即数目标:通用寄存器、存储器源:通用寄存器、存储器、立即数目标:通用寄存器、存储器源:8位或16位立即数目标:通用寄存器、存储器移位SHL 目标,计数值SAL 目标,计数值SHR 目标,计数值SAR 目标,计数值逻辑左移(字节/字)算术左移(字节/字)逻辑右移(字节/字)算术右移(字节/字) * * * * 目标:通用寄存器、存储器计数值:1或CL,移位次数目标:通用寄存器、存储器计数值:1或CL,移位次数目标:通用寄存器、存储器计数值:1或CL,移位次数目标:通用寄存器、存储器计数值:1或CL,移位次数循环移位ROL 目标,计数值R0R 目标,计数值RCL 目标,计数值RCR 目标,计数值循环左移(字节/字)循环右移(字节/字)带进位循环左移(字节/字)带进位循环右移(字节/字) - - * - - - * - - - * - - - * - 目标:通用寄存器、存储器计数值:1或CL,移位次数目标:通用寄存器、存储器计数值:

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1