您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 其它行业文档 > 第04章 80x86微处理器的指令系统
西北第二民族学院电信系自动化教研室第四章8086指令系统及汇编语言本章节知识点:1)8086微处理器的各种寻址方式2)数据传送指令3)算术运算指令4)逻辑运算与移位指令5)串操作指令6)转移指令7)8086汇编语言程序基本格式8)8086汇编语言程序设计方法西北第二民族学院电信系自动化教研室本章学习的主要内容及要求1、掌握8086汇编语言的各种寻址方式的特点、功能和基本格式;2、掌握8086汇编语言各指令功能,指令执行后对目的操作数和标志位的影响;3、掌握源操作数的物理地址的计算方法;4、掌握8086汇编语言各指令的语法格式;5、掌握汇编语言的程序设计中子程序、中断服务子程序之间的差异;6、掌握段定义中宏指令的使用方法;7、掌握应用汇编语言编写应用程序的基本设计方法;西北第二民族学院电信系自动化教研室本章难点:1、段地址与源操作数之间的关系;2、各寻址方式之间的差异;3、指令执行后对标志位的影响;4、指令与控制信号之间的联系;4、汇编语言编写应用程序的基本设计方法;本章的学习方法:课前认真预习,课后请认真复习并请多看课本和参考书中的习题与练习题。西北第二民族学院电信系自动化教研室问题的提出:什么是软件?为什么计算机的运行必须依靠软件来完成?软件都有那些形式?什么是汇编语言?软件:能控制计算机完成指定工作任务的二进制代码集,这个代码集称为机器指令或机器语言。软件有很多种形式,如常用的高级语言(C、C++等),所有的高级语言编写的程序最终都必须被解译为机器指令(有序的二进制代码集),因为计算机只能接受二进制代码。10100000000101110000010000001010101000100001100010H11H12H13H14H15H16HMOVAL,(n)nADDAL,OAH0AHMOV(n),ALn存储器地址号汇编语言二进制机器指令图4-1机器指令、汇编语言的区别西北第二民族学院电信系自动化教研室汇编语言:是一种将机器语言按其特定的功能符号化,使其便于记忆和理解的计算机语言。名称助记符操作码说明立即数取入累加器MOVAL,n1011000B0HnnH两字节指令,把第二个字节的立即数n送累加器AL。加立即数ADDAL,n0000010004HnnH两字节指令,累加器AL中的内容与第二字节立即数相加,结果在AL中。还有单字节、3或4字节指令,字节越高,运行机器周期越大。每一条指令都有固定的操作码,计算机就是靠辩识操作码来实现各种不同的运算功能。(请参看实验指导书中的有关程序)西北第二民族学院电信系自动化教研室4.18086/8088的寻址方式本节主要介绍8086/8088的指令系统以及在指令中为取得操作数地址所使用的寻址方式。汇编指令:操作码:说明该指令要完成的操作操作数:指令所需操作数或操作数的地址;操作数可以有一个,也可以有两个,一个源操作数,一个目的操作数。例:MOVAX,CX;将CX的内容送入AX中。操作码操作数目的操作数源操作数操作码双操作数西北第二民族学院电信系自动化教研室4.1.1操作数的寻址方式8086/8088指令中说明操作数所在地址的寻址方式有以下8种:1、立即寻址格式:操作码数字表达式立即寻址方式所提供的操作数直接包含在指令中。它紧跟在操作码(XX)的后面,与操作码一起放在代码段区域中。MOVAX,F58AH;(字操作)F58AH称为立即数助记符目的源(16位操作数)H表示为十六进制数dst(distance)src(source)完成的操作:AXF58AHMOVAH,F5H(字节操作)F5H称为立即数(8位操作数)MOVAL,8AH(字节操作)8AH称为立即数完成的操作:AHF5H,AL8AH西北第二民族学院电信系自动化教研室立即寻址操作过程示意如图4-13456H3457HAL=8A字寻址方式存储器CS段8AF5操作码AL=8AAH=F5存储器CS段8AF5操作码AH=F5操作码字节寻址方式代码段内取数注意取数据的地址顺序MOVAX,F58AHMOVAH,F5HMOVAL,8AH西北第二民族学院电信系自动化教研室指令对立即数格式的要求8086/8088指令对立即数的格式有三种:1)立即数可以是16进制的数MOVAL,57H2)立即数可以是10进制的数,但指令运行后CPU自动把10进制数转换为16进制数,然后完成给定功能的操作。MOVAL,57;指令执行后将AL39H3)立即数可以是2进制的数MOVAL,01010111B;指令执行后将AL57H为十进制数时,数后不加H,2进制数时,数后加B,CPU以此来辨别是那种类型的数据。西北第二民族学院电信系自动化教研室2.直接寻址格式:操作码寄存器,地址表达式直接寻址方式的操作数的16位偏移地址(有直接地址值和标号两种形式)直接包含在指令中,它与操作码一起存放在代码段中的操作码之后,但操作数一般存放在存储器的数据段中,所以必须先求出操作数的物理地址,然后再访问存储器才能取得操作数。段地址DS隐含,也可指定ES段,但必须需在指令中指明。最后存储器地址为:DS:偏移地址或ES:偏移地址。例:MOVAX,ES:[2000H](读数据,RD线为低电平)将ES:2000H单元内容送入AX。例:MOVAX,LABLE或MOVAX,[LABEL]将标号为LABLE(存放操作数单元的符号地址),即DS:LABLE中的内容送入AX。LABLE必须在段定义中指明。西北第二民族学院电信系自动化教研室例:MOVAX,(2000H);字操作其过程如图4.2所示。指令中的16位段内偏移地址的低字节在前,高字节在后。MOVAL,(2000H);字节操作MOVAH,(2001H);字节操作此两条指令的功能与字操作指令的功能相同!16位段内偏移地址直接包含在指令中西北第二民族学院电信系自动化教研室图4.2直接寻址存储器DS段8AF5XXAL=8AAH=F5存储器CS段操作码代码段数据段0020DS:2000DS:2001字寻址方式存储器DS段8AF5XXAL=8AAH=F5存储器CS段操作码代码段数据段0020DS:2000DS:2001字寻址方式操作码0120MOVAX,(2000H)MOVAL,(2000H)MOVAH,(2001H)注意数据段与代码段的用法!西北第二民族学院电信系自动化教研室3.寄存器寻址格式:操作码寄存器,寄存器操作数是CPU内部寄存器中的值,指令中直接使用寄存器名,包括8位或16位通用寄存器和段寄存器。AX、BX、CX、DX、SI、DI、SP、BP;其中:AX、BX、CX、DX可分成两8位使用。例如:MOVAX,BX;AXBXMOVAL,BH;ALBHMOVBX,AX;BXAXMOVAH,AL;AHALMOVDS,AX;DSAXMOVSI,AX;SIAX注意:目的和源寄存器的位数必须相同,不同位数寄存器之间不能传送数据处理如:MOVBX,AH如果要将数据送入段寄存器(CS、DS、ES、SS),必须先将这个数送入一个非段寄存器,然后在送到段寄存器西北第二民族学院电信系自动化教研室段寄存器写入方法:MOVCS,3000H;错!MOVAX,3000H;(该指令不影响RD和WR控制线均为高电;平)MOVCS,AX;正确(在使用中不允许随便修改CS的内容!)MOVSS,1000H;处理错!MOVDI,1000HMOVSS,DI;正确,(该指令不影响RD和WR控制线均为高电;平)西北第二民族学院电信系自动化教研室4.寄存器间接寻址格式:操作码寄存器,(寄存器)在寄存器间接寻址方式中,操作数存放在存贮器中,操作数的16位段内偏移地址放在SI、DI、BP、BX这4个寄存器中之一。由于上述4个寄存器所默认的段寄存器不同,这样又可以分成两种情况:①若以SI、DI、BX进行间接寻址,则操作数通常存放在现行数据段中,物理地址为:DS:(SI)或(BX)或(DI)。②若以寄存器BP间接寻址,则操作数存放在堆栈段区域中,物理地址为:SS:(BP)。注意:助记符指令汇编时括号()内的数据表示为取数或存数的地址偏移量。西北第二民族学院电信系自动化教研室注意:寄存器间接寻址要用方括号或圆号括起来,以便与寄存器操作数相区别。例:MOVAX,(BX);将由BX决定的存储单元的内容送到AX寄存器,要求对BX事前定义。间接寻址AX0000000100020003BBAATAB:AHALAABB数据段0001HBX=西北第二民族学院电信系自动化教研室操作数在存储器中,指令中寄存器内容作为操作数所在单元的有效地址。(BX)(SI)(DI)(BP)段寄存器为DS段寄存器为SS物理地址计算方法:物理地址=(DS)×16+(BX)或(SI)或(DI)物理地址=(SS)×16+(BP)有效地址=西北第二民族学院电信系自动化教研室例:已知:(DS)=2100H,(DI)=2000H指令:MOVAX,[DI];(AX)((DI))物理地址=(DS)×16+(DI)=2100H×16+2000H=21000H+2000H=23000H指令结果:将23000H单元内容送AL中,将23001H单元内容送AH中。指令:MOVAX,[DI]为字操作(16位操作)西北第二民族学院电信系自动化教研室例:已知:(DS)=2100H,(DI)=2000H指令:MOVAL,[DI];(AL)((DI))物理地址=(DS)×16+(DI)=2100H×16+2000H=21000H+2000H=23000H指令结果:将23000H单元内容送AL中,指令:MOVAL,[DI];字节操作(8位操作)西北第二民族学院电信系自动化教研室例:MOVAX,[SI];SI中的内容为要取数的偏移地址,假设在执行本条指令前SI=1000H,DS=2000H其过程如图4.4(a)所示。图4.4(A)寄存器间接寻址........21000H21001HAHAL+100021000DS2000..SIXXYY数据段XXYY操作码代码段注意:程序(指令在代码段),要操作的数据在数据段!西北第二民族学院电信系自动化教研室图4.4(B)寄存器间接寻址例:MOVAX,[BP];BP中的内容为要取数的偏移地址假设在执行本条指令前BP=2000H,SS=3000H其过程如图4.4(b)所示。注意:是在堆栈段取数据注意:程序(指令)在代码段,要操作的数据在堆栈段!操作数........32000H32001HAHAL+200032000SS3000..BP堆栈段代码段西北第二民族学院电信系自动化教研室5、寄存器相对寻址方式格式:操作码寄存器,相对值DISP+基址或变址寄存器操作数在存储器内,指令中寄存器内容与指令指定的位移量(相对值DISP)之和作为操作数所在单元的有效地址。物理地址=(DS)×16+(BX)+DISP;(SI)、(DI)相同。物理地址=(SS)×16+(BP)+DISPDISP可以是16位,也可以是8位,DISP是一个数值的代号!有效地址=段寄存器为DS段寄存器为SS+(BX)(SI)(DI)(BP)DISPDISPDISPDISP西北第二民族学院电信系自动化教研室例:如果(DS)=3000H,(SI)=2000H,COUNT=3000H执行指令MOVAX,CONUT[SI],求出此种寻址方式对应的有效地址和物理地址。有效地址=(SI)+(COUNT)=2000H+3000H=5000H物理地址=(DS)*16+5000H=30000H+5000H=35000H例:MOVAX,DISP[SI];DISP为相对地址偏移量或写为:MOVAX,10[SI];DISP为地址符号MOVAX,[SI]10;DISPDB10MOVAX,[SI+10];DISP可以为有符号的数其过程如图4.5所示。西北第二民族学院电信系自动化教研室图4.5寄存器相对寻址例:MOVAX,DISP[SI]操作数00H20H......33000H33001HAHAL100033000DS30002000SIDISP+西北第二民族学院电信系自动化教研室书中P48例3-11TABLE
本文标题:第04章 80x86微处理器的指令系统
链接地址:https://www.777doc.com/doc-3357270 .html