《微型计算机原理与接口技术,李长青,李泉溪,PPT课件,第三章.ppt》由会员分享,可在线阅读,更多相关《微型计算机原理与接口技术,李长青,李泉溪,PPT课件,第三章.ppt(14页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第3章章80 x86的指令系统和寻址的指令系统和寻址方式方式微机原理与接口技术微机原理与接口技术精品课程本章主要内容本章主要内容l80 x86指令的格式指令的格式l程序占有空间和执行时间研究程序占有空间和执行时间研究l常用汇编语言指令介绍常用汇编语言指令介绍2微机原理与接口技术精品课程80 x86指令的格式指令的格式计算机中的指令由操作码字段和操作数字段两部分组成。计算机中的指令由操作码字段和操作数字段两部分组成。指令的格式一般为:指令的格式一般为:操作码操作码操作数操作数.操作数操作数操作码字段操作码字段指示计算机要干什么?指示计算机要干什么?操作数字段操作数字段指出在指令执行操作的过程中
2、所需要数据的来源。指出在指令执行操作的过程中所需要数据的来源。操作数字段的三种形式:操作数字段的三种形式:1、操作数本身、操作数本身(立即寻址方式立即寻址方式)2、操作地址或是地址的一部分(、操作地址或是地址的一部分(直接寻址方式直接寻址方式)3、指向操作数地址的指针、指向操作数地址的指针(间接寻址方式间接寻址方式)不同的不同的CPU类型,其具体描述形式可能不同,这也是学汇类型,其具体描述形式可能不同,这也是学汇编语言困难的地方。编语言困难的地方。3微机原理与接口技术精品课程程序占有空间和执行时间程序占有空间和执行时间注意注意1:这里说的这里说的“程序程序”指送入内存的可执行程序,即指送入内存
3、的可执行程序,即“机器语言机器语言程序程序”。一条。一条16位格式的指令一般占位格式的指令一般占17个字节;一条个字节;一条32位格式的位格式的指令一般占指令一般占114个字节。个字节。高级语言语句复杂高级语言语句复杂须展开须展开注意注意2:一条指令的运行时间决定于:该指令的执行时钟周期数。一条指令的运行时间决定于:该指令的执行时钟周期数。一般一条指令的执行时间为一般一条指令的执行时间为248个个cpu时钟周期,这与时钟周期,这与cpu内部结内部结构有关系。构有关系。注意注意3:了解指令执行时间的重要性体现在:实时控制时;编写了解指令执行时间的重要性体现在:实时控制时;编写程序延时等应用方面。
4、程序延时等应用方面。4微机原理与接口技术精品课程常用汇编语言指令介绍常用汇编语言指令介绍一、数据寻址方式类指令(只讲以后用到的主要指令)一、数据寻址方式类指令(只讲以后用到的主要指令)2.寄存器寻址方式寄存器寻址方式例例3.4(a)MOVAX,BX;16位位例例3.4(b)MOVECX,EDX;32位,位,80386机及以后才有机及以后才有1.立即寻址方式立即寻址方式例例3.1MOVAL,8;(AL)=08H,08H是立即数是立即数例例3.2MOVAX,1234H;(AX)=1234H例例3.3MOVEAX,12345678H;(EAX)=12345678H.注意:立即数长度应予目的操作数长度
5、一致。注意:立即数长度应予目的操作数长度一致。5微机原理与接口技术精品课程3.直接寻址方式直接寻址方式例例3.5MOVAX,2000H;注意注意2000H是偏移地址,也称有效地址是偏移地址,也称有效地址如(如(DS)=3000H,(,(32000H)=3050H,执行结果为:,执行结果为:(AX)=3050H。说明:该指令的有效地址为说明:该指令的有效地址为2000H,操作数的物理地址操作数的物理地址=数据段基地址数据段基地址*16+有效地址(有效地址(2000H)注意:不要与立即寻址方式相混淆。注意:不要与立即寻址方式相混淆。6微机原理与接口技术精品课程4.基址变址寻址方式基址变址寻址方式例
6、:例:MOVAX,BXDI(或写为:(或写为:MOVAX,BX+DI)对于对于32位寻址方式可有:位寻址方式可有:MOVEDX,EBXEDI这种寻址方式适用于这种寻址方式适用于数组(一维、二维)数组(一维、二维)或或表格表格处理,其首处理,其首地址可存放在基址寄存器中,而通过修改变址寄存器的内容来访地址可存放在基址寄存器中,而通过修改变址寄存器的内容来访问数组中的各个元素。问数组中的各个元素。一、数据寻址方式类指令一、数据寻址方式类指令上面所讲上面所讲二、程序寻址方式类指令二、程序寻址方式类指令程序何往?程序何往?1、段内无条件转移指令:、段内无条件转移指令:JMPNEARPTRPP;近转移(
7、近转移(16/32)PP为符号地址为符号地址;NEARPTR为操作符。为操作符。;对;对8086转移转移16位,对位,对386及以后机型转移及以后机型转移32位位2、段间无条件远转移指令:、段间无条件远转移指令:JMPWORDOTROPR;OPR为符号地址为符号地址7微机原理与接口技术精品课程其他类型其他类型汇编语言指令补充1、PUSHAX;进栈指令进栈指令2、POPAX;出栈指令出栈指令3、PUSHF;标志寄存器内容进栈标志寄存器内容进栈4、POPF;标志寄存器内容出栈标志寄存器内容出栈I/O口传送指令:口传送指令:5、外设输入指令:、外设输入指令:例例1:INAX,28H;从端口从端口28
8、H输入一字输入一字例例2:MOVDX,3FCHINAX,DX;对;对16位地址必须借助位地址必须借助;DX寄存器寻址寄存器寻址6、向外设输出指令:例、向外设输出指令:例1:OUT5,AL;向端口向端口5输出一字节输出一字节例例2:MOVDX,500HOUTDX,AL;对对16位地址必须借助位地址必须借助;DX寄存器寻址寄存器寻址8微机原理与接口技术精品课程7、地址传送指令:、地址传送指令:LEALEABX,LIST;将符号地址将符号地址LIST的有效地址送的有效地址送BXMOVBX,OFFSETLIST;同上,又一种写法同上,又一种写法,建立中断向量建立中断向量;时要用到。;时要用到。;表示某
9、段子程序;表示某段子程序LIST:*8、加减指令、加减指令ADDAX,CX;不带进位加不带进位加AX(AX)-(CX)ADCDX,BX;带进位加带进位加SUBAX,BX;减法指令减法指令AX(AX)-(BX)INCAX;加加1DECCX;减减1注意:注意:MOVBX,LIST(LIST)什么意思?什么意思?9微机原理与接口技术精品课程9、逻辑运算指令、逻辑运算指令(1)AND逻辑与指令逻辑与指令格式:格式:ANDDST,SRC执行的操作:(执行的操作:(DST)(DST)(SRC)(2)TEST测试指令测试指令格式:格式:TESTOPR1,OPR2执行的操作:(执行的操作:(OPR1)(OPR
10、2),两个操作数相与),两个操作数相与的结果不保存,只改变相关标志位,如零标志。的结果不保存,只改变相关标志位,如零标志。例:例:TESTAX,01H;测试测试AX的第的第0位位JZEVEN;为;为0转移,转移,条件转移指令条件转移指令JZ,下面要讲到,下面要讲到例:例:TESTAX,01H;测试测试AX的第的第0位位JNZEVEN;为;为1转移转移10微机原理与接口技术精品课程10、条件转移指令、条件转移指令程序何往?程序何往?凭啥条件?凭啥条件?JZOPR测试条件测试条件:ZF=1,结果为零转移;,结果为零转移;JNZOPR测试条件测试条件:ZF=0,结果不为零转移;,结果不为零转移;JP
11、OPR测试条件测试条件:PF=1,奇偶位为,奇偶位为1转移;转移;JNPOPR测试条件测试条件:PF=0,奇偶位为,奇偶位为0转移;转移;JCOPR测试条件测试条件:CF=1,有借位(进位)转移;,有借位(进位)转移;条件转移指令的应用举例:条件转移指令的应用举例:MOVCX,30MOVBX,0AGAIN:INCBXDECCXJNZAGAINMOVAX,BX11、循环指令循环指令LOOPMOVCX,30MOVBX,0AGAIN:INCBXLOOPAGAINMOVAX,BX11微机原理与接口技术精品课程12.比较指令比较指令CMPop1,op2;op1op2有借位吗?有借位吗?执行后只改变借位标
12、志执行后只改变借位标志注:注:op1是寄存器是寄存器,op2是立即数或存储器单元;是立即数或存储器单元;此指令要配合条件转移指令使用。此指令要配合条件转移指令使用。例:例:1x2为两个字节单元,请按由小到大顺序放入为两个字节单元,请按由小到大顺序放入y1y2字节单元。字节单元。编程:编程:moval,x1cmpal,x2jcminmovy2,al;如减法指令为;如减法指令为SUB,将出错!,将出错!movy1,x2endd:movah,4chint21h;返回返回DOSmin:movy1,almovy2,x2jmpendd;无条件转移无条件转移作业:请按由大到小顺序放入作业:请按由大到小顺序放
13、入y1y2字节单元。字节单元。12微机原理与接口技术精品课程12、子程序的调用与返回指令、子程序的调用与返回指令CALL调用指令调用指令RET返回指令返回指令14、中断的调用与返回指令、中断的调用与返回指令INTN调用指令调用指令,N为中断号为中断号IRET从中断服务子程序中返回指令从中断服务子程序中返回指令注意:这里是软件中断的调用注意:这里是软件中断的调用但无论是怎么进入的中断服务子程序,子程序但无论是怎么进入的中断服务子程序,子程序的最后结束句必须是的最后结束句必须是IRET13微机原理与接口技术精品课程常用伪指令:常用伪指令:1、等值伪指令、等值伪指令:EQUmmequ562、定义数据的伪指令:、定义数据的伪指令:DB,DW它们分别定义:它们分别定义:1个字节、个字节、2个字节个字节ABCDB39,250,?,0,?;定义字节单元;定义字节单元DEFDW983,2358,?,?;定义字单元(像数组);定义字单元(像数组)3、地址计数器:、地址计数器:$arraydb32,43,56,8,65countequ$-array4、段定义伪指令:、段定义伪指令:SEGMENTENDS段名段名SEGMENT.段名段名ENDS14