8086指令系统精析解析

合集下载

微机原理第3章8086指令系统

微机原理第3章8086指令系统

微机原理第3章8086指令系统8086是Intel公司推出的一种16位微处理器,是x86架构的第一代处理器。

8086指令系统是8086微处理器所支持的指令集合,本章将介绍8086指令系统的基本特性和指令编码格式。

8086指令系统采用变长指令编码格式,指令长度可以是1个字节到多个字节,提供了多种寻址方式和丰富的操作类型。

8086指令系统共支持256条标准指令,可以执行各种算术逻辑运算、数据传输和控制流操作。

8086指令由操作码和操作数组成。

操作码指示了执行的具体操作,操作数则是操作码所针对的数据。

8086指令系统提供了多种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址和基址变址寻址等。

立即寻址是将常数或数据直接作为操作数,如MOVAX,1000H,表示将立即数1000H传送到AX寄存器。

直接寻址是通过指定一个内存单元的地址来作为操作数,如MOVAL,[BX],表示将BX寄存器指向的内存单元的内容传送到AL寄存器。

寄存器寻址是直接将一个寄存器作为操作数,如MOVAX,BX,表示将BX寄存器的内容传送到AX寄存器。

除了寻址方式,8086指令系统还提供了多种操作类型,如算术逻辑运算、数据传输和控制流操作等。

算术逻辑运算可以进行加、减、乘、除等数学运算,如ADD、SUB、MUL、DIV等指令。

数据传输可以进行数据的读取和存储操作,如MOV、PUSH、POP等指令。

控制流操作可以用于程序的跳转和条件判断,如JMP、JZ、JC等指令。

8086指令系统还支持多种数据类型的操作,包括字节、字和双字等。

字节操作是对8位数据进行操作,字操作是对16位数据进行操作,双字操作是对32位数据进行操作。

指令的操作数大小可以根据需要选择合适的寄存器或内存单元。

总之,8086指令系统是8086微处理器所支持的指令集合,提供了多种寻址方式和操作类型,支持多种数据类型的操作。

通过掌握8086指令系统,可以编写出高效、精确的8086汇编程序,实现各种功能和算法。

8086系统结构与8086CPU详解

8086系统结构与8086CPU详解

8086系统结构与8086CPU详解8086是Intel公司于1978年推出的16位微处理器,是第一个被广泛应用于个人电脑的微处理器。

指令执行单元是8086的核心部分,它包括指令队列和执行单元。

指令队列用于存储将要执行的指令,执行单元根据指令队列中的指令来执行相应的操作。

8086采用流水线执行模式,使指令的执行更高效。

8086有14个寄存器,其中有4个通用寄存器AX、BX、CX和DX,其分别可以作为数据寄存器、地址寄存器、指针寄存器和变址寄存器使用。

AX寄存器可以拆分为两个独立的8位寄存器AH和AL,分别用于存储高8位和低8位数据。

除了通用寄存器外,8086还有4个段寄存器CS、DS、ES和SS,用于存储程序的代码段、数据段和堆栈段的物理地址。

内存管理单元用于实现8086的内存管理功能。

8086采用分段分页的内存管理模式,通过段寄存器和偏移地址来访问内存。

段寄存器存储段的起始地址,偏移地址表示从段起始地址开始的偏移量。

通过这种方式,8086可以寻址1MB的内存空间。

8086使用外部总线与其他设备进行通信。

它包括地址总线、数据总线和控制总线。

地址总线用于传输地址信息,数据总线用于传输数据,控制总线用于传输控制信号。

8086的地址总线宽度为20位,可以寻址1MB的内存空间。

除了系统结构,了解8086的CPU结构也是很重要的。

8086包括指令流水线、ALU、寄存器组、时钟和控制单元等部分。

指令流水线用于提高指令执行的效率,将指令的执行过程分为取指令、译码、执行和写回四个阶段,并行地执行不同的指令。

ALU(算术逻辑单元)用于进行算术和逻辑运算。

寄存器组包括通用寄存器和段寄存器,用于存储数据和地址信息。

8086的时钟是由外部提供的,它通过时钟和控制单元来对指令的执行进行控制。

