当前位置:文档之家› 8086指令系统

8086指令系统

第4章8086指令系统

第一节8086的寻址方式

第二节8086的指令系统

§4-1 指令的寻址方式

指令的基本组成:

操作码,操作数(0,1,或2个)

汇编语言指令的基本格式:

指令助记符操作数表示符1,操作数表示符2;注释

一、概述

1.操作数(Operand)

操作数是指令的基本构成要素。根据指令的功能,指令中的操作数可以是如下三种:?无操作数,例:HLT;

?单一操作数,例:INC AX;

?双操作数,例:ADD AX,1234H;

在双操作数情况下,第一个操作数通常保存运算结果,故称目的操作数,第二个操作数则称为源操作数。

2.寻址方式(Addressing Mode)

指令由操作码和操作数组成,而操作数部分通常不是直接给出操作数的数据本身,而是给出该数据的位置信息。

指令中,操作数位置信息的表示方式称为寻址方式。

所谓寻址,就是按照指令中所给出的操作数位置信息,找出操作数的数据来。

3.操作数可能的存放位置

程序存储器(或内存的代码段)中,这种操作数称为立即数。

数据存储器(或内存的数据段)中,这种操作数称为存储器操作数。

CPU的内部寄存器中,这种操作数称为寄存器操作数。

按照操作数的存放位置,将操作数的寻址方式分为三大类:?立即数寻址

?寄存器寻址

?存储器寻址

二、立即数寻址方式

1.特点

–指令代码中操作数部分就是数据本身。

因此,总线操作中除取指周期外,不需要额外的取操作数周期。

2.举例

–MOV AL,80H ;

将字节数80H送入AL中。

指令代码(B0H,80H)中,80H即为操作数本身。

–MOV AX,1090H ;

将字型数1090H送到AX中。

指令代码(B8H,90H,10H)中,1090H即为操作数本身。

3.用途

立即数寻址方式主要用来对寄存器或存储器单元赋值。

4.注意事项

立即数可以为8位,也可以为16位;

立即数只能作为源操作数。

三、寄存器寻址方式

1.特点

操作数在CPU内部寄存器中。

因此,总线操作中除取指周期外,也不需要额外的取操作数周期。

2.举例

MOV AL,80H ;将字节数80H送入AL中。

指令代码(B0H,80H)中,操作码B0H中隐含了目的操作数为寄存器AL。

本条指令中,目的操作数为寄存器寻址,源操作数为立即数寻址。

OR AX,BX ;

将BX内容与AX内容相或,结果回送到AX中。

目的操作数和源操作数均为寄存器寻址。

3.用途

绝大部分操作功能都是借助于寄存器(尤其是累加器)来完成的,因此,通

常是先将立即数、存储器数据或IO接口

数据暂存与寄存器中,以便于后续指令

直接进行操作。

4.注意事项

16位操作数,寄存器可用AX、BX、CX、DX、SI、DI。必要时,也可以用SP、BP、DS、ES、

SS、CS,但CS只能做源操作数。

8位操作数,寄存器可用AH、AL、BH、BL、CH、CL、DH、DL。

四、存储器寻址方式

1.特点

操作数在数据存储器(数据段)中,指令操作数部分仅是操作数在内存中的位

置信息。

因此,总线操作中除取指周期外,还需要额外的取操作数周期。当然,取数之前,必须先计算出存放

地址。

2.举例1

MOV AX,[3100H] ;

指令代码(A1H,00H,31H)中,操作数部分直接指明操作数在数据段的存放地址,即逻辑地址为

DS:3100H。这种方式称为存储器直接寻址。

2.举例2

MOV AX,[SI] ;

将以DS为段地址、以SI为偏移地址的存储器字单元的内容送到累加器AX中。

指令代码(89H,43H)中,操作数部分间接给出操作数在数据段的存放地址,即逻辑地址为DS:

(SI),寄存器SI的内容才是操作数的偏移地址。

这种方式称为存储器间接寻址。由于间接寻址寄

存器为变址寄存器,故这种间接寻址方式又称为

存储器变址寻址。

变址寻址寄存器有SI和DI,对应的段寄存器均为DS。

2.举例3

MOV AX,[BX] ;

将以DS为段地址、以BX为偏移地址的存储器字单元的内容送到累加器AX中。

指令代码(89H,25H)中,操作数部分间接给出操作数在数据段的存放地址,即逻辑地址为DS:

(BX),寄存器BX的内容才是操作数的偏移地址。

这种方式称为存储器间接寻址。由于间接寻址寄

存器为基址寄存器,故这种间接寻址方式又称为

存储器基址寻址。

基址寻址寄存器有BX和BP,BX对应的段寄存器为DS,而BP对应的段寄存器为SS。

2.举例4——组合

MOV AX,[BX+SI+0200H] ;

将以DS为段地址、以[(BX)+(SI)+0200H]为偏移地址的存储器字单元的内容送到累加器AX中。

MOV AX,[BX+DI+34H] ;

将以DS为段地址、以[(BX)+(DI)+34H]为偏移地址的存储器字单元的内容送到累加器AX中。

MOV AX,[BP+SI+0200H] ;

