指令系统及寻址方式.ppt

上传人:wuy****n92 文档编号:80414868 上传时间:2023-03-23 格式:PPT 页数:103 大小:551.50KB
返回 下载 相关 举报
指令系统及寻址方式.ppt_第1页
第1页 / 共103页
指令系统及寻址方式.ppt_第2页
第2页 / 共103页
点击查看更多>>
资源描述

《指令系统及寻址方式.ppt》由会员分享,可在线阅读,更多相关《指令系统及寻址方式.ppt(103页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、微机原理与汇编语言微机原理与汇编语言第第4章章8086指令系统及寻址方式指令系统及寻址方式4.1汇编语言的基本概念汇编语言的基本概念4.2寻址方式寻址方式4.3指令集指令集4.4伪指令伪指令4.5表达式与操作符表达式与操作符第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.1汇编语言的基本概念汇编语言的基本概念v计算机语言的发展计算机语言的发展机器语言机器语言FORTRANFORTRANBASICBASICCOBOLCOBOLPASCALPASCALC/C+C/C+JAVAJAVA.汇编语言汇编语言高级语言高级语言#include stdafx.h#

2、include stdio.h int main(int argc,char*argv)int a,b,c;a=1;b=2;c=a+b;printf(c=%dn,c);return 0;例例例例1 1 1 1 编程实现编程实现编程实现编程实现 c=a+b c=a+b c=a+b c=a+b,并在屏幕上显示出结果,并在屏幕上显示出结果,并在屏幕上显示出结果,并在屏幕上显示出结果。编译后的目标文编译后的目标文件达到件达到3.59KB3.59KBdatasegmentadb?bdb?cdb?stringdbc=$dataendscodesegmentmainprocfarassumecs:code,

3、ds:data,es:datastart:pushdssubax,axpushaxmovax,datamovds,axmoves,ax mova,1movb,2moval,aaddal,bmovc,alleadx,stringmovah,09int21haddc,30hmovdl,cmovah,2int21hmovdl,0ahint21hmovdl,0dhint21hretmainendpcodeendsendstart例例 2.C=a+b 2.C=a+b汇编后的目汇编后的目标文件只有标文件只有638638字节字节第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语

4、言基础4.1.1汇编语言的基本概念汇编语言的基本概念v机器语言机器语言w机器语言是机器指令的集合。机器语言是机器指令的集合。w机器指令展开来讲就是一台机器可以正机器指令展开来讲就是一台机器可以正确执行的命令。确执行的命令。指令:指令:01010000电平脉冲:电平脉冲:第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.1汇编语言的基本概念汇编语言的基本概念v机器语言机器语言w程序员们将程序员们将0、1数字编程的程序代码数字编程的程序代码打在纸带或卡片上,打在纸带或卡片上,1打孔,打孔,0不打孔,不打孔,再将程序通过纸带机或卡片机输入计算再将程序通过纸

5、带机或卡片机输入计算机,进行运算。机,进行运算。w示例示例用用8086CPU完成运算:完成运算:S=768+122881280第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.1汇编语言的基本概念汇编语言的基本概念v机器语言机器语言S=768+12288-1280w机器码:机器码:w假如将程序错写成以下这样,请找处错误:假如将程序错写成以下这样,请找处错误:第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.1汇编语言的基本概念汇编语言的基本概念v机器语言机器语言w在显示器上输出在显示器上输出“welcome

6、tomasm”。机器码机器码w看到这样的程序,你会有什么感想?看到这样的程序,你会有什么感想?w如果程序里有一个如果程序里有一个“1”被误写为被误写为“0”,又如何去查找呢?,又如何去查找呢?000111101011100000000000000000000101000010111000110001100000111110001110110110001011010000000110101100000000000010110111000001111011100100000000000000001011011000011000101100100100111111001101000100001011

7、010000000010101101110000000010110110000000001011001000000000110011010001000010110100000010011000110100010110001010100000000011001101001000011011010000001010100011010001011000110001000000001100110100100001101101000000011010110000000101001011011100011001101101010000101110110001000100111011011000001101

8、1011001000111100110011010001000011010100000000101101011100000000110100000000110011010010000101001100110100010000101101000000100110001101000101100000000000000000110011010010000111001011welcome to masm welcome to masm 机器码:机器码:第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.1汇编语言的基本概念汇编语言的基本概念v机器语言与汇编语言

9、机器语言与汇编语言w汇编语言的主体是汇编指令。汇编语言的主体是汇编指令。w汇编指令和机器指令的差别在于指令的表示汇编指令和机器指令的差别在于指令的表示方法上。汇编指令是机器指令便于记忆的书方法上。汇编指令是机器指令便于记忆的书写格式。写格式。w汇编指令是机器指令的助记符。汇编指令是机器指令的助记符。第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.1汇编语言的基本概念汇编语言的基本概念v机器语言与汇编语言机器语言与汇编语言w机器指令:机器指令:w操作:寄存器操作:寄存器BX的内容送到的内容送到AX中中w汇编指令:汇编指令:MOVAX,BXw这样的写法

10、与人类语言接近,便于阅读和这样的写法与人类语言接近,便于阅读和记忆。记忆。汇编语言的特点汇编语言的特点 面向机器的低级语言,通常是为特定的计算面向机器的低级语言,通常是为特定的计算 机或计算机系列机或计算机系列专门设计的。专门设计的。保持了机器语言的优点,具有直接和简捷保持了机器语言的优点,具有直接和简捷 的特点。的特点。可有效地访问、控制计算机的各种硬件设备可有效地访问、控制计算机的各种硬件设备,如磁盘、存储器、如磁盘、存储器、CPUCPU、I/OI/O端口等。端口等。目标代码简短,占用内存少,执行速度快,目标代码简短,占用内存少,执行速度快,是高效的程序设计语言。是高效的程序设计语言。经常

11、与高级语言配合使用,应用十分广泛经常与高级语言配合使用,应用十分广泛。汇编语言的应用汇编语言的应用系统程序、效率代码、系统程序、效率代码、I/OI/O驱动程序驱动程序 70%70%以上的系统软件是用汇编语言编写的。以上的系统软件是用汇编语言编写的。某些快速处理、位处理、访问硬件设备等某些快速处理、位处理、访问硬件设备等 高效程序是用汇编语言编写的。高效程序是用汇编语言编写的。高级绘图程序、视频游戏程序一般是用汇高级绘图程序、视频游戏程序一般是用汇 编语言编写的编语言编写的。第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.1汇编语言的基本概念汇编语言

12、的基本概念v机器语言与汇编语言机器语言与汇编语言w计算机能读懂的只有机器指令,那么如何计算机能读懂的只有机器指令,那么如何让计算机执行程序员用汇编指令编写的程让计算机执行程序员用汇编指令编写的程序呢?序呢?第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.2MASM汇编语言汇编语言vAssemblyLanguagevMASM是微软公司开发的汇编开发环境,拥是微软公司开发的汇编开发环境,拥有可视化的开发界面,使开发人员不必再使有可视化的开发界面,使开发人员不必再使用用DOS环境进行汇编的开发,编译速度快,环境进行汇编的开发,编译速度快,它与它与wind

13、ows平台的磨合程度非常好,但是平台的磨合程度非常好,但是在其他平台上就有所限制,使用在其他平台上就有所限制,使用MASM的开的开人员必须在人员必须在Windows下进行开发。下进行开发。vMASM版本至今在不断的更新,现有最高版版本至今在不断的更新,现有最高版本号为本号为MASM3212.0第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.3汇编语言语句格式汇编语言语句格式第第4章章 MASM汇编基础及上机汇编基础及上机4.1MASM汇编语言基础汇编语言基础4.1.4语句类别语句类别v汇编语言由以下汇编语言由以下3类组成:类组成:1、指令语句、指令

14、语句2、伪指令语句、伪指令语句3、宏指令语句、宏指令语句宏指令就是基本汇编指令的某种特定集合,这意味宏指令就是基本汇编指令的某种特定集合,这意味着一串复杂而常用的汇编指令往往可以化为一条简着一串复杂而常用的汇编指令往往可以化为一条简单易懂的宏指令。单易懂的宏指令。v汇编语言的核心是指令语句,它决定汇编语言的核心是指令语句,它决定了汇编语言的特性。了汇编语言的特性。第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.2寻址方式寻址方式操作数操作数v操作数:指令中的常数,代表常数的一个标识操作数:指令中的常数,代表常数的一个标识符或表达式,或者是存放操作数的地址。符或表达式,或者是存放操作

15、数的地址。w源操作数源操作数SRC:操作过程中保持不变:操作过程中保持不变,可使用累加器、可使用累加器、寄存器、存储单元和立即数寄存器、存储单元和立即数。w目的操作数目的操作数DST:操作后被源操作数替代,可使用:操作后被源操作数替代,可使用累加器、寄存器和存储单元累加器、寄存器和存储单元。w操作数操作数OPRD:可使用通用寄存器和存储单元。:可使用通用寄存器和存储单元。w操作数操作数Reg:必须是一个:必须是一个16位的通用寄存器位的通用寄存器w表达式是操作数中的一种,它是由常量、变量、寄表达式是操作数中的一种,它是由常量、变量、寄存器、标号与一些操作符相组合的序列,可以有数存器、标号与一些

16、操作符相组合的序列,可以有数值表达式和地址表达式两种值表达式和地址表达式两种第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.2寻址方式寻址方式w当数据存放在内存中的时候,我们可以用当数据存放在内存中的时候,我们可以用多种方式来给定这个内存单元的偏移地址,多种方式来给定这个内存单元的偏移地址,这种定位内存单元的方法一般被称为寻址这种定位内存单元的方法一般被称为寻址方式方式w操作数的寻址方式操作数的寻址方式v用确定操作数地址的方式找到操作数。用确定操作数地址的方式找到操作数。w立即寻址立即寻址w寄存器寻址寄存器寻址w存储器寻址存储器寻址第第4章章 8086指令系统及寻址方式指令系统及寻

17、址方式4.2寻址方式寻址方式1.立即寻址方式立即寻址方式v操作数直接存放在指令中,紧跟在操作码之后,它作为操作数直接存放在指令中,紧跟在操作码之后,它作为指令的一部分存放在代码段里,这种操作数成为立即数。指令的一部分存放在代码段里,这种操作数成为立即数。v立即寻址方式用来表示常数,经常用于给寄存器赋初值,立即寻址方式用来表示常数,经常用于给寄存器赋初值,并且只能用于源操作数字段,不能用于目的操作数字段,并且只能用于源操作数字段,不能用于目的操作数字段,且源操作数长度应与目的操作数长度一致。且源操作数长度应与目的操作数长度一致。MOVAX,3064H6 43 0AX第第4章章 8086指令系统及

18、寻址方式指令系统及寻址方式4.2寻址方式寻址方式2.寄存器寻址方式寄存器寻址方式v操作数在寄存器中,指令指定寄存器号。操作数在寄存器中,指令指定寄存器号。v这种寻址方式由于操作数就在寄存器中,不需要访问存这种寻址方式由于操作数就在寄存器中,不需要访问存储器来取得操作数,因而可以得到较高的运算速度。储器来取得操作数,因而可以得到较高的运算速度。MOVAX,BX指令执行前指令执行前(AX)=3046H,(BX)=1234H则指令执行后则指令执行后(AX)=1234H,(BX)=1234H第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.2寻址方式寻址方式3.存储器寻址方式存储器寻址方式v

19、操作数在存储器中,需通过不同的方式求得操作数的地操作数在存储器中,需通过不同的方式求得操作数的地址,从而获得操作数。址,从而获得操作数。v操作数的地址即为物理地址。操作数的地址即为物理地址。v寻址得到的地址为偏移地址。寻址得到的地址为偏移地址。直接寻址方式:直接寻址方式:MOVAX,2000H默认在默认在DS寄存器中,寄存器中,如果如果(DS)=3000H,则指令执行后则指令执行后(AX)=3050H5 03 0AX32000300003.存储器寻址方式存储器寻址方式第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.2寻址方式寻址方式v演示演示1、直接寻址直接寻址v演示演示2、寄存器

20、间接寻址寄存器间接寻址v演示演示3、寄存器相对寻址寄存器相对寻址v演示演示4、基址变址寻址基址变址寻址v演示演示5、相对基址变址寻址相对基址变址寻址第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集w不同机器的指令系统各不相同,但不同机器的指令系统各不相同,但是它们要执行的基本操作、寻址方是它们要执行的基本操作、寻址方式等,是共性的。式等,是共性的。v数据传送类指令数据传送类指令v程序控制类指令程序控制类指令v标志处理和标志处理和CPU控制类指令控制类指令v系统功能调用系统功能调用第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传

21、送类指令数据传送类指令1.数据通路与类型匹配数据通路与类型匹配(DSTSRC)w通用寄存器通用寄存器通用寄存器通用寄存器w通用寄存器通用寄存器段寄存器段寄存器w通用寄存器通用寄存器内存内存w通用寄存器通用寄存器立即数立即数w段寄存器段寄存器通用寄存器通用寄存器w段寄存器段寄存器内存内存w内存内存通用寄存器通用寄存器w内存内存段寄存器段寄存器w内存内存立即数立即数第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传送类指令数据传送类指令大多数指令必须遵守以下规则:大多数指令必须遵守以下规则:vSRC和和DST的类型必须匹配(的类型必须匹配(8位对位对8位,位

22、,16位位对对16位)位)v立即数不能作为立即数不能作为DST,立即数不能送段寄存器,立即数不能送段寄存器vSRC和和DST不能同时为内存操作数(串指令除不能同时为内存操作数(串指令除外)外)vSRC和和DST不能同时为段寄存器不能同时为段寄存器v段寄存器段寄存器CS不能作为不能作为DST第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传送类指令数据传送类指令1.MOV指令:传送指令指令:传送指令指令格式:指令格式:MOVDST,SRC指令功能:指令功能:DST(SRC)第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1

23、数据传送类指令数据传送类指令1.MOV指令:传送指令指令:传送指令表达方式:表达方式:(1)将数据直接送入寄存器。)将数据直接送入寄存器。MOVAX,20H(2)将一个寄存器中的内容送入另一个寄存器中。)将一个寄存器中的内容送入另一个寄存器中。MOVAX,BX(3)将一个内存单元中的内容送入一个寄存器。)将一个内存单元中的内容送入一个寄存器。MOVAX,1000H其中,其中,表示一个内存单元,表示一个内存单元,1000H表示内存单表示内存单元的偏移地址,段地址默认放在元的偏移地址,段地址默认放在DS中。中。(4)将一个寄存器中的内容送入一个内存单元。)将一个寄存器中的内容送入一个内存单元。MO