总的来说,8086的系统结构和CPU结构共同组成了一个完整的微处理器系统。

通过了解其结构,可以更好地理解8086的工作原理和性能特点,为编程和系统设计提供指导。

第3章 8086指令系统(2)

第3章 8086指令系统(2)
3.3 80X86指令系统
8086/8088指令系统按其功能分为以下类型:数 据传送指令、地址传送指令、标志寄存器传送 指令、算术运算指令、逻辑运算指令、移位指 令、控制转移指令、串操作指令、中断指令和 处理器控制指令。
一.数据传送指令
数据传送指令用于寄存器、存储单元、或输入
输出端口之间传送数据或地址。8086/8088有14
CMP AL,100
29
CMP指令执行后对标志位的影响
操作数类型
带符号的 二进制
CF ZF SF OF
两操作数的关系
01 0 0
等于
-010
小于
- 0 0 1 目的操作数 小于 源操作数
-000
大于
-011
大于
不带符号的 二进制
01 0 0
等于
10 -
- 目的操作数 低于 源操作数
00 -
-
高于
举例: n=8 bit 带符号数(-128~127), 无符号数(0~255)
PUSH AX
PUSH DX
78H
POP AX
56H
POP DX
34H
12H
9
(4)XCHG指令 格式:XCHG OP1,OP2 操作:源、目的操作数之间交换一个字节 或字的数据。源操作数或目的操作数只能 取通用寄存器或通用寄存器与存储器 例: XCHG AX,CX
XCHG AL,BL XCHG AX,[BP+DI]
中的数相乘,结果放在累加器中
乘积为双字节长时,结果放在AX中;乘积为双 字长时,分别放在DX(乘积的高16位)和AX中。 该指令的运行结果只影响标志位CF和OF 例:MOV AL,FIRST
MUL SECOND MOV THIRD,AX (2)IMUL指令 格式:IMUL SRC 该指令为带符号数相乘指令

8086指令系统总结

8086指令系统总结

8086指令系统总结学习微处理器及其程序设计,必须掌握微处理器的指令系统。

本章以 8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。

要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。

能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。

本章的重点难点内容是: 8086 的指令格式及寻址方式, 8086 的常用指令和8086 指令前缀的使用。