将以SS为段地址、以[(BP)+(SI)+0200H]为偏移地址的存储器字单元的内容送到累加器AX中。

MOV AX,[BP+DI+34H] ;

将以SS为段地址、以[(BP)+(DI)+34H]为偏移地址的存储器字单元的内容送到累加器AX中。

微机原理与接口技术知识点复习总结汇编

第一章计算机基础知识 本章的主要内容为不同进位计数制计数方法、不同进位制数之间相互转换的方法、数和字符在计算机中的表示方法、简单的算术运算以及计算机系统的组成。下边将本章的知识点作了归类,图1为本章的知识要点图,图1.2为计算机系统组成的示意图。 本章知识要点 数制 二进制数(B) 八进制数(Q) 十六进制数(H) 十进制数(D) B) 码制 带符号数编码 奇偶校验码 字符编码 原码 反码 补码 ASCII码 BCD码 压缩BCD码 非压缩BCD码计算机系统组成 计算机系统组成硬件 主机 外部设备 中央处理器(CPU) 半导体存储器 控制器 运算器 ROM RAM 输入设备 输出设备 软件 系统软件 应用软件 操作系统:如DOS、Windows、Unix、Linux等 其他系统软件 用户应用软件 其他应用软件 各种计算机语言处理软件:如汇编、解释、编译等软件

第二章8086微处理器 本章要从应用角度上理解8086CPU的内部组成、编程结构、引脚信号功能、最小工作模式的系统配置、8086的存储器组织、基本时序等概念。下面这一章知识的结构图。 本章知识要点 Intel 8086微处理器 时钟发生器(8284) 地址锁存器(74LS373、8282) 存储器组织 存储器逻辑分段 存储器分体 三总线(DB、AB、CB) 时序 时钟周期(T状态) 基本读总线周期 系统配置 (最小模式) 8086CPU 数据收发器(8286、74LS245) 逻辑地址物理地址 奇地址存储体(BHE) 偶地址存储体(A0) 总线周期指令周期 基本写总线周期 中断响应时序 内部组成 执行单元EU(AX、BX、CX、DX、SP、BP、SI、DI、标志寄存器) 总线接口单元BIU(CS、DS、SS、ES、IP) 地址/数据 控制 负责地址BHE/S7、ALE 引脚功能(最小模式)地址/状态 数据允许和收发DEN、DT/R 负责读写RD、WR、M/IO 负责中断INTR、NMI、INTA 负责总线HOLD、HLDA 协调CLK、READY、TEST 模式选择MN/MX=5V

8086指令系统精析解析

8086指令系统精析 3.1基本数据类型 1.IA-32结构的基本数据类型是字节(8位)、字(16位)、双字(32位)、四字 (64位,486中引入的)和双四字(128位,Pentium3中引入的)。 2.低字节占用内存中的最低地址,该地址也是此操作数的地址。图:P44 图3-1 3.字、双字、四字的自然边界是偶数编号的地址,字的自然边界是偶数编号的 地址,双字和四字的自然边界地址要分别能被4和8除尽。 4.数据结构要尽可能在自然边界上对齐 5.对于不对齐的存储访问,处理器要求做两次存储访问操作;而对于对齐的访 问,只要进行一次存储访问操作。 6.数字数据类型(学生自学)PPT 3.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 ) = 78H 2.寄存器操作数 操作数在寄存器中,指令中指定寄存器名 8 位操作数,用8 位寄存器: AH、AL、BH、BL、CH、CL、DH、DL 16 位操作数,用16 位寄存器: AX、BX、CX、DX、SP、BP、SI、DI CS、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 存放偏移地址1000H MOV AX, 2000H MOV DS, AX ; (DS) = 2000H

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,3000H MOV DS,AX ;段寄存器填充 MOV SI,0100H ;基本指令执 MOV DI,2000H ;行前的初值 MOV CX,50 NT: PUSH [SI] ;程序从这 POP [DI] ;开始设计 INC SI INC SI INC DI INC DI LOOP NT MOV AH,4CH INT 21H

第三章8086CPU指令系统

第三章 8086CPU指令系统 本章重点: 1.寻址方式: 立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,基址寻址,变址寻址,基址加变址寻址,串寻址,端口寻址,隐含寻址。 2.8086指令系统: 数据传送指令,算术运算指令,移位指令,程序控制指令,串操作指令,处理器控制指令,I/O指令,中断指令。 学习目标: 1.掌握寻址方式; 2.掌握常用指令的功能和用法。 难点: 区别指令的正确与错误。