24、V1000H,BX(5)将一个段寄存器中的内容送入一个寄存器。)将一个段寄存器中的内容送入一个寄存器。MOVAX,DS第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传送类指令数据传送类指令2.XCHG指令:数据交换指令指令:数据交换指令指令格式:指令格式:XCHGOPR1,OPR2指令功能:指令功能:(OPR1)(OPR2)wOPR表示操作数。表示操作数。w不能同时都为内存操作数。不能同时都为内存操作数。w任何一个操作数都不能为段寄存器。任何一个操作数都不能为段寄存器。w任何一个操作数不能为立即数任何一个操作数不能为立即数。v通用寄存器之间的数据交换通

25、用寄存器之间的数据交换wXCHGDI,BXv通用寄存器与存储器之间的数据交换通用寄存器与存储器之间的数据交换wXCHGBYTE_VALUE,BL第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传送类指令数据传送类指令3.PUSH、POP、PUSHF和和POPF指令指令堆栈指令使用规则:堆栈指令使用规则:w堆栈处于堆栈段中,因而其段地址存放于堆栈处于堆栈段中,因而其段地址存放于SS寄存寄存器中。器中。w堆栈只有一个出口堆栈只有一个出口,所以只有一个堆栈指针寄存,所以只有一个堆栈指针寄存器器SP。SP总指向当前的栈顶。总指向当前的栈顶。w这四条堆栈指令只能做