下面我们分别进行总结:一.8086寻址方式(1)操作数是数字,指令中立即写出数字------------立即数寻址MOV AX,1234H 解释此句意义(2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址MOV AX,BX(3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址MOV AX,[1234H]MOV AX,ES:[1234H](4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX]MOV AX,ES:[SI]MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI]二.8086指令系统1.数据传送指令(一)通用传送指令(1)MOV指令指令格式:MOV 目,源功能:将源操作数传送给目标操作数。

(2)堆栈操作指令进栈指令:PUSH格式:PUSH 源功能:将源操作数压入堆栈。

例:用堆栈指令完成上例的功能。

MOV AX,3000HMOV DS,AX ;段寄存器填充MOV SI,0100H ;基本指令执MOV DI,2000H ;行前的初值MOV CX,50NT:PUSH [SI] ;程序从这POP [DI] ;开始设计INC SIINC SIINC DIINC DILOOP NTMOV AH,4CHINT 21H(3)交换指令 XCHG格式:XCHG 目,源功能:源和目标中的内容交换。

8086指令系统及汇编语言程序设计

8086指令系统及汇编语言程序设计

8086指令系统及汇编语言程序设计8086指令系统是指8086微处理器能够支持和执行的一系列指令。

8086微处理器是Intel公司于1978年推出的一款16位微处理器,是一个革命性的产品,为个人计算机的发展奠定了基础。

8086微处理器采用的是复杂指令集(CISC)架构,其指令系统非常丰富,共有近1000条指令,能够完成各种复杂的计算和操作。

8086指令系统主要分为数据传输指令、算术运算指令、逻辑运算指令、移位指令、控制转移指令等几类。

数据传输指令主要用于数据在寄存器和存储器之间的传输,其中包括直接传输和间接传输两种方式。

算术运算指令用于执行各种加减乘除运算,包括有符号数和无符号数的运算。

逻辑运算指令用于执行逻辑操作,如与、或、异或等。

移位指令用于对数据进行位移操作,包括左移、右移等。

控制转移指令用于改变程序的执行顺序,包括无条件跳转、条件跳转等。

在汇编语言程序设计中,我们使用汇编语言来编写针对8086微处理器的程序。

汇编语言是一种低级编程语言,与机器语言直接对应,使用助记符代表机器指令。

汇编语言程序通过汇编器进行编译,生成可执行的机器码文件。

编写汇编语言程序的过程一般包括以下几个步骤:设计程序的逻辑结构、确定程序的算法、编写汇编语言源程序、进行程序调试、优化程序性能。

汇编语言程序设计可以用于解决各种计算机软件和硬件问题。

它可以用来编写底层驱动程序、操作系统、嵌入式系统等,也可以用来进行系统调试和性能优化。

总而言之,8086指令系统及汇编语言程序设计是计算机科学领域中重要的内容。

了解8086指令系统和掌握汇编语言程序设计对于理解计算机底层原理和解决一些底层问题非常有帮助。

同时,汇编语言程序设计也是一门艺术,通过编写高效的汇编语言程序,可以提高计算机的性能和响应速度。

第三次课 8086的指令系统

第三次课   8086的指令系统

第三章8086的指令系统3.1 8086指令系统概述所谓一个微处理器的指令系统是一个微处理器所执行的全部指令的集合。

在8086的指令系统中一共有133条指令。

8086指令系统是在8位微处理器8080/8085的指令系统基础上设计的,它兼容了8080/8085的全部指令,这部分对8位微处理器具有兼容性的指令往往是处理字节(8位)的。

此外,8086还有自己所特有的对字或字符串的处理指令,以及对带符号数的运算指令、中断指令和协处理器指令。

对微处理器的指令的描述,一般有两种表示方法:指令的机器码和汇编指令。

无论对于机器码指令还是对于汇编指令均要解决三个问题(三个信息)(1)指令要完成什么操作(操作码);(2)参加这个操作的操作数在哪里(操作数);(3)操作结果放在哪里(结果);为了简化指令,通常在微机系统中规定:操作结果要放在某一个操作数中。

如MOV AL,08H;ADD AX,BX;(源操作数,目标操作数)这样,就将指令所要提供的信息简化为了两部分:操作码、操作数。

指令的机器码就是用二进制码描述指令的操作码和操作数的一种方式,实际上在微机系统内部,指令就是以机器码的形式存在的。

所谓的汇编指令是用指令功能的英文缩写表示操作码,用数字和符号表示操作数的指令描述方法。

例如操作码操作数MOV AX,2000H操作码B8H操作数:00H20H由于汇编语言程序有便于理解、识别、阅读和交流的优点。

所以汇编指令得到了广泛的应用。

但由于最终在机器中使用的是机器码,所以要有一个中间环节就是对其进行翻译。

3.2 8086指令的寻址方式所谓寻址方式就是寻找操作数的方式,所以寻址方式实际上在两种情况下被涉及:一种是用来对操作数进行寻址;另一种是对转移地址和调用地址进行寻址。

下面我们所讨论的寻址方式都是针对操作数的,关于指令地址的寻址,将在讲述转移指令和调用指令时作具体说明。

一条指令的机器码通常包含操作码(OP)和操作数两部分。

8086cpu知识点总结

8086cpu知识点总结

8086cpu知识点总结8086 CPU 是 Intel 公司于 1978 年推出的第一款 16 位微处理器,它奠定了后来计算机发展的基础,为后续的计算机体系结构设计奠定了基础,其后续版本的处理器也是以其为基础进行设计。

这篇文章将对 8086 CPU 的架构、指令系统、寻址方式、操作模式、管脚、寄存器组、数据通路和控制信号等知识点进行详细的总结,以便更好地理解和掌握该处理器的相关知识。

一、8086 CPU 架构8086 CPU 是一种 16 位微处理器,其架构主要包括三部分:执行单元 (EU)、总线接口单元(BIU) 和通用寄存器组成。

EU 负责执行指令、算术运算和逻辑运算,同时与 BIU 进行数据交换;BIU 负责处理数据传输、地址生成和取指令等操作;通用寄存器组包括 4 个 16 位通用寄存器 AX、BX、CX 和DX,其中 AX 寄存器作为中央处理器 (CPU) 的数据寄存器,用于存放运算结果。

8086 CPU 内部结构由许多部件组成,包括寄存器、运算器、时钟、分频器、全速脉冲发生器、指令译码器、片选逻辑、地址生成器、数据总线缓冲器、地址总线驱动器、总线控制器、中断控制器、中断识别器、数据缓冲器等。

这些部件共同组成了 8086 CPU 的内部结构,为其正常工作提供了支持。

二、8086 CPU 指令系统8086 CPU 的指令系统包括数据传输指令、算术运算指令、逻辑运算指令、串处理指令、控制转移指令、程序调用和返回指令、中断指令等。

这些指令可以根据其功能和操作数的不同进行分类。

数据传输指令包括将数据从一个位置传送到另一个位置的指令,其中包括 MOV、XCHG、LEA 等指令;算术运算指令包括实现加法、减法、乘法、除法等运算的指令,其中包括ADD、SUB、MUL、DIV 等指令;逻辑运算指令包括实现与、或、非、异或等逻辑运算的指令,其中包括 AND、OR、NOT、XOR 等指令;串处理指令包括在存储器中进行字符串操作的指令,其中包括 MOVSB、MOVSW、CMPSB、SCASB 等指令;控制转移指令包括跳转、调用、返回等指令,其中包括 JMP、CALL、RET 等指令;程序调用和返回指令包括实现过程调用和返回的指令,其中包括 INT、IRET 等指令;中断指令包括控制中断处理的相关指令,其中包括 INT、IRET 等指令。

8086的指令系统

8086的指令系统

TEST AL,80H;查AL的D7= 1? JNZ T_ALARM;是1,则转温度报警程序 TEST AL, 40H; D7=0, D6=1? JNZ P_ALARM;是1,则转压力报警程序
(4) XLAT 表转换指令 格式:XLAT 转换表 或 XLAT


功能:将一个字节从一种代码转换为另一种代码 例:若十进制数字0~9的LED七段对照表如下: 十进制数字 七段显示码 十进制数字 七段显示码 0 40H 5 12H 1 2 3 79H 24H 30H 6 7 8 02H 78H 00H

(2) AND逻辑与指令 指令格式: AND 目的,源 指令功能:对两个操作数进行按位逻辑与操作 结果送回目的操作数 即: 目的←目的∧源。 例3.66 假设AX=3538H, AND AX,0F0FH; 执行该指令后,AX=0508H

(3) OR逻辑或指令 指令格式:OR 目的,源 例3.67 设AX=0508H, OR AX,3030H;AX=3538H

2.输入输出指令 (1) IN输入指令 指令格式: ① IN AL,端口地址 (8位) 或 IN AX,端口地址;(16位) ② IN AL, DX;端口地址存放在DX中 或 IN AX, DX 例3.32 IN AL,0F1H; AL从F1H端口读入一个字节 IN AX,80H; AL 80H端口的内容 ; AH 81H端口的内容 MOV DX,310H;端口地址310H先送入DX中 IN AL,DX; AL 310H端口的内容



MOV MOV XLAT MOV MOV XLAT MOV 4· 标志传送指令
二、算术运算指令 数的类型: 无符号二进制数、带符号二进制数、 压缩十进制数、非压缩十进制数 压缩与非压缩数: 例: 23 压缩: 0010 0011 非压缩表示:0000 0010 0000 0011

第三章:8086指令系统

第三章:8086指令系统
第三章 8086 指令系统
指令系统是微处理器( 指令系统是微处理器(CPU)所能执行的指令的集合,它与 )所能执行的指令的集合, 微处理器有密切的联系,不同的微处理器有不同的指令系统。 微处理器有密切的联系,不同的微处理器有不同的指令系统。在本章 中我们主要讲解INTEL公司生产的 公司生产的8086/8088CPU的寻址方式以及各 中我们主要讲解 公司生产的 的寻址方式以及各 种指令系统,并通过具体实例讲述了各条指令的功能和使用方法。 种指令系统,并通过具体实例讲述了各条指令的功能和使用方法。 通过本章的学习,读者应该掌握以下内容: 通过本章的学习,读者应该掌握以下内容:
• • • • • • • • • • • • • • •
偏移量= 例1:设BX=0158H, DI=10A5H, 偏移量=1B57H, : DS=2100H,并假设 为当前段寄存器。 为当前段寄存器。 ,并假设DS为当前段寄存器 :(1)直接寻址: 则:( )直接寻址: MOV AX, [1B57H] EA=1B57H;物理地址=21000H+1B57H=22B57H ;物理地址= (2)寄存器间接寻址:MOV AX, [BX] )寄存器间接寻址: EA=0158H; 物理地址=21000H+0158H=21158H 物理地址= = (3)基址寻址:MOV AX, [BX+1B57H] 基址寻址: 基址寻址 EA=BX+1B57H=0158H+1B57H=1CAFH; ; 物理地址= 物理地址=21000H+1CAFH=22CAFH (4)变址寻址:MOV AX, [DI+1B57H] 变址寻址: 变址寻址 EA=DI+1B57H=10A5H+1B57H=2BFCH; ; 物理地址= 物理地址=21000H+2BFCH=23BFCH + (5)基址加变址寻址:MOV AX,[BX][DI+1B57H] 基址加变址寻址: 基址加变址寻址 EA=0158H+10A5H+1B57H=2D54H; ; 物理地址= 物理地址=21000H+2D54H=23D54H + =