§1.寻址方式 指令在存储器中是顺序存放的,而操作数的存放没有规律,因此操作数的寻址方法相对比较复杂。 一、指令的基本格式 1.组成: 一条指令包括操作码和操作数两部分。 操作数:源操作数,目标操作数。 2.寻址方式: 寻找指令中操作数的方法。 3.操作数类型:(8086系统) 寄存器操作数,存储器操作数,立即数(在指令代码中)和I/O端口操作数。 二、寻址方式 1.立即数寻址 ⑴方式: 指令中所需的操作数直接包含在指令代码中(即由指令直接提供),立即数可以是8位,也可以是16位。 例:MOV AL,80H ;将十六进制数80H送入AL MOV AX,1090H;将1090H送AX:90H→AL ,10H→AH ⑵说明: ●采用立即数寻址方式的指令主要用来对寄存器赋值。因为操作数可以从 指令中直接取得,不需要运行总线周期,所以,其显著特点就是速度快。 ●规定:立即数只能是整数,不能是小数,变量或者其他类型的数据;另 外,立即数只能作为源操作数。 2.寄存器寻址 ⑴方式: 如果操作数就在CPU的内部寄存器中,那么寄存器名可在指令中指出,这种寻址方式就叫寄存器寻址。 对16位操作数来说,寄存器可以为AX,BX,CX,DX,SI,DI,SP或BP,而对8位操作数来说寄存器可以为AH……DH,AL……DL。 例:INC CX ;将CX内容加1

习题3-8086指令系统

习题三8086指令系统 主要内容:8086指令系统。主要介绍8086的基本数据类型、寻址方式和指令系统,重点掌握8086指令系统的寻址方式、堆栈操作指令、算术运算指令及其对标志位的影响,串操作指令,控制传送指令。 1.单选题: (1)执行下面指令序列后,结果是(A)。 MOV AL,82H CBW A、(AX)=0FF82H B、(AX)=8082H C、(AX)=0082H D、(AX)=0F82H (2)与MOV BX,OFFSET VAR指令完全等效的指令是(D )。 A、MOV BX,VAR B、LDS BX,VAR C、LES BX,VAR D、LEA BX,VAR (3)编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(D )。 A、CMP B、SUB C、AND D、MOV (4)下面指令执行后,改变AL寄存器内容的指令是(D )。 A、TEST AL,02H B、OR AL,AL C、CMP AL,B D、AND AL,BL (5)设DH=10H,执行NEG DH指令后,正确的结果是(D )。 A、(DH)=10H,CF=1 B、(DH)=0F0H,CF=0 C、(DH)=10H,CF=0 D、(DH=0F0H,CF=1 (6)设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(A )。 A、85B92H B、86192H C、BB690H D、12169H (7)下列指令中,执行速度最快的是(C )。 A、MOV AX,100 B、MOV AX,[BX] C、MOV AX,BX D、MOV AX,[BX+BP] 2.8086 CPU执行如下指令后的结果,以及标志SF、AF、CF、OF的值。 (1)MOV AL,0110 0100B SUB AL,58H ;(AL)=0CH,AF=1 DAS ;(AL)=06H, AF=1 ADD AL,89H ;(AL)=8FH, AF=0 DAA ;(AL)=95H,AF=1,SF=1 结果: (AL)=95H, SF=1, AF=1, CF=0, OF=0 (2)MOV AL,05H MOV BL,09H MUL BL ;(AX)=002DH, SF、AF、CF、OF=0 AAA ; (AX)=0103H ;AAM ; ; (AX)=0405H 结果: (AX)=0103H, CF=1 , SF=0、AF=1、OF=0 3.分析执行下列指令序列后的结果: MOV AL,10110101B AND AL,00011111B ;(AL)=0001 0101B OR AL,11000000B ;(AL)=1101 0101B XOR AL,00001111B ;(AL)=1101 1010B NOT AL ;(AL)=0010 0101B 4.假设(AL)=10101111B,CF=0,CL=2,写出分别执行下列指令后的结果以及标志位CF、ZF、OF的值。 (1)SHL AL,CL ;(AL)=1011 1100B, CF=0、ZF=0、OF=1 (2)SHR AL,CL ;(AL)=0010 1011B, CF=1、ZF=0、OF=0 (3)SAR AL,CL ;(AL)=1110 1011B, CF=1、ZF=0、OF=0 (4)ROL AL,CL ;(AL)=1011 1110B, CF=0、ZF=0、OF=1 (5)RCR AL,CL ;(AL)=1011 1101B, CF=0、ZF=0、OF=1 5.设(IP)= 3D8FH,(CS)=4050H,(SP)=0F17CH,当执行CALL 2000:0094H后,试求出IP、CS、SP的

8086指令系统记忆表

数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag) CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register) 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址: CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器; ES(Extra Segment):附加段寄存器。 第一部分:指令助记符: 一、数据传送指令

8086/8088指令系统

CH02 8086/8088指令系统 习题与思考题 1.假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量V AL的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式?源操作数在哪里?如在存储器中请写出其物理地址是多少? (1)MOV AX,0ABH (2)MOV AX,[100H] (3)MOV AX,V AL (4)MOV BX,[SI] (5)MOV AL,V AL[BX] (6)MOV CL,[BX][SI] (7)MOV V AL[SI],BX (8)MOV [BP][SI],100 解答: (1)MOV AX,0ABH 寻址方式:立即寻址;物理地址:无 (2)MOV AX,[100H] 寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+100H=2000H*16+100H=20100H (3)MOV AX,V AL 寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+V AL=2000H*16+0050H=20050H (4)MOV BX,[SI] 寻址方式:寄存器间接寻址;源操作数在存储器中;物理地址:DS*16+SI=2000H*16+00A0H=200A0H (5)MOV AL,V AL[BX] 寻址方式:变址寻址;源操作数在存储器中;物理地址:DS*16+V AL+BX=2000H*16+0050H+0100 =20150H (6)MOV CL,[BX][SI] 寻址方式:基址加变址寻址;源操作数在存储器中;物理地址:DS*16+BX+SI=2000H*16+0100H+00A0H =201A0H (7)MOV V AL[SI],BX 寻址方式:寄存器寻址;源操作数在寄存器中;物理地址:无 (8)MOV [BP][SI],100 寻址方式:立即寻址;物理地址:无 2.设有关寄存器及存储单元的内容如下: DS=2000H,BX=0100H,AX=1200H,SI=0002H,[20100H]=12H,[20101H]=34H,