26、字操作。这四条堆栈指令只能做字操作。wPUSH和和POP指令可以使用除立即数以外的其他寻指令可以使用除立即数以外的其他寻址方式。址方式。wPUSH和和POP指令可以指定段寄存器作为操作数,指令可以指定段寄存器作为操作数,但但POP指令不允许使用指令不允许使用CS寄存器。寄存器。w堆栈指令均不影响标志位。堆栈指令均不影响标志位。push、pop指令指令push和和pop指令是可以在寄存器和指令是可以在寄存器和内存内存之间传送数据之间传送数据的。的。栈空间当然也是内存空间的一部分,它只是一段可以栈空间当然也是内存空间的一部分,它只是一段可以以一种特殊的方式进行访问的内存空间。以一种特殊的方式进行访

27、问的内存空间。push和和pop指令的格式(指令的格式(1)push寄存器:将一个寄存器中的数据入栈寄存器:将一个寄存器中的数据入栈pop寄存器:出栈,用一个寄存器接收出栈的数据寄存器:出栈,用一个寄存器接收出栈的数据例如:例如:pushaxpopbxpush和和pop指令的格式(指令的格式(2)push段寄存器:将一个段寄存器中的数据入栈段寄存器:将一个段寄存器中的数据入栈pop段寄存器:出栈,用一个段寄存器接收出栈的数段寄存器:出栈,用一个段寄存器接收出栈的数据据例如:例如:pushdspopespush和和pop指令的格式(指令的格式(3)push内存单元:将一个内存单元处的字入栈(栈操

28、内存单元:将一个内存单元处的字入栈(栈操作都是以字为单位)作都是以字为单位)pop内存单元:出栈,用一个内存字单元接收出栈内存单元:出栈,用一个内存字单元接收出栈的数据的数据例如:例如:push0pop2指令执行时指令执行时,CPU要知道内存单元的地址,可以在要知道内存单元的地址,可以在push、pop指令中给出内存单元的偏移地址,段地指令中给出内存单元的偏移地址,段地址在指令执行时,址在指令执行时,CPU从从ds中取得。中取得。编程:编程:将将10000H1000FH这段空间当作栈,初始状态是空这段空间当作栈,初始状态是空的,将的,将AX、BX、DS中的数据入栈。中的数据入栈。编程:编程:(

29、1)将)将10000H1000FH这段空间当作栈,初始状态是空的;这段空间当作栈,初始状态是空的;(2)设置)设置AX=001AH,BX=001BH;(3)将)将AX、BX中的数据入栈;中的数据入栈;(4)然后将)然后将AX、BX清零;清零;(5)从栈中恢复)从栈中恢复AX、BX原来的内容。原来的内容。分析分析结论结论从上面的程序我们看到,用栈来暂存以后需要恢复的寄从上面的程序我们看到,用栈来暂存以后需要恢复的寄存器中的内容时存器中的内容时,出栈的顺序要和入栈的顺序相反,出栈的顺序要和入栈的顺序相反,因为最后入栈的寄存器的内容在栈顶因为最后入栈的寄存器的内容在栈顶,所以在恢复,所以在恢复时,要