8086指令系统总结

8086指令系统总结

8086指令系统总结8086是一种x86架构的微处理器,由Intel公司于1978年推出。

它是16位的,拥有20位的物理寻址能力,可以访问1MB的内存空间。

8086指令系统是其所支持的一系列指令集合,下面将对8086指令系统进行详细总结。

数据传输指令是8086指令系统中的基础指令之一,用于将数据从一个位置传输到另一个位置。

其中包括mov指令、xchg指令、push指令和pop指令等。

mov指令用于将数据从一个存储位置复制到另一个存储位置;xchg指令用于交换两个存储位置中的数据;push指令用于将数据压入栈顶;pop指令用于将栈顶的数据弹出。

算术运算指令是用于进行各种算术运算的指令。

8086支持包括加法、减法、乘法和除法等多种算术运算指令。

例如,add指令用于将两个操作数相加,sub指令用于将第二个操作数从第一个操作数中减去,mul指令用于将两个操作数相乘,div指令用于将第一个操作数除以第一个操作数,并将结果保存在指定的寄存器中。

逻辑运算指令用于进行逻辑运算,包括与、或、非、异或等运算。

例如,and指令用于对两个操作数进行按位与运算,or指令用于对两个操作数进行按位或运算,not指令用于对一个操作数进行按位非运算,xor指令用于对两个操作数进行按位异或运算。