8086 8088指令系统记忆表

8086/8088指令系统记忆表 来自: [已注销]2011-10-21 22:44:12 在这之前,先说一下寄存器: 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。 指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag)

CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register) 为了运用所有的内存空间,8086设定了四个段寄存器,专门用来保存段地址:CS(Code Segment):代码段寄存器; DS(Data Segment):数据段寄存器; SS(Stack Segment):堆栈段寄存器; ES(Extra Segment):附加段寄存器。 第一部分:指令助记符: 一、数据传送指令 1.通用数据传送指令 MOV(Move)传送 PUSH(Push onto the stack)进栈 POP(Pop from the stack)出栈 XCHG(Exchange)交换

微机原理知识点总结

第一章 1.辨析三个概念:微处理器、微型计算机、微型计算机系统 微处理器:简称μP或MP(Microprocessor)是指由一片或几片大规模集成电路组成的具有运算器和控制器功能的中央处理器部件,又称为微处理机。 微型计算机: 简称μC或MC,是指以微处理器为核心,配上存储器、输入/输出接口电路及系统总线所组成的计算机(又称主机或微电脑)。 微型计算机系统(主机+外设+软件配置)(Microcomputer system) 简称μCS或MCS,是指以微型计算机为中心, 以相应的外围设备、电源和辅助电路(统称硬件)以及指挥微型计算机工作的系统软件所构成的系统。 2.微机系统结构(三种总线结构):数据总线,地址总线,控制总线 第三章 内部结构 由两部分组成:总线接口单元BIU(Bus Interface Unit); 执行单元EU(Execution Unit). (1).总线接口单元BIU 组成:4个16位的段寄存器(CS、DS、ES、SS); 1个16位的指令指针寄存器IP; 1个20位的地址加法器; 1个指令队列(长度为6个字节); I/O控制电路(总线控制逻辑); 内部暂存器。 BIU的功能:根据EU的请求负责CPU与内存或I/O端口传送指令或数据。 ①BIU从内存取指令送到指令队列 ②当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。 (2)执行单元EU(Execution Unit) 组成:①ALU(算术逻辑单元); ②通用寄存器组AX,BX,CX,DX(4个数据寄存器) BP(基址指针寄存器) SP(堆栈指针寄存器) SI(源变址寄存器) DI(目的变址寄存器) ③数据暂存寄存器 ④标志寄存器FR ⑤EU控制电路 作用:负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。

emu8086介绍解析

emu8086 EMU8086是学习汇编必不可少的工具,它结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug 的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。 目录 软件简介 使用方法 如何运行 十进制系统 二进制系统 十六进制系统 十进制到另外进制的换算 有符号数 汇编语言

通用寄存器 段寄存器 寻址方式 MOV 指令 数组 常量 中断 运算与逻辑指令 程序控制转移 堆栈 展开 软件简介 使用方法 如何运行 十进制系统 二进制系统 十六进制系统 十进制到另外进制的换算有符号数 汇编语言 CPU内部

通用寄存器 段寄存器 寻址方式 MOV 指令 数组 常量 中断 运算与逻辑指令 程序控制转移 堆栈 展开 编辑本段软件简介 EMU8086是你学习汇编必不可少的工具! Emu8086-MicroprocessorEmulator结合了一个先进的原始编辑器、组译器、反组译器、具除错功能的软件模拟工具(虚拟PC),还有一个循序渐进的指导工具。这对刚开始学组合语言的人会是一个很有用的工具。它会在模拟器中一步一步的编译程序码并执行,视觉化的工作环境让它更容易使用。你可以在程序执行当中检视暂存器、旗标以及

记忆体。模拟器会在虚拟PC中执行程序,这可以隔绝你的程序,避免它去存取实际硬体,像硬碟、记忆体,而在虚拟机器上执行组合程序,这可以让除错变得更加容易。这个软件完全相容於Intel的下一代处理器,包括了PentiumII、Pentium4,而相信Pentium5也会继续支援8086的。这种现象让8086程序码的可携性相当高,它可以同时在老机器以及现代的电脑是执行,8086的另一个优势是它的指令比较小且相当容易学习。 该软件包含了学习汇编语言的全部内容。Emu8086集源代码编辑器,汇编/反汇编工具以及可以运行debug的模拟器(虚拟机器)于一身,此外,还有循序渐进的教程。这套软件对于刚开始学习汇编语言的朋友非常有帮助.它能够编译源代码,并在模拟器上一步一步的执行。可视化界面令操作易如翻掌.可以在执行程序的同时可观察寄存器,标志位和内存.算术和逻辑运算单元(ALU)显示中央处理器内部的工作情况. 这个模拟器是在一台"虚拟"的电脑上运行程序的,它拥有自己独立的“硬件”,这样你程序就同诸如硬盘与内存这样的实际硬件完全隔离开,动态调试(DEBUG)时非常方便.8086的机器代码同INTEL下一代微处理器完全兼容,包括Pentium II 和Pentium 4,我相信Pentium 5同样也会支持8086指令.这意味着8086代码具有很广泛的应用范围,它在老式的和最新的计算机系统上都能工作. 8086指令的另外一个优点是它的指令集非常小,这样学起来会容易得多.Emu8086同主流汇编程序相比,语法简单得多,但是它能生