30、最先出栈。时,要最先出栈。编程:编程:(1)将)将10000H1000FH这段空间当作栈,初始状态这段空间当作栈,初始状态是空的;是空的;(2)设置)设置AX=002AH,BX=002BH;(3)利用栈)利用栈,交换,交换AX和和BX中的数据。中的数据。push、pop指令指令我们如果要在我们如果要在10000H处写入字型数据处写入字型数据2266H,可以用以下的,可以用以下的代码完成:代码完成:movax,1000Hmovds,axmovax,2266Hmov0,ax补全下面的代码,完成同样的功能:补全下面的代码,完成同样的功能:在在10000H处写入字型数据处写入字型数据2266H。_mo

31、vax,2266Hpushax要求:不能使用要求:不能使用“mov内存单元内存单元,寄存器寄存器”这类指令这类指令问题分析问题分析我们看需补全代码的最后两条指令,将我们看需补全代码的最后两条指令,将ax中的中的2266H压入栈中,压入栈中,也就是说,最终应由也就是说,最终应由pushax将将2266H写入写入10000H处。处。问题的关键就在于:如何使问题的关键就在于:如何使pushax访问的内存单元是访问的内存单元是10000H。Push指令是入栈指令。(注意执行过程)指令是入栈指令。(注意执行过程)完成程序完成程序movax,1000Hmovss,axmovsp,0010Hmovax,22