控制转移指令用于控制程序的执行流程。

包括无条件转移指令、条件转移指令和循环指令。

无条件转移指令用于无条件地跳转到指定的地址,例如jmp指令;条件转移指令用于根据一些条件是否成立来进行跳转,例如je指令(跳转到指定地址,如果上一次比较操作相等);循环指令用于循环执行指定的指令块,例如loop指令。

I/O指令用于进行输入输出操作,包括从外部设备读取数据和将数据写入外部设备。

例如,in指令用于将输入端口的数据读取到指定的寄存器中,out指令用于将指定的寄存器中的数据写入到输出端口。

此外,8086还支持一些特殊的指令,如访问标志寄存器的指令,控制指令(如hlt指令、nop指令)和字符串指令(如movsb指令、cmpsb指令)等。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

8086指令系统精析3.1基本数据类型1.IA-32结构的基本数据类型是字节(8位)、字(16位)、双字(32位)、四字(64位,486中引入的)和双四字(128位,Pentium3中引入的)。

2.低字节占用内存中的最低地址,该地址也是此操作数的地址。

图:P44 图3-13.字、双字、四字的自然边界是偶数编号的地址,字的自然边界是偶数编号的地址,双字和四字的自然边界地址要分别能被4和8除尽。

4.数据结构要尽可能在自然边界上对齐5.对于不对齐的存储访问,处理器要求做两次存储访问操作;而对于对齐的访问,只要进行一次存储访问操作。