8086指令系统

通用寄存器: 数据寄存器:累加器AX,基址寄存器BX,计数器CX,数据寄存器DX 变址寄存器:源地址寄存器SI,目的变址寄存器DI 指针寄存器:基址指针BP,堆栈指针SP 段寄存器: 代码段寄存器CS,堆栈段寄存器SS,数据段寄存器DS,附加段寄存器ES 标志寄存器:FLAGS,指令指针:IP 数据寄存器 8086有4个16位数据寄存器:AX,BX,CX,DX;它们都可以分为两个独立的8位寄存器:AH/AL,BH/BL,CH/CL,DH/DL;对其中的某8位操作,并不影响另外对应8 位寄存器的数 据.数据寄存器是通用的,用来存放计算结果和操作数, 但每个寄存器又有它们各自专用目的,主要是: AX称为累加器,使用程度最高,用于算术,逻辑运算及与外设传送信息等; BX称为基地址寄存器,常用做存放存储器的地址; CX称为计数器,作为循环和串操作等指今中隐含的计数器; DX称为数据寄存器,常用来存放双字节长数据的高16位,或存放外设端口地址. 指针及变址寄存器 指针及变址寄存器包括SI,DI,BP,SP四个16位寄存器,常用于存储器寻址时提供地址.SI源变址寄存器,DI 目的变址寄存器,一般与DS联用确定数据段中某一存储单元地址.SP堆栈指针寄存器,指示栈顶的偏移地址;BP基址指针寄存器, 表示堆栈段中的基地址.IP16位指令指针寄存器,指示代码段中指令的偏移地址,它与代码段寄存器CS 联用,以确定下一条指令的物理地址.处理器利用CS:IP取得下一条要执行的指令,然后修改IP的内容,使之指向下一条指令的存储器地址.

标志寄存器(FLAGS) 也称为状志标志寄存器PSW 0 CF(Carry Flag) 进位标志 1 2 PF(Parity Flag)零标志 3 4 AF(Auxiliary Carry Flag)辅助进位标志 5 6 ZF(Zero Flag)零标志 7 SF(Sign Flag)符号标志:运算结果最高有效位的状态就是符号位的状态. 8 TF(Trap Flag)陷井标志 9 IF(Interrupt-enable Flag)中断允许标志 10 DF(Direction Flag)方向标志 11 OF(Overflow Flag)溢出标志 12 13 14 15 状态标志:CF,ZF,SF,PF,OF,AF 控制标志:DF,IF,TF 8086的字长是16位的,但其地址线是32位的. 8086处理器将1M存储器空间分成许多逻辑段(Segment),每个段的最大限为16KB. 这样,每个存储单元就可以用"段地址:段内偏移地址"表达其准确的物理位置."段地址:偏移地址"的形式称为逻辑地址 .将逻辑地址中的段地址左移4位(这是对二进制而言,若是十六进制,只要左移一位),加上偏移地址就得到20位物理地址. 例如逻辑地址"1460H:100H"表示物理地址14700H, 同一个物理地址可以有多个逻辑地址形式. 8位通用寄存器AH/AL/BH/BL/CH/CL/DH/DL

8086指令集