32、66Hpushax问题分析(续)问题分析(续)结论结论push、pop实质上就是一种内存传送指令,可以在实质上就是一种内存传送指令,可以在寄存器和内存之间传送数据,与寄存器和内存之间传送数据,与mov指令不同的指令不同的是,是,push和和pop指令访问的内存单元的地址不是指令访问的内存单元的地址不是在指令中给出的,而是由在指令中给出的,而是由SS:SP指出的。指出的。同时,同时,push和和pop指令还要改变指令还要改变SP中的内容。中的内容。我们要十分清楚的是,我们要十分清楚的是,push和和pop指令同指令同mov指令不同,指令不同,CPU执行执行mov指令只需一步操作,就是传送,而执行

33、指令只需一步操作,就是传送,而执行push、pop指令却需要两步操作。指令却需要两步操作。执行执行push时:时:先改变先改变SP,后向,后向SS:SP处传送。处传送。执行执行pop时:时:先读取先读取SS:SP处的数据,后改变处的数据,后改变SP。注意注意push、pop等栈操作指令,修改的只是等栈操作指令,修改的只是SP。也就是说,。也就是说,栈顶的变化范围最大为:栈顶的变化范围最大为:0FFFFH。提供:提供:SS、SP指示栈顶;改变指示栈顶;改变SP后写内存的入栈指令;后写内存的入栈指令;读内存后改变读内存后改变SP的出栈指令。的出栈指令。这就是这就是8086CPU提供的栈操作机制。提