6.数字数据类型(学生自学)PPT3.28086的指令格式一、指令格式Label(标号):mnemonic(助记符)argument1(参数1),argument2(参数2),argument3(参数3)其中:1.标号是一个标识符,后面跟有冒号2.助记符是一类具有相同功能的指令操作码的保留名3.操作数的三个参数是任选的,可以有零到三个操作数,操作数参数的数量取决于操作码4.操作数参数可能是文字或数据项的标识符,也可能是寄存器的保留名或在程序的另一部分声明的赋予数据项的标识符。

5.在算术和逻辑指令中存在两个操作数时,右边的操作数是源,左边的操作数是目的。

例如:LOADREG: MOV AX, SUBTOTAL 功能是把由SUBTOTAL表示的源操作数传送至AX寄存器。

3.38086/8088指令的操作数寻址方式寻找操作数,操作数能定位在指令中、寄存器中、存储单元中以及I/O端口中。

1.立即数用包含在指令中的操作数作为源操作数,这些操作数即为立即操作数。

立即数可以是8位或16例1 MOV AX , 2056H结果( AH ) = 20H ( AL ) = 56H例2 MOV AL , 78 H结果( AL ) = 78H2.寄存器操作数操作数在寄存器中,指令中指定寄存器名8 位操作数,用8 位寄存器: AH、AL、BH、BL、CH、CL、DH、DL16 位操作数,用16 位寄存器: AX、BX、CX、DX、SP、BP、SI、DICS、DS、SS、ES例1 MOV AX , 2056H执行后:(AX)=2056H例2 MOV BL , AH执行前:(BL) = 12H, (AH) = 78H执行后:(BL) = 78H (AH) = 78H▲立即数寻址、寄存器寻址的操作数,不用在取完指令后再到内存中取数。

▲以下的 5 中寻址方式,操作数存放在内存中,取完指令后,还需到内存取数。

指令中给出的是该操作数的地址,包括段地址和偏移地址。

3. 内存操作数▲指令MOV DS: [ DI ] , CL完成将CL寄存器中的内容传送到以DS为段值,DI为偏移值的内存单元中。

例编程将CL寄存器的内容传送到21000H单元中。

PPT地址21000H=2000:1000H ,编程时,DS 存放段地址2000H,DI 存放偏移地址1000HMOV AX, 2000HMOV DS, AX ; (DS) = 2000HMOV DI, 1000H ; (DI) = 1000HMOV DS: [ DI ], CL ;(21000H) = (CL)结果如图所示:PPT(第一页)内存单元的地址由段地址和偏移地址构成▲为减短指令长度指令中只给出偏移地址的来源,段地址由默认关系给出。

MOV AL,[ 2000H ] PA= ( DS ) ×10H + 2000H即选择DS寄存器的内容为段地址。

▲CPU根据偏移地址给出的方式,按默认关系自动选择段寄存器,获取段值,由段值、偏移值构成操作数所在内存单元的物理地址。

指令中用[ ] 给出偏移地址。

操作数的偏移地址又称有效地址EA ( Efficient Address)▲按给出偏移地址方式的不同,分为以下5种:直接寻址MOV AL, [ 1000H ]寄存器间接寻址MOV AL, [ BX ]寄存器相对寻址MOV AL, [ BX + 10H ]基址加变址寄存器MOV AL, [ BX + SI ]相对基址加变址寄存器MOV AL, [ BX + SI + 10H ](1)直接寻址方式-位移量存储器操作数的有效地址EA在指令中直接给出。

例MOV AL, [ 1000H ]默认段寄存器为DS。

操作数所在内存单元的物理地址为:PA = ( DS )×10H + EA例:MOV AX , [ 1000 H]若( DS ) = 2000H内存操作数的物理地址为:PA = ( DS )×10H +EA = 2000H ×10H + 1000H = 21000H 21000执行后 (AX)= 3040H在汇编语言程序中,不直接用数值表示偏移地址,用符号代替数值表示地址,称符号地址(变量名)。

例 符号buffer 表示一个地址。