8086指令集 一、数据传送指令 1.通用数据传送指令 MOV(Move)传送 PUSH(Push onto the stack)进栈 POP(Pop from the stack)出栈 XCHG(Exchange)交换 .MOV指令 格式为: MOV DST,SRC 执行的操作:(DST)<-(SRC) .PUSH进栈指令 格式为:PUSH SRC 执行的操作:(SP)<-(SP)-2 ((SP)+1,(SP))<-(SRC) .POP出栈指令 格式为:POP DST 执行的操作:(DST)<-((SP+1),(SP)) (SP)<-(SP)+2 .XCHG 交换指令 格式为:XCHG OPR1,OPR2 执行的操作:(OPR1)<-->(OPR2) 2.累加器专用传送指令 IN(Input) 输入 OUT(Output) 输出 XLAT(Translate) 换码 这组指令只限于使用累加器AX或AL传送信息. .IN 输入指令 长格式为: IN AL,PORT(字节) IN AX,PORT(字) 执行的操作: (AL)<-(PORT)(字节) (AX)<-(PORT+1,PORT)(字) 短格式为: IN AL,DX(字节) IN AX,DX(字) 执行的操作: AL<-((DX))(字节) AX<-((DX)+1,DX)(字) .OUT 输出指令 长格式为: OUT PORT,AL(字节) OUT PORT,AX(字) 执行的操作: (PORT)<-(AL)(字节) (PORT+1,PORT)<-(AX)(字) 短格式为: OUT DX,AL(字节) OUT DX,AX(字) 执行的操作: ((DX))<-(AL)(字节) ((DX)+1,(DX))<-AX(字) 在IBM-PC机里,外部设备最多可有65536个I/O端口,端口(即外设的端口地址)为0000~FFFFH.其中前256个端口(0~FFH)可以直接在指令中指定,这就是长格式中的PORT,此时机器指令用二个字节表示,第二个字节就是端口号.所以用长格式时可以在指定中直接指定端口号,但只限于前256个端口.当端口号>=256时,只能使用短格式,此时,必须先把端口号放到DX寄存器中(端口号可以从0000到0FFFFH),然后再用IN或OUT指令来传送信息. .XLAT 换码指令 格式为: XLAT OPR 或: XLAT 执行的操作:(AL)<-((BX)+(AL)) 3.有效地址送寄存器指令 LEA(Load effective address)有效地址送寄存器LDS(Load DS with Pointer)指针送寄存器和DS LES(Load ES with Pointer)指针送寄存器和ES .LEA 有效地址送寄存器 格式为: LEA REG,SRC 执行的操作:(REG)<-SRC 指令把源操作数的有效地址送到指定的寄存器中. .LDS 指针送寄存器和DS指令 格式为: LDS REG,SRC 执行的操作:(REG)<-(SRC) (DS)<-(SRC+2) 把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中.该指令常指定SI寄存器. .LES 指针送寄存器和ES指令 格式为: LES REG,SRC 执行的操作: (REG)<-(SRC) (ES)<-(SRC+2) 把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中.该指令常指定DI寄存器. 4.标志寄存器传送指令 LAHF(Load AH with flags)标志送AH SAHF(store AH into flags)AH送标志寄存器PUSHF(push the flags) 标志进栈 POPF(pop the flags) 标志出栈 .LAHF 标志送AH 格式为: LAHF 执行的操作:(AH)<-(PWS的低字节) .SAHF AH送标志寄存器 格式为: SAHF 执行的操作:(PWS的低字节)<-(AH) .PUSHF 标志进栈 格式为: PUSHF 执行的操作:(SP)<-(SP)-2 ((SP)+1,(SP))<-(PSW) .POPF 标志出栈 格式为: POPF 执行的操作:(PWS)<-((SP)+1,(SP)) (SP)<-(SP+2) 二、算术指令 1.加法指令 ADD(add)加法 ADC(add with carry)带进位加法 INC(increment)加1 .ADD 加法指令 格式: ADD DST,SRC 执行的操作:(DST)<-(SRC)+(DST) .ADC 带进位加法指令 格式: ADC DST,SRC 执行的操作:(DST)<-(SRC)+(DST)+CF .ADD 加1指令 格式: INC OPR 执行的操作:(OPR)<-(OPR)+1

微机原理与接口技术:指令系统简介

3.1 概述 指令系统是微处理器的基本功能描述,是各种程序设计语言的基础。8086/8088指令系统是Intel 80X86系列微处理器的基本指令集,包括数据传送指令、算术运算指令、逻辑运算指令和移位指令、控制转移指令和处理器控制指令。这些指令是汇编语言程序设计基础。 程序是人操纵驾驭计算机的工具,程序设计语言是编制程序的工具。程序设计语言主要分类为机器语言、汇编语言和高级语言。这些语言的使用环境不同,操纵计算机的方法不同,各有优缺点。 3.1.1 机器语言与汇编语言 机器语言能被计算机硬件直接识别并执行,它由二进制代码组成。机器语言中的每一条称为指令,计算机能够识别的所有指令的集合称为指令系统。指令是计算机能够执行的最小功能单位,机器语言程序就是由一条条的指令按一定顺序组织起来的指令序列。计算机的CPU不同,指令系统也不同。INTEL公司的80X86系列CPU,因其硬件结构设计上的包容性,指令系统具有兼容性,用8088/8086CPU的指令系统设计的程序可以在80X86系列的CPU上执行。8088/8086CPU的指令系统常被称为80X86系列CPU的基础指令。本章以8086CPU为主,介绍常用计算机指令的格式、寻址方式和用法。 一条指令一般由操作码和操作数两部分组成。操作码详细地说明指令要执行的操作,操作数是指令执行时需要的数据。机器语言中操作码和操作数都是二进制代码,因而难于记忆、书写和输入,即使对于计算机的设计者也一样难于使用。因此,对指令中的操作码和操作数用便于记忆的符号代替,编程语言因而有了第一次发展,由机器语言进化到汇编语言。符号化的操作码称为指令助记符,操作数称为操作数助记符。 汇编语言是一种符号语言。用汇编语言编制的程序称为汇编语言源程序,计算机不能直接识别执行,必须翻译成机器语言程序。翻译的过程称为汇编,完成汇编工作的程序称为汇编程序。汇编程序属于系统程序,是汇编语言的命令处理程序。 汇编语言是一种面向机器的语言,它可以高效地控制计算机硬件,但计算机的CPU不同,汇编语言也不同,它的兼容性差。机器语言和汇编语言统称为低级语言。本章以8086CPU 为主,介绍常用的汇编语言指令格式、寻址方式和用法。 3.1.2 指令的基本构成 1. 指令的一般格式 一条指令包含操作码和操作数两部分。任何指令都含有操作码,操作数可以有一个也可以有两个,还可以没有。只有一个操作数的指令常称为单操作数指令,有两个操作数的指令常称为双操作数指令。形式上无操作数的指令,通常操作数是隐含的。操作数有源操作数和目的操作数之分。 1~6个字节 8086CPU指令由1~6个字节组成。操作码占1~2个字节,操作数占2~4字节。操作码的长度取决于指令系统的规模大小。操作数的长度与指令的寻址方式有关。