34、供的栈操作机制。第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传送类指令数据传送类指令4.LEA、LDS和和LES地址传送指令:地址传送指令:w把地址送到指定寄存器。把地址送到指定寄存器。wLEAreg,src;将源操作数的偏移地址送入将源操作数的偏移地址送入寄存器寄存器wLDSreg,src;将源操作数中的双字内容送将源操作数中的双字内容送入寄存器及段寄存器入寄存器及段寄存器DS中中wLESreg,src;将源操作数中的双字内容送将源操作数中的双字内容送入寄存器及段寄存器入寄存器及段寄存器ES中中地址传送类指令地址传送类指令装入有效地址指令装入有效地

35、址指令v格式:格式:LEADST,SRCv功能:将源操作数的有效地址传送到目标寄存器中功能:将源操作数的有效地址传送到目标寄存器中v说明:源操作数一定为存储器操作数,目的操作数为说明:源操作数一定为存储器操作数,目的操作数为16位通用寄存器。位通用寄存器。v例如:例如:LEABX,VALUEBX如果如果(BX)=2000H,VALUE的偏移地址为的偏移地址为1000H,则指令执行则指令执行后后(BX)=2000H+1000H=3000HEA=VALUE+(BX)=1000H+2000H=3000HBX0000H3000H34H12HDS:2000H地址传送类指令地址传送类指令装入地址指针指令装

36、入地址指针指令v格式:格式:LDSDST,SRCLESDST,SRCv功能:将段基值和偏移量分别送到功能:将段基值和偏移量分别送到DST和和SRCv说明:一个存储单元的逻辑地址是由说明:一个存储单元的逻辑地址是由16位段地址和位段地址和16位位偏移地址组成的,可用偏移地址组成的,可用4个存储单元存放,其中段地址存个存储单元存放,其中段地址存放在两个高字节单元,偏移地址存放在两个低字节单元。放在两个高字节单元,偏移地址存放在两个低字节单元。DS中存放段地址,中存放段地址,DST存放偏移地址。如果是存放偏移地址。如果是LES指令,指令,则段地址存放在则段地址存放在ES段寄存器中。段寄存器中。v例如

37、:例如:LDSAX,2000H,若,若(DS)=2000H,则指令执行后,则指令执行后,(DS)=5678H,(AX)=1234H。偏移量偏移量段基值段基值22000H34H12H78H56H偏移量偏移量段基值段基值32位地址指针位地址指针例:例:LEA BX,BX+SI+0F62H LDS SI,10H LES DI,BX40 H00 H00 H30 H TABLE(DS):1000HMOV BX,TABLE ;(BX)=0040HMOV BX,OFFSET TABLE ;(BX)=1000HLEA BX,TABLE ;(BX)=1000HLDS BX,TABLE ;(BX)=0040H ;

38、(DS)=3000HLES BX,TABLE ;(BX)=0040H ;(ES)=3000H注意注意:*不影响标志位不影响标志位 *REG 不能是段寄存器不能是段寄存器 *SRC 必须为存储器寻址方式必须为存储器寻址方式第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传送类指令数据传送类指令5.IN、OUT和和XLAT累加器专用传输指令:累加器专用传输指令:wOUT和和IN在汇编中是端口读写操作指令。在汇编中是端口读写操作指令。w端口是主机与外设进行数据交换使用的,分为数据端口,端口是主机与外设进行数据交换使用的,分为数据端口,状态端口和控制端口三种。状