MOV AX , [buffer] 或写成 MOV AX , buffer 源操作数为buffer 指向的内存单元的内容符号地址( 变量名)经汇编连接后,与一个确定的数值地址相对应,可用操作符Offset 获取变量的偏移地址。

故 PA = ( DS )×10H + Offset buffer指令执行结果 ( AX ) = 0B0A H(2) 寄存器间接寻址-基地址存储器操作数的有效地址EA 由寄存器给出,寄存器的内容为操作数的有效地址。

可用的寄存器有 BX 、SI 、DI 、BP 如: MOV AL, [ BX ] MOV AH, [ SI ] MOV DL, [ DI ] MOV DH, [ BP ] 默认段寄存器的关系:①使用BX 、SI 、DI ,默认段寄存器为DS PA = ( DS )×10H + (SI)或(BX)或(DI) ②使用BP ,默认段寄存器为SS PA = ( SS )×10H + ( BP ) 例1: MOV AX , [ DI ]若 ( DS ) = 3000H ,( DI ) = 2000H则内存操作数的物理地址为:PA = ( DS )×10H + ( DI ) = 32000H执行后(AX) = (32000H) = 400BH例2:MOV AX , [ BP ]若( SS ) = 4000H,( BP ) = 3000H则内存操作数的物理地址为:PA = ( SS )×指令执行后(AX) = (43000H) = 0102H(3)寄存器相对寻址-基地址+位移量操作数的有效地址由一个寄存器与一个偏移量相加得到,偏移量(相对量)在指令中给出,范围在0000 ~ FFFFH可用的寄存器有BX、DI、SI、BP , 与寄存器间接寻址相同。

如::MOV AL, [ BX +10H] MOV AH, [ DI+20H ]MOVDL, 30H [ SI ]MOV DH, 40H [ BP ]PA = ( DS )×10H + (SI)或(BX)或(DI)+偏移量PA = ( SS )×10H + ( BP )+偏移量例1:MOV AX , [ BX+30H ]若( DS ) = 2000H,( BX ) = 1000H则内存操作数的物理地址为:PA = ( DS )×指令执行后:(AX) = (21030H) = 8976H(4)基址加变址寻址-Index+Dsplacement操作数的有效地址由一个基址寄存器与一个变址寄存器之和给出。

可用的基址寄存器为BX、BP,变址寄存器为SI 、DI如MOV AL,[ BX+SI ]MOV AX,[ BX][DI ]MOV DL,[ BP+SI ]MOV DX,[ BP][DI ]默认段寄存器由基址寄存器决定。

① 基址寄存器为BX ,默认段寄存器为DS PA = ( DS )×10H + ( BX ) +(SI)或(DI) ② 基址寄存器为BP ,默认段寄存器为SSPA = ( SS )×10H + ( BP ) +(SI)或(DI)例1: MOV AX , [ BX + SI ]若 ( DS ) = 4000H ,( BX ) = 2000H ,( SI ) = 100H则内存操作数的物理地址为: PA = ( DS )×指令执行后: (AX) = (42100H) = 2345H(5)相对基址加变址寻址 – Base+ Index+Dsplacement 基址寄存器有 BX 、BP ,变址寄存器有 SI 、DI 如MOV AL, [ BX+SI +10H] MOV AX ,20H[ BX][DI ]MOV DL ,[ BP+SI+30H ] MOV DX ,40H[ BP][DI ]例: MOV AX , [ BX + SI + 10H ]若 ( DS ) = 4000H ,( BX ) = 3000H ,( SI ) = 200H则内存操作数的物理地址为:PA = ( DS )×10H + ( BX ) + ( SI ) + 10H = 43210H 指令执行后:(AX) = (43210H) = 8877H除此之外,其他方式均错误。

如下: MOV CL, [AX] MOV AX, [DX] MOV AL, [CX] MOV CX, [BP+BX] MOV AH, [SI+DI] MOV BL, [AX+CX]3.48086的通用指令指令系统可分为六个功能组:数据传送、算术运算、逻辑运算、串操作、控制传送、处理器控制。

3.4.1数据传送指令数据传送是最基本、最重要的一种操作,实际程序中,使用的比例最高。