微机原理:EMU8086使用及指令系统熟悉

[公司名称] 实验一 EMU8086使用及指令系统熟悉微机原理上机实验 [日期]

一、实验要求 1.熟悉并掌握EMU8086 汇编语言调试环境; 2.学习8086的指令系统,输入简单的指令,观察各寄存器、内存相关单元以及处理器标志位的变化(数据传送类指令,算数运算类指令,逻辑运算类指令,标志处理和CPU控制类指令,移位和循环移位类指令,处理器控制类指令等,要求每类指令至少一个用例。具体用例自行设计,可参考教材用例); 3.学习汇编语言程序设计的基本步骤和方法; 4.学会使用EMU8086 debug调试程序; 5.编写一个简单的程序:将“This is my first ASM program-姓名(汉语拼音各人的姓名)”放在DS=1000H,BX=0000H开始的存储器单元中,然后将该内容搬移到BX=0100H开始的单元中,最后将该字符串通过DOS功能调用显示在屏幕上。 二、实验目的 1.学习EMU8086仿真开发环境的使用,理解和掌握汇编语言编程的基本步骤; 2.熟悉8086指令系统; 3.熟悉变量、常量及伪指令的使用; 4.熟悉内存单元的存储结构,字符串的处理以及简单的编程。 三、实验过程(调试分析) 3.1熟悉并掌握EMU8086汇编调试环境

此为EMU8086新建汇编源程序的界面,对应有四种模板可以挑选: ①COM——无需分段,所有内容均放在代码段中,程序代码默认从ORG 0100H开始 ②EXE——需要分段,内容按代码段、数据段、堆栈段划分,编译器自动完成空间的分配 ③BIN——二进制文件,适用于所有用户定义的结构类型 ④BOOT——适用于在软盘中创建的文件 ⑤empty workspace可以创建空的文档 此为一个EXE的模板

8086指令系统汇编实训实例

8086指令系统实训实例 一、80x86微处理器中的寄存器 图1-1 80x86微处理器的基本结构寄存器 标志寄存器对照表 标志名称 设置 未设置 标志名称 设置 未设置 溢出 OV(溢出) NV(未溢出) 零位 ZR (为0) NZ(不等于零) 方向 UP(增加) DN (减少) 辅助进位 AC (有进位)NA(无进位) 中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇) 符号 NG(负) PL(正) 进位 CY (有进位) NC(清除进位) 累加器基址寄存器 计数寄存器 数据寄存器 堆栈指针寄存器 基址指针寄存器 源变址寄存器 目的变址寄存器 指令指针寄存器 标志寄存器 代码段寄存器 段寄存器 附加段寄存器 堆栈段寄存器 数据寄存器 地址指针和 变址寄存器 控制寄存器 通用寄存器 数据段寄存器

二、用DEBUG软件学习汇编语言 DEBUG的几点规则说明: 1.所有数据默认为16进制数,后缀“H”不用加; 2.DEBUG命令都是一个字母,字母大小写不分,后面的参数可以用空格分开, 也可以不用;命令与数字之间可以不分开,但是两个十六进制数字之间必须分开,如: L100 = L 100;100 110 ≠100110 ; 3.DEBUG中的地址表示格式有如下几种: 1)段寄存器:偏移量,如:cs:100 2)段地址:偏移量,如:04ba:100 或4ba:100 3)默认段寄存器不写,只写偏移量,如:100; 4)确定地址范围可以有两种表示方式: a)段地址:起始地址的偏移量结束地址的偏移量,如:cs:100 110; b)段地址:起始地址的偏移量L(长度),如:cs:100 L10; DEBUG软件基本指令用法一览表

第三章_8086指令系统

