指令系统及汇编语言.ppt
《指令系统及汇编语言.ppt》由会员分享,可在线阅读,更多相关《指令系统及汇编语言.ppt(305页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第三章第三章 8086 8086指令系统及汇编语言指令系统及汇编语言 本章节知识点:1)8086微处理器的各种寻址方式2)数据传送指令3)算术运算指令4)逻辑运算与移位指令5)串操作指令6)转移指令7)8086汇编语言程序基本格式8)8086汇编语言程序设计方法本章学习的主要内容及要求本章学习的主要内容及要求1 1、掌握、掌握80868086汇编语言的各种寻址方式的特点、功能和汇编语言的各种寻址方式的特点、功能和基本格式;基本格式;2 2、掌握、掌握80868086汇编语言各指令功能,指令执行后对目的汇编语言各指令功能,指令执行后对目的操作数和标志位的影响;操作数和标志位的影响;3 3、掌握源
2、操作数的物理地址的计算方法;、掌握源操作数的物理地址的计算方法;4 4、掌握、掌握80868086汇编语言各指令的语法格式;汇编语言各指令的语法格式;5 5、掌握汇编语言的程序设计中子程序、中断服务子程、掌握汇编语言的程序设计中子程序、中断服务子程序之间的差异;序之间的差异;6 6、掌握段定义中宏指令的使用方法;、掌握段定义中宏指令的使用方法;7 7、掌握应用汇编语言编写应用程序的基本设计方法;、掌握应用汇编语言编写应用程序的基本设计方法;本章难点:本章难点:1、段地址与源操作数之间的关系;2、各寻址方式之间的差异;3、指令执行后对标志位的影响;4、指令与控制信号之间的联系;5、汇编语言编写应
3、用程序的基本设计方法;本章的学习方法:课前认真预习,课后请认真复习并请多看课本和参考书中的习题与练习题。问题的提出问题的提出:什么是软件?为什么计算机的运行必须依靠软件来完成?软件都有那些形式?什么是汇编语言?软件:能控制计算机完成指定工作软件:能控制计算机完成指定工作任务的二进制代码集,这个代码集任务的二进制代码集,这个代码集称为机器指令或机器语言。软件有称为机器指令或机器语言。软件有很多种形式,如常用的高级语言很多种形式,如常用的高级语言(C C、C+C+等),所有的高级语言编等),所有的高级语言编写的程序最终都必须被解译为机器写的程序最终都必须被解译为机器指令(有序的二进制代码集),因指
4、令(有序的二进制代码集),因为计算机只能接受二进制代码。为计算机只能接受二进制代码。10100000000101110000010000001010101000100001100010H11H12H13H14H15H16HMOVAL,(n)nADDAL,OAH0AHMOV(n),ALn存储器地址号汇编语言二进制机器指令图3-1机器指令、汇编语言的区别汇编语言:是一种将机器语言按其特定的功能符号化,使其便于记忆和理解的计算机语言。名称助记符操作码说明立即数取入累加器MOVAL,n 1011000B0HnnH两字节指令,把第二个字节的立即数n送累加器AL。加立即数 ADDAL,n000001000
5、4HnnH两字节指令,累加器AL中的内容与第二字节立即数相加,结果在AL中。还有单字节、3或4字节指令,字节越高,运行机器周期越大。每一条指令都有固定的操作码,计算机就是靠辩识操作码来实现各种不同的运算功能。(请参看实验指导书中的有关程序)指令的组成指令的组成操作码操作码:说明计算机要执行哪种操作,如传送、运算、说明计算机要执行哪种操作,如传送、运算、等操作,它是指令中不可缺少的组成部分等操作,它是指令中不可缺少的组成部分操作数操作数:是指令执行的参与者,即各种操作的对象是指令执行的参与者,即各种操作的对象有些指令不需要操作数,通常的指令都有一个或两个有些指令不需要操作数,通常的指令都有一个或
6、两个操作数,也有个别指令有操作数,也有个别指令有3 3个甚至个甚至4 4个操作数有些指令个操作数有些指令隐含隐含操作数。操作数。操作码操作码操作数操作数指令由操作码和操作数两部分组成例:MOVAX,CX;将CX的内容送入AX中。目的目的操作数操作数源源操作数操作数操作码操作码双操作数双操作数指令的助记符格式指令的助记符格式操作数操作数2 2,被称为,被称为源操作数源操作数srcsrc,它表示参与指令操作,它表示参与指令操作的一个对象的一个对象.操作数操作数1 1,被称为,被称为目的操作数目的操作数dstdst,它不仅可以作为指,它不仅可以作为指令操作的一个对象,还可以用来存放指令操作的结果令操
7、作的一个对象,还可以用来存放指令操作的结果.分号后的内容是对指令的解释分号后的内容是对指令的解释 操作码操作码 操作数操作数1,操作数操作数2 ;注释;注释指令的操作码和操作数指令的操作码和操作数每种指令的每种指令的操作码操作码用一个助记符表示(指令功能的英文缩写)用一个助记符表示(指令功能的英文缩写)对应着机器指令的一个或多个二进制编码对应着机器指令的一个或多个二进制编码指令中的指令中的操作数操作数可以是一个具体的数值可以是一个具体的数值可以是存放数据的寄存器可以是存放数据的寄存器或指明存放数据的存储器地址或指明存放数据的存储器地址 操作码操作码 操作数操作数1,操作数操作数2 ;注释;注释
8、寻址与寻址方式寻址与寻址方式指令系统设计了多种操作数的来源指令系统设计了多种操作数的来源寻找操作数的过程就是操作数的寻找操作数的过程就是操作数的寻址寻址把寻找操作数的方式叫做操作数的把寻找操作数的方式叫做操作数的寻址方式寻址方式理解操作数的寻址方式是理解指令功能的前提理解操作数的寻址方式是理解指令功能的前提操作数采取哪一种寻址方式操作数采取哪一种寻址方式1)会影响处理器执行指令的速度和效率2)对程序设计也很重要3.1 8086/80883.1 8086/8088的寻址方式的寻址方式操作数的来源操作数的来源指指 令令寄寄 存存 器器内内 存存I/O设备或端口设备或端口操作数操作数指令中的操作数指
9、令中的操作数直接存放在机器代码中,紧跟在操作直接存放在机器代码中,紧跟在操作码之后码之后(操作数作为指令的一部分存放在操作码之后(操作数作为指令的一部分存放在操作码之后的主存单元中)的主存单元中),这种操作数被称为这种操作数被称为立即数立即数immimm。可以是8位数值(00HFFH)也可以是16位数值(0000HFFFFH)立即数寻址方式常用来给立即数寻址方式常用来给寄存器寄存器赋值赋值MOV AX,0102HMOV AX,0102H;AX0102HAX0102HMOV AL,02HMOV AL,02H;AL02HAL02H3.1.1 3.1.1 操作数的寻址方式操作数的寻址方式1、立即寻址
10、、立即寻址 格式格式:操作码操作码 数字表达式数字表达式MOVAX,F58AH;(字操作)F58AH称为立即数助记符目的源(16位操作数)H表示为十六进制数dstsrc完成的操作:AXF58AHMOVAH,F5H(字节操作)F5H称为立即数(8位操作数)MOVAL,8AH(字节操作)8AH称为立即数完成的操作:AHF5H,AL8AH立即寻址操作过程示意如图3-2 3456H3457HAL=8A 字寻址方式存储器CS段8AF5操作码AL=8A AH=F5存储器CS段8AF5操作码AH=F5操作码字节寻址方式代码段内取数注意取数据的地址顺序MOV AX,F58AHMOV AH,F5HMOV AL,
11、8AH指令对立即数格式的要求指令对立即数格式的要求8086/8088指令对立即数的格式有三种:1)立即数可以是16进制的数 MOV AL,57H2)立即数可以是10进制的数,但指令运行后CPU自动把10进制数转换为16进制数,然后完成给定功能的操作。MOV AL,57;指令执行后将AL 39H 3)立即数可以是2进制的数 MOV AL,01010111B ;指令执行后将AL 57H 为十进制数时,数后不加H,2进制数时,数后加B,CPU以此来辨别是那种类型的数据。2 2、直接寻址方式直接寻址方式直接寻址方式的有效地址在指令中直接给出,直接寻址方式的有效地址在指令中直接给出,默认的默认的段地址在
12、段地址在DSDS段寄存器段寄存器,可使用,可使用段超越前缀段超越前缀改变段。改变段。中括号包含有效地址,表达存储单元的内容中括号包含有效地址,表达存储单元的内容MOV AX,2000H;AXDS:2000HMOV AX,ES:2000H;AXES:2000HMOV AX,BUFFER;BUFFER:符号地址:符号地址指令格式指令格式:操作码操作码 寄存器(寄存器(16位)位),地址表达式地址表达式直接寻址方式的操作数的16位偏移地址(有直接地址值和标号两种形式)直接包含在指令中,它与操作码一起存放在代码段中的操作码之后。段地址DS隐含,也可指定其它段,必须需在指令中指明。存储器物理地址地址为:
13、存储器物理地址地址为:DSDS:偏移地址:偏移地址 或或 ES ES:偏移地址。:偏移地址。例:MOVAX,ES:2000H(读数据读数据,RD线为低电平线为低电平)将ES:2000H单元内容送入AX。例:MOVAX,LABLE或MOVAX,LABEL将标号为LABLE(存放操作数单元的符号地址),即DS:LABLE中的内容送入AX。LABLE必须在段定义中指明。例:MOVAX,(2000H);字操作 其过程如图3.3所示。指令中的16位段内偏移地址的低字节在前,高字节在后。MOVAL,(2000H);字节操作 MOVAH,(2001H);字节操作 此两条指令的功能与字操作指令的功能相同!16
14、位段内偏移地址直接包含在指令中图3-3直接寻址存储器DS段8AF5XXAL=8A AH=F5存储器CS段操作码代码段数据段0020DS:2000DS:2001字寻址方式存储器DS段8AF5XXAL=8A AH=F5存储器CS段操作码代码段数据段0020DS:2000DS:2001字寻址方式操作码0120MOV AX,(2000H)MOV AL,(2000H)MOV AH,(2001H)注意数据段与代码段的用法!3、寄存器寻址方式、寄存器寻址方式操作数存放在操作数存放在CPUCPU的内部寄存器的内部寄存器regreg中中1 1)8 8 位寄存器位寄存器r8r8:AHAH、ALAL、BHBH、BL
15、BL、CHCH、CLCL、DHDH、DLDL2 2)16 16 位寄存器位寄存器r16r16:AXAX、BXBX、CXCX、DXDX、SISI、DIDI、BPBP、SPSP3 3)4 4个段寄存器个段寄存器segseg:CSCS、DSDS、SSSS、ESES寄存器名表示其内容(操作数)寄存器名表示其内容(操作数)MOV AX,BX;AXBX格式格式:操作码操作码 寄存器寄存器,寄存器寄存器例如:MOV AX,BX;AX BX MOV BX,AX;BX AX MOV AL,BH;AL BH MOV AH,AL;AH AL MOV DS,AX;DS AX MOV SI,AX;SI AX注意注意:目
16、的和源寄存器的目的和源寄存器的 位数必须相同,位数必须相同,不同不同 位数寄位数寄存器之间不能传送数据处理存器之间不能传送数据处理 如:如:MOV BX MOV BX,AHAH如果要将数据送入段寄存器(CS、DS、ES、SS),必须先将这个数送入一个非段寄存器,然后在送到段寄存器段寄存器写入方法:MOV CS,3000H ;错!MOV AX,3000H;(该指令不影响RD和WR控制线均为高电;平)MOV CS,AX ;正确(在使用中不允许随便修改CS的内容!)MOV SS,1000H ;处理错!MOV DI,1000H MOV SS,DI ;正确,(该指令不影响RD和WR控制线均为高电;平)4
17、 4、寄存器间接寻址方式寄存器间接寻址方式有效地址存放在基址寄存器有效地址存放在基址寄存器BXBX、BPBP或变址寄存器或变址寄存器SISI、DIDI中;中;对于对于BXBX、SISI、DIDI,默认的默认的段地址在段地址在DSDS段寄存器,段寄存器,可使用段超越前缀改变;可使用段超越前缀改变;对于对于BPBP,默认的默认的段地址在段地址在SSSS段寄存器,可使用段超越前缀改变段寄存器,可使用段超越前缀改变MOV AX,BX;AXDS:BXMOV AX,ES:BX;AXES:BXMOV AH,DS:BPMOV ES:DI,AL格式格式:操作码操作码 寄存器寄存器,(寄存器寄存器)注意注意:寄存
18、器间接寻址要用方括号或圆号括起来,以便寄存器间接寻址要用方括号或圆号括起来,以便与寄存器操作数相区别。与寄存器操作数相区别。例:MOVAX,BX;将由BX决定的存储单元的内容送到AX寄存器,要求对要求对BX事前定义事前定义。间接寻址间接寻址AX0000000100020003BBAATAB:AH AL AA BB数据段数据段0001HBX=操作数在存储器中,指令中寄存器内容作为操作数所在操作数在存储器中,指令中寄存器内容作为操作数所在单元的有效地址。单元的有效地址。(BX)(SI)(DI)(BP)段寄存器为段寄存器为DS段寄存器为段寄存器为SS物理地址计算方法:物理地址计算方法:物理地址物理地
19、址 =(DS)16 +(BX)或()或(SI)或()或(DI)物理地址物理地址 =(SS)16 +(BP)有效地址有效地址=例:已知:(DS)=2100H,(DI)=2000H 指令:MOV AX,DI;(AX)(DI)物理地址=(DS)16+(DI)=2100H 16+2000H =21000H+2000H =23000H 指令结果:将23000H单元内容送AL中,将23001H单元内容送AH中。指令:MOV AX,DI 为字操作(16位操作)例:已知:(DS)=2100H,(DI)=2000H指令:MOV AL,DI;(AL)(DI)物理地址=(DS)16+(DI)=2100H16+200
20、0H =21000H+2000H =23000H 指令结果:将23000H单元内容送AL中,指令:MOV AL,DI;字节操作(8位操作)例:MOV AX,SI;SI中的内容为要取数的偏移地址,假设在执行本条指令前SI=1000H,DS=2000H其过程如图3-4(a)所示。图3-4(A)寄存器间接寻址.21000H21001HAHAL+100021000DS 2000.SIXXYY数据段数据段XXYY操作码操作码 代码段代码段注意:程序(指令在代码段),要操作的数据在数据段!图3-4(B)寄存器间接寻址例:MOVAX,BP;BP中的内容为要取数的偏移地址假设在执行本条指令前BP=2000H,
21、SS=3000H其过程如图3-4(b)所示。注意:是在堆栈段取数据注意:程序(指令)在代码段,要操作的数据在堆栈段!操作数.32000H32001HAHAL+200032000SS 3000.BP堆栈段堆栈段代码段代码段5 5、寄存器相对寻址方式寄存器相对寻址方式有效地址有效地址是寄存器内容与有符号是寄存器内容与有符号8 8位或位或1616位位移量之位位移量之和,寄存器可以是和,寄存器可以是BXBX、BPBP或或SISI、DIDI有效地址有效地址BX/BP/SI/DIBX/BP/SI/DI8/168/16位偏移量位偏移量段地址对应段地址对应BX/SI/DIBX/SI/DI寄存器寄存器默认是默认
22、是DSDS,对应,对应BPBP寄存器寄存器默认是默认是SSSS;可用段超越前缀改变;可用段超越前缀改变MOV AX,SI+06H;AXDS:SI+06HMOV AX,06HSI;AXDS:SI+06H格式格式:操作码操作码 寄存器,相对值寄存器,相对值DISP+基址或变址寄存器基址或变址寄存器 操作数在存储器内,指令中寄存器内容与指令指定的位移量(相对值DISP)之和作为操作数所在单元的有效地址。物理地址=(DS)16+(BX)+DISP;(SI)、(DI)相同。物理地址=(SS)16+(BP)+DISPDISP可以是16位,也可以是8位,DISP是一个数值的代号!有效地址有效地址=段寄存器为
23、段寄存器为DS段寄存器为段寄存器为SS+(BX)(SI)(DI)(BP)DISPDISPDISP DISP例:如果(DS)=3000H,(SI)=2000H,COUNT=3000H 执行指令 MOV AX,CONUTSI,求出此种寻址方式对应的有效地址和物理地址。有效地址=(SI)+(COUNT)=2000H+3000H=5000H物理地址=(DS)*16+5000H=30000H+5000H=35000H 例:MOV AX,DISPSI;DISP为相对地址偏移量或写为:MOV AX,10SI ;DISP为地址符号 MOV AX,SI10H ;DISP DB 10H MOV AX,SI+10H
24、 ;DISP可以为有符号的数 其过程如图4.5所示。图3-5寄存器相对寻址例:MOV AX,DISPSI操作数00H20H.33000H33001HAHAL100033000DS30002000SIDISP+6 6、基址变址寻址方式基址变址寻址方式有效地址有效地址由基址寄存器(由基址寄存器(BXBX或或BPBP)的内容加上变址)的内容加上变址寄存器(寄存器(SISI或或DIDI)的内容构成:)的内容构成:有效地址有效地址BX/BPBX/BPSI/DISI/DI段地址对应段地址对应BXBX基址寄存器基址寄存器默认是默认是DSDS,对应,对应BPBP基址寄基址寄存器存器默认是默认是SSSS;可用段
25、超越前缀改变;可用段超越前缀改变MOV AX,BX+SI;AXDS:BX+SIMOV AX,BXSI;AXDS:BX+SI格式格式:操作码操作码 寄存器,(基址寄存器)寄存器,(基址寄存器)+(变址寄存器)(变址寄存器)物理地址物理地址=(DS)16 +(BX)+(SI)或()或(DI)物理地址物理地址=(SS)16 +(BP)+(SI)或()或(DI)例:MOVAX,BX+DI或MOVAX,BXDIDS:(BX)+(DI)存储单元内容(字字)送AX。例:MOVAX,BP+SI或MOVAX,BPSISS:(BP)+(SI)存储单元内容(字)(字)送AX。(BX)(BP)有效地址有效地址=+(S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 指令系统 汇编语言
限制150内