寄存器——寄存器寄存器——内存单元寄存器——I/O端口按传送内容,可分为四类:(1). 通用数据传送MOV, PUSH, POP, XCHG, XLAT(2). 地址传送LEA, LDS, LES(3)标志传送PUSHF, POPF, LAHF, SAHF(4)输入输出传送(累加器专用传送指令)IN, OUT▲特点:(1). 除POPF、SAHF外,其他传送指令对标志位均无影响;(2). 唯一允许以段寄存器做操作数的指令,且只有MOV、PUSH、POP这三条允许。

1. MOV指令格式MOV dst,src执行( dst ) ←( src )MOV传送指令的使用:①reg/mem/segreg ←reg 通用寄存器/存储器/段寄存器←通用寄存器(8个)MOV AL , BLMOV [ BX ] , ALMOV DS , AX②reg/segreg ←mem 通用寄存器/段寄存器←存储器MOV AL , [ BX ]MOV DS , [ BX+SI ]③reg/mem ←segreg 通用寄存器/存储器←段寄存器MOV BX , CSMOV [ BX ] , DS④reg/mem ←data 通用寄存器/存储器←立即数MOV Al , 9MOV BX , OFFSET bufferMOV [ value ] , 0MOV WORD PTR [ BX ] , 1MOV指令特点及注意事项:1)双操作数指令(注意双操作指令的特点)2)可进行字节或字传送3)不允许存储器传送到存储器MOV [ BX ] ,value 错存储器不能传给存储器!MOV [DI],[SI] 错MOV AX ,value 对MOV [ BX ] ,AX 对MOV AL ,[SI] 对MOV [ DI ] ,AL 对4)可对DS、ES、SS 赋值,但不允许立即数直接传送给段寄存器MOV DS,AXMOV ES ,[BX]MOV DS,1000H 错MOV AX ,1000H5)CS不能做目的操作数, 不能通过传送指令改变CS的值MOV CS ,AX 错6)不允许段寄存器传送到段寄存器MOV ES ,DS 错MOV AX ,DSMOV ES ,AX2 交换指令格式XCHG DOPD,SOPD执行(DOPD) ——(SOPD)reg ——reg reg——mem mem——reg例1 XCHG AX, BX 字操作执行前(AX)= 1122H (BX)= 3344H执行后(AX)= 3344H (BX)= 1122H例2 XCHG AH, BL 字节操作执行前(AX)= 1122H (BX)= 3344H执行后(AX)= 4422H (BX)= 3311H注意事项:●双操作数指令●可进行字或字节操作●不允许对立即数、段寄存器做操作数XCHG AX, 4 错XCHG BX, DS 错3 堆栈操作指令(1)入栈操作Array格式PUSH DOPD执行分两步:P54执行(SP)←(SP)- 2(SS:SP)←(DOPD)特点:① 单操作数指令② 操作数为16位,可以是reg/segreg/mem,(CS除外)不可以是datareg : AX, BX, CX, DX, SI, DI, BP, BXsegreg : DS, ES, SSmem 字类型(或双字) 例: PUSH AX跳上去(低位)再把AX 的货放进去若执行前: (SS )= 2000H (SP )= 1002H(SS :SP )= 21002H (AX )= 1234H则执行后: (SS )= 2000H (SP )= 1000H (SS :SP )= 1234H (AX )= 1234H(2) 出栈操作格式 POP DOPD执行 (DOPD ) ← (SS :SP ) (SP ) ←(SP )+ 2 特点:③ 单操作数指令④ 操作数为16位,可以是reg/segreg/mem, 不可以是data例: POP BX把货先复制给BX 再跳下来(高位) 若执行前: (SS )= 2000H (SP )= 1000HSS:SP 2000:1002指令执行前(AX)=1234hSS:SP 2000:1000指令执行后(AX)=1234hSS:SP SS:SP (DOPD t)SS:SP 2000:1000指令执行前(BX)=5678h(SS :SP )= 1234H (BX )= 5678H 则执行后: (SS )= 2000H(SP )= 1002H (SS :SP )= 2010H(BX )= 1234H ● PUSH 和POP 指令只能对字操作。

相关文档
最新文档