第三章 8086指令系统 课时分配: 10学时 教学要求: 1、掌握8086的寻址方式; 2、了解8086的指令编码格式和指令系统概况; 3、掌握每一个指令的功能、汇编格式及用法; 教学内容: 1、寻址方式 2、指令系统 重点及难点: 掌握8086CPU的寻址方式、指令系统中指令的分类及其常用指令的格式和功能; 根据需要能够灵活运用指令; §1寻址方式 一、概述 1、指令与指令系统 指令:控制计算机完成指定操作的命令; 指令系统:其所有指令的集合,就称为该计算机的指令系统; 8086的指令系统包括92种基本指令,按照所实现的功能,可分为6大类:数据传送指令;算术运算指令;逻辑运算和移位指令;串操作;控制转移指令;处理器控制指令。 2、指令格式 操作码 [操作数],[操作数] 操作码:也称为指令码,指计算机所要执行的操作,来实现的具体功能,用助记符来表示。 操作数:指在指令执行操作的过程中所需要的操作对象。可以有0个、1个或2个。 3、操作数分类 1)立即数操作数:也就是常数,在程序执行过程中,不会发生变化。8位或16位。只能用作元 操作数,不能用于目的操作数。 举例: 2)寄存器操作数:存放在通用寄存器中或段寄存器中。既可作源操作数,也可用于目的操作数, 但CS除外。可以是8位,也可以是16位

举例: 3)存储器操作数:可以是字节、字,也可以是双字。既可作源操作数,也可用于目的操作数。 但不允许源操作和目的操作数同时为存储器操作数。 MOV AH,[3120] MOV AX,[3120] LDS SI,[BX];地址传送指令;将把BX所指的32位地址指针的段地址部分送入DS,偏移量部分送入SI; 4、存储器操作数的地址 能够唯一标示一个存储器单元的是物理地址,由段地址和偏移地址组成。要寻找一个存储器操作数,首先要确定所在段的段地址。如果指令中没有指明所涉及到段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段。 操作数的偏移地址:也称为有效地址,可以通过不同的寻址方式由指令给出。 5、指令的执行时间 了解指令的执行时间,在有时是非常重要的。例如用软件产生定时或延时时,需要估算出一段时间的运行时间。由于8086系统的指令种类很多,详细讨论比较繁琐也没不要,这里只作一般讨论。 一条指令的执行时间包括:取指令、取操作数、执行指令、传送结果。单位用时钟周期数表示。 不同指令的执行时间有较大的差别,书上列出了部分常用指令的执行时间及访问存储器的次数,如P96中表3-4所示。 存取操作数的时间与采用的寻址方式有关,寄存器操作数占用的时间最短,而存储器操作数占用的时间长一些,因为还需要考虑计算偏移地址所花费的时间。 二、寻址方式 寻址方式:主要是指获得操作数所在地址,也就是操作数的偏移地址(有效地值)。一般是指源操作数的地址。 在8086系统中,一般将寻址方式分为两种不同的类型,一类是寻找操作数的地址,另一类是寻找要执行的下一条指令的地址,即程序的地址。主要在程序转移或过程调用时用来寻找目的地址或入口地址。这将在调用指令CALL和程序转移指令JMP中详细介绍。 本章节主要讨论针对操作数地址的寻址方式。 共有7种寻址方式:

8086指令系统测试题

8086指令系统测试题 说明:8086的指令系统测试题共有85条指令,测试的目的是让学生熟记指令且能运用指令完成指定任务, 为第四章的程序设计打下基础。最后,对本章中的寻址方式进行测试和考查。 一、请在每个括号内填入一条适当的指令,使之能完成该括号前的题目所指定的任务。(1空1分) 数据传送指令(14条) 1.将AX的内容送BX。(MOV BX,AX ) 2.将CX的内容压入堆栈。(PUSH CX ) 3.将堆栈的栈顶内容弹出送至DX。(POP DX ) 4.对DX的内容和数据段中偏移地址为200H的内容进行交换。(XCHG DX,200H ) 5.对TABLE表使用表转换指令。(XLAT TABLE ) 6.将端口80H的内容送至AL。(IN AL,80H ) 7.将AX的内容写入60H端口。(OUT AX,60H ) 8.取TABLE表的偏移地址送BX。(LEA BX,TABLE ) 9.从地址为450H的存储单元内容取出4个字节,分别送至SI和DS寄存器。(LDS SI,[450H] ) 10.从地址为450H的存储单元内容取出4个字节,分别送至DI和ES寄存器。(LES DI[450H] ) 11.将标志位送AH指令。(LAHF ) 12.AH送标志位指令。(SAHF ) 13.标志进栈指令。(PUSHF ) 14.标志出栈指令。(POPF ) 算术运算指令(20条) 1.将AX的内容和地址为2233H的存储单元内容相加,结果放在AX中( MOV CX ,2233H;ADD AX,CX ) 2.对BL、CL、以及CF的内容相加。结果放在BL中。(ADC BL,CL ) 3.对CX的内容做增1的操作。(INC CX ) 4.做减法BX-DX,结果放在BX中。(SUB BX,DX ) 5.做减法BX-DX-CF,结果放在BX中。(SBB BX,DX ) 6.做CX的减1操作。(DEC CX ) 7.对BL的内容取负。(BEG BL ) 8.做CX和0FFH的大小比较。(CMP CX,0FFH ) 9.将AL中的无符号数和数据段中地址为10H的存储单元内容相乘。(MUL 10H ) 10.将AX中的有符号数和数据段中地址为10H的存储单元内容相乘。(IMUL 10H ) 11.将AX中的无符号数除以BL的内容。(DIV BL ) 12.将AX中的有符号数除以BL的内容。(IDIV BL ) 13.把字节扩展成字的指令。(CBW )

相关主题
文本预览
相关文档 最新文档