39、态端口和控制端口三种。PC机给每一个端口分配了一机给每一个端口分配了一个地址,所有端口成线性排列,形成一个独立于内存空间个地址,所有端口成线性排列,形成一个独立于内存空间的的I/O地址空间,一般用十六进制表示。地址空间,一般用十六进制表示。8086中,端口地中,端口地址的范围是址的范围是0000H-FFFFH。w例如:例如:INAL,21H表示从表示从21H端口读一个字节数据到端口读一个字节数据到AL;OUT21H,AL表示将表示将AL持有的数据写入持有的数据写入21H端口端口w需要注意的是:数据输入输出时的地址要放在需要注意的是:数据输入输出时的地址要放在DX中,数中,数据以据以AX作传输媒

40、介,具体需要根据传输位来决定是否选作传输媒介,具体需要根据传输位来决定是否选用用AL、AH或或DL、DH。累加器专用传送指令累加器专用传送指令(只限使用(只限使用AX或或AL)输入指令输入指令 IN (I/O CPU)长格式:长格式:IN AL,PORT (字节)(字节)IN AX,PORT (字)(字)执行操作:执行操作:(AL)(PORT)(字节)(字节)(AX)(PORT+1,PORT)(字)(字)短格式:短格式:IN AL,DX (字节)(字节)IN AX,DX (字)(字)执行操作:执行操作:(AL)(DX)(字节)(字节)(AX)(DX)+1,(DX)(字)(字)输出指令输出指令

41、OUT (CPU I/O)长格式:长格式:OUT PORT,AL (字节)(字节)OUT PORT,AX (字)(字)执行操作:执行操作:(PORT)(AL)(字节)(字节)(PORT+1,PORT)(AX)(字)(字)短格式:短格式:OUT DX,AL (字节)(字节)OUT DX,AX (字)(字)执行操作:执行操作:(DX)(AL)(字节)(字节)(DX)+1,(DX)(AX)(字)(字)注意注意:*不影响标志位不影响标志位*前前256个端口号个端口号00HFFH可直接在指令中指定(长格式)可直接在指令中指定(长格式)*如果如果端口号端口号 256,端口号端口号 DX(短格式)(短格式)

42、例:例:IN AX,28H ;IN AX,28H ;表示从表示从28H端口读一个字节数据到端口读一个字节数据到AX MOV DATA_WORD,AX MOV DATA_WORD,AX例:例:MOV DX,3FCH MOV DX,3FCH IN AX,DX ;IN AX,DX ;表示从表示从3FCH地址中取出的数字所代表的地址中取出的数字所代表的端口读一个字节数据到端口读一个字节数据到AX 例:例:OUT 21H,AL ;OUT 21H,AL ;表示将表示将AL持有的数据写入持有的数据写入21H端口端口 例:测试某状态寄存器(端口号例:测试某状态寄存器(端口号27H27H)的第)的第2 2位是否

43、为位是否为1 1 IN AL,27H IN AL,27H TEST AL,00000100B TEST AL,00000100B JNZ ERROR JNZ ERROR ;若若第第2 2位为位为1 1,转,转ERRORERROR处理处理第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.1数据传送类指令数据传送类指令5.IN、OUT和和XLAT换码指令换码指令XLAT:课本:课本102页页w指令功能指令功能将将BX和和AL内容之和指出的存储器字节单元的内容送到内容之和指出的存储器字节单元的内容送到AL中,即中,即(AL)(BX)+(AL)。w指令格式:指令格式:X

44、LATOPRXLATw说明:该指令的操作数是隐含的,目的操作数是说明:该指令的操作数是隐含的,目的操作数是AL,源操作数是用变址方法寻址的存储单元,即,源操作数是用变址方法寻址的存储单元,即BX和和AL的内容之和指定的存储单元。的内容之和指定的存储单元。第第4章章 8086指令系统及寻址方式指令系统及寻址方式换码指令换码指令XLAT:w该指令常用来实现查表操作,首先把表格存放在该指令常用来实现查表操作,首先把表格存放在存储器中,表格首地址存放在基址寄存器存储器中,表格首地址存放在基址寄存器BX中,中,待查元素在表格中的位置存放在待查元素在表格中的位置存放在AL中,然后执行中,然后执行指令,结果

45、是将表格中查到元素的内容送入指令,结果是将表格中查到元素的内容送入AL中。中。例如:例如:DATASEGMENTTABLEBDabcdefghijklmnopqrstuvwxyzDATAENDSMOVBX,OFFSETTABLE;将变量;将变量TABLE的偏的偏移地址送移地址送BXMOVAL,05H;TABLE表中的第表中的第6项的位移项的位移量量05H送送AL中中XLAT;查表后,将;查表后,将f的的ACX码码66H送送AL中中(BX)30 H F004031 H F0041(AL)=3 32 H F0042 33 H F0043TABLE(DS)=F000H换码指令:换码指令:XLAT 或

46、或XLAT OPR执行操作:执行操作:(AL)(BX)+(AL)例:例:MOV BX,OFFSET TABLE ;(BX)=0040H MOV AL,03H XLAT TABLE 指令执行后指令执行后(AL)=33H注意注意:*不影响标志位不影响标志位*字节表格字节表格(长度不超过长度不超过256)首地址首地址 (BX)*需转换的代码位移量需转换的代码位移量 (AL)第第4章章 8086指令系统及寻址方式指令系统及寻址方式4.3指令集指令集4.3.2程序控制类指令(课本第程序控制类指令(课本第6、7章)章)无条件转移指令无条件转移指令 JMP 条件转移指令条件转移指令JZ/JNZ、JE/JNE

47、、JS/JNS、JO/JNO、JP/JNP、JB/JNB、JL/JNL、JBE/JNBE、JLE/JNLE、JCXZ 循环指令循环指令 LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE 子程序调用和返回指令子程序调用和返回指令 CALL、RET 中断与中断返回指令中断与中断返回指令 INT、INTO、IRET无条件转移指令:无条件转移指令:段内直接短转移:段内直接短转移:JMP SHORT OPR 执行操作:执行操作:(IP)(IP)+8位位移量位位移量段内直接近转移:段内直接近转移:JMP NEAR PTR OPR 执行操作:执行操作:(IP)(IP)+16位位移量位位移量段内间

48、接转移:段内间接转移:JMP WORD PTR OPR 执行操作:执行操作:(IP)(EA)段间直接远转移:段间直接远转移:JMP FAR PTR OPR 执行操作:执行操作:(IP)OPR 的段内偏移地址的段内偏移地址 (CS)OPR 所在段的段地址所在段的段地址段间间接转移:段间间接转移:JMP DWORD PTR OPR 执行操作:执行操作:(IP)(EA)(CS)(EA+2)条件转移指令:条件转移指令:注意:只能使用段内直接寻址的注意:只能使用段内直接寻址的8 位位移量位位移量(1)根据单个条件标志的设置情况转移根据单个条件标志的设置情况转移 格式格式 测试条件测试条件JZ(JE)OP

49、R ZF=1JNZ(JNE)OPR ZF=0JS OPR SF=1JNS OPR SF=0JO OPR OF=1JNO OPR OF=0JP OPR PF=1JNP OPR PF=0JC OPR CF=1JNC OPR CF=0(2)比较两个无符号数,并根据比较结果转移比较两个无符号数,并根据比较结果转移*格式格式 测试条件测试条件 JB(JNAE,JC)OPR CF=1 JNB(JAE,JNC)OPR CF=0 JBE(JNA)OPR CFZF=1 JNBE(JA)OPR CFZF=0*适用于地址或双精度数低位字的比较适用于地址或双精度数低位字的比较(3)比较两个带符号数,并根据比较结果转移

50、比较两个带符号数,并根据比较结果转移*格式格式 测试条件测试条件 JL(JNGE)OPR SF OF=1 JNL(JGE)OPR SF OF=0 JLE(JNG)OPR (SF OF)ZF=1 JNLE(JG)OPR (SF OF)ZF=0*适用于带符号数的比较适用于带符号数的比较(4)测试测试 CX 的值为的值为 0 则转移则转移 格式格式 测试条件测试条件 JCXZ OPR (CX)=0例例:如如 果果 X50,转转 到到 TOO_HIGH;否否 则则|X-Y|RESULT,如果溢出转到如果溢出转到 OVERFLOW,JGJGJOJOJNSJNS MOV AX,XMOV AX,XCMP A

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com