汇编语言指令系统
指令系统与汇编语言程序设计
1010011i n
85 n1 n2
MOV DPTR,#d1d2 ;DPTR←d1d2
90 d1 d2
习题1:找出配对指令,实精现选p反pt 向传送。
《单片机原理及应用》教学课件
例2-4-1:顺序执行下列指令序列,求每一步执行结果。
MOV A,#30H
;A= 30H
MOV 4FH,A
;(4FH)= 30H
2-1 指令格式
一. 汇编语言指令格式 [标号:]操作码 操作数1,操作数2[;注释]
换行表示一条指令结束。 例: LOOP: MOV A,#40H ;取参数
1.标号:指令的符号地址 2.操作码:指明指令功能。 3.操作数:指令操作对象 数据、地址、寄存器名及约定符号。 4.注释行:说明指令在程序中的作用。
第2章 指令系统与汇编语言程序设计 2-1 指令格式 2-2 指令寻址方式 2-3 状态标志 2-4 MCS-51指令系统
《单片机原理及应用》教学课件
单片机指令系统概述
一、MCS-51指令分类
MCS-51单片机共有111条指令。 1.按指令所占的字节数分类
①单字节指令49条 ②双字节指令46条 ③三字节指令16条 每条指令的平均字节数:
精选ppt
《单片机原理及应用》教学课件
例:查表法求Y=X2。设X(0≤X≤15)在片内RAM的20H单元中,要 求将查表求Y,存入片内RAM21H单元。
2)指令地址
1000H 1002H 1004H 1005H 1007H 1008H 100BH
源程序
ORG 1000H
;程序起始地址
SQU: MOV A,20H ;取X
操作码和操作数是指令主体。
精选ppt
指令系统、机器语言、汇编语言
指令的执行过程
指令序列存储在存储器中(von Neumann结构) 由PC从存储器中取出指令, 经过译码执行等过程完成一条指令的执行
汇编程序和汇编器
结束语
谢谢大家聆听!!!
17
完成算术(加、减、乘、除等)和逻辑运算(与、 或、非、异或等)
寄存器
CPU上的一小块存储区域,用于存储中间结果
CPU中的基本概念
控制器:控制指令的执行过程
程序计数器(PC):存放下一条指令地址的寄存 器
IR:存放当前指令的寄存器 数据寄存器
指令的执行过程
根据PC从存储器中取出指令,保存到IR寄存 器中;
程序的二进制代码存储
地址
内容
0000 :11100000 00000000 01001000 —— 0000000 01101001 —— E0 00 65
0006 :11100000 00000000 01101100 —— E0 00 6C
0009 :11100000 00000000 01101100 —— E0 00 6C
指令操作码(5位) 寻址方式(2位):00-立即寻址;01-直接寻址 0
数据(16位)
一些指令实例
操作码(5位) 含义
操作码(5位) 含义
00000
停机
00001
将操作数装入A
指令系统与汇编语言程序设计例
1
程序1
DATA SEGMENT
NAMES DB ‘TOM..’,20 DB ‘CATE’,25 DATA ENDS 该数据区在内存中的存放情况?
2
程序2
DATA SEGMENT A DB ‘123ABC’
DATA ENDS
DATA SEGMENT
9
10
)
序
,(
序
程
ห้องสมุดไป่ตู้
,
,
,
:
5
MOV DX 280H IN AL DX MOV CX 8 NEXT ROR AL 1 JNC NEXT1 MOV Byte PTR[BX]
0FFH JMP NEXT2 NEXT1 MOV [BX] 0
,
,
:
程序5(序)
NEXT2:INC BX LOOP NEXT …… 如果从280H端口输入的是
ASSUME CS:CODE, DS:DATA, ES:DATA
STR2 DB ‘HELLO WOOLD!’ FLAG DB ? CODE SEGMENT
DATA SEGMENT
6
程序4 (序)
START:MOV AX,DATA MOV DS,AX MOV ES,AX LEA BX,FLAG LEA SI,STR1 LEA DI,STR2 MOV CX,COUNT CLD
LP:MOV AH,2 MOV AL,[BX] XCHG AL,DL
CODE SEGMENT
INC BX
ASSUME CS:CODE,
DS:DATA
START:MOV AX, DATA
MIPS 指令系统和汇编语言
其中 A1 为目的操作数地址,A2 为源操作数地址。 指令的含义:(A1)OP(A2)→A1。 (3)一地址指令 一地址指令顾名思义只有一个显地址,它的指令格式为: OP A1
一地址指令只有一个地址, 那么另一个操作数来自何方呢?指令中虽未明显给出,但按事 先约定,这个隐含的操作数就放在一个专门的寄存器中。因为这个寄存器在连续性运算时,保 存着多条指令连续操作的累计结果,故称为累加寄存器(AC) 。 指令的含义:(AC)OP(A1)→AC (4)零地址指令 零地址指令格式中只有操作码字段,没有地址码字段,其格式为: OP 零地址的运算类指令仅用在堆栈计算机中的。 堆栈计算机没有一般计算机中必备的通用寄 存器,因此堆栈就成为提供操作数和保存运算结果的唯一场所。通常,参加运算的两个操作数 隐含地从堆栈顶部(栈顶和次栈顶单元)弹出,送到运算器中进行运算,运算的结果再隐含地 压入堆栈中。对于同一个问题,用三地址指令编写的程序最短,但指令长度(程序存储量)最 长;而用二、一、零地址指令来编写程序,程序的长度一个比一个长,但指令的长度一个比一 个短。
作码结构等,是一个很复杂的问题,它与计算机系统结构、数据表示方法、指令功能设计等都 密切相关。
指令的基本格式
一条指令就是机器语言的一个语句, 它是一组有意义的二进制代码, 指令的基本格式如下: 操作码字段 地址码字段
其中操作码指明了指令的操作性质及功能,地址码则给出了操作数的地址。 指令的长度是指一条指令中所包含的二进制代码的位数, 指令长度与机器字长没有固定的 关系,它可以等于机器字长,也可以大于或小于机器字长。通常,把指令长度等于机器字长的 指令称为单字长指令; 指令长度等于半个机器字长的指令称为半字长指令;指令长度等于两个 机器字长的指令称为双字长指令。 在一个指令系统中,若所有指令的长度都是相等的,称为定长指令字结构。定长结构指令 系统控制简单,但不够灵活。若各种指令的长度随指令功能而异,就称为变长指令字结构。现 代计算机广泛采用变长指令字结构,变长结构指令系统灵活,但指令的控制较复杂。 计算机执行一条指令所需要的全部信息都必须包含在指令中。 对于一般的双操作数运算类 指令来说,除去操作码之外,地址码字段中应包含以下信息: 第一操作数地址。 第二操作数地址。 操作结果存放地址。 这些信息可以在指令中明显的给出,称为显地址;也可以依照某种事先的约定,用隐含的 方式给出,称为隐地址。所以,从地址结构的角度可以分为三地址指令、二地址指令、一地址 指令和零地址指令。 (1)三地址指令 三地址指令格式为: OP A1 A2 A3
大学课件MCS51单片机指令系统与汇编语言程序设计
ANL C, P ; (C)← (C)∧(P)
其中:P是PSW的第0位,C是PSW的第7位。
(4)字节符号地址(字节名称)加位序号的形式。对于部分特 殊功能寄存器(如状态标志寄存器PSW),还可以用其字节名 称加位序号形式来访问某一位。AC 如:
定义:操作数存放在MCS-51内部的某个工作寄存器Rn (R0~R7)或部分专用寄存器中,这种寻址方式称为 寄存器寻址。
特点:由指令指出某一个寄存器的内容作为操作数。 存放操作数的寄存器在指令代码中不占据单独的一个 字节,而是嵌入(隐含)到操作码字节中。
寻址范围:四组通用寄存器Rn(R0~R7)、部分专用 寄存器( A, B, DPTR, Cy )。
伪指令只出现在汇编前的源程序中,仅提供汇编用的某些控制 信息,不产生可执行的目标代码,是CPU不能执行的指令。
(1)定位伪指令ORG
格式:ORG n
其中:n通常为绝对地址,可以是十六进制数、标号或表达式。
功能:规定编译后的机器代码存放的起始位置。在一个汇编 语言源程序中允许存在多条定位伪指令,但每一个n值都应和前
2.2.2 直接寻址
定义:将操作数的地址直接存放在指令中,这种寻址方式称为 直接寻址。 特点:指令中含有操作数的地址。该地址指出了参与操作的数 据所在的字节单元地址或位地址。计算机执行它们时便可根据 直接地址找到所需要的操作数。
寻址范围:ROM、片内RAM区、SFR和位地址空间。P42
2.2.3 寄存器寻址
定义:指令中给出的操作数是一个可单独寻址的位地址,这种寻址 方式称为位寻址方式。
特点:位寻址是直接寻址方式的一种,其特点是对8位二进制数中 的某一位的地址进行操作。
寻址范围:片内RAM低128B中位寻址区、部分SFR(其中有83位 可以位寻址)。
第2章 指令系统与汇编语言基础(2.1--2.4)
1.Java 程序设计语言的特征
Java 程序设计语言与其他高级语言程序不同的是,它并 不需要编译成能被处理器所执行的机器码。而是被编译成 为一种称为字节码的格式。如图2.1所示: • 这种字节码被输进Java 虚拟机或称为JVM中,由JVM来 解释和执行这种代码。JVM可以是一个硬件芯片,但它本 身通常是一种程序,常常是Web浏览器的一部分。你可以 把字节码当成是JVM的机器码。 • 所谓“虚拟”其本意是“不符合或不一定符合事实的”。 在虚拟系统中,用户(程序员)看不到下一层级东西(见 图1.4)。但如果有需要的话,程序员是可以看到下一层 级虚拟机的东西,但看不到实际机器。
2.2 程序设计语言的级别
人们与计算机交换信息只能通过计算机语言,如果说 今天有各种各样计算机语言的话,归纳起来只有以下三大 类: 1. 机器语言(又称二进制机器语言、二进制数字化语言、 无符号计算机语言等) 2. 汇编语言:属于计算机最低级的符号语言,因为每一 条汇编语言指令(汇编语言伪指令除外)对应一条二进制 机器语言指令(又称机器指令)。具有平台专用性。 3. 高级语言:诸如VC++、Java、SQL和Fortran 之类 的语言都是高级语言,这类语言的特点是几乎每一条语句 都需要用一串的机器指令才能实现。这也可以说是“语句” 与“指令”的区别所在。具有平台无关性 以上三类计算机语言统称为程序设计语言。
问题:什么是数据表示? 什么是数据结构? 两者有何关系? 为什么要学习数据结构?
为什么要学习数据结构呢?
因为计算机(其实是CPU)只能够识别有限 的数据类型,而在自然界中存在着大量的CPU不 能直接识别的数据,因此要学习数据结构。 学习数据结构的目的是学习如何用数据结构 (典型的有:串、数组、向量、图、表、队列、 树等)的方法将原CPU无法直接识别、引用和处 理的数据转换为CPU能直接识别、引用和处理数 据类型,这样计算机才能解决这类问题。
MIPS指令系统和汇编语言
MIPS指令系统和汇编语言MIPS(Microprocessor without Interlocked Pipeline Stages)指令系统,是一种以RISC(Reduced Instruction Set Computer,精简指令集计算机)为基础的处理器架构。
作为一种广泛应用于嵌入式系统和计算机组成的指令集架构,MIPS指令系统以其简洁高效的特性而受到广泛关注和应用。
一、MIPS指令系统概述MIPS指令系统的设计目标之一是提高处理器的性能,并降低设计的复杂性。
它采用了统一的指令格式,包括操作码、源操作数以及目的操作数等字段,使得指令的译码和执行过程更加高效。
此外,MIPS的指令集还支持延迟槽、流水线和分支延迟等特性,以进一步提升指令执行的效率。
二、MIPS指令格式MIPS指令格式遵循统一的规则,包括三种基本类型的指令格式:R 型、I型和J型指令。
R型指令主要用于寄存器之间的操作,包括算术运算、逻辑运算等;I型指令用于立即数和寄存器之间的操作,涵盖了数据传输、分支跳转等功能;J型指令主要用于无条件跳转。
三、MIPS指令编码和寻址方式MIPS指令采用固定长度的指令编码格式,使得指令的解析和处理更加高效。
在寻址方面,MIPS支持多种寻址方式,包括立即寻址、寄存器寻址和间接寻址等。
这些灵活的寻址方式使得MIPS指令更加适用于不同的计算需求。
四、MIPS汇编语言MIPS汇编语言是一种用于编写MIPS指令的低级语言。
它是一种基于文本的表示形式,使用助记符来表示不同的指令和操作。
MIPS汇编语言具有简单易学的特性,更加接近底层硬件的工作原理,使得程序员可以更加精准地控制和优化程序的执行过程。
五、MIPS指令系统的应用由于MIPS指令系统的优越性能和灵活性,它被广泛应用于各种领域。
在嵌入式系统中,MIPS处理器可以实现高性能和低功耗的设计,广泛应用于智能手机、路由器、电视机等设备中。
在计算机组成和操作系统领域,MIPS指令系统被用于讲解和研究计算机的工作原理和底层机制。
第3章_89C51的指令系统
⑤ 操作数与操作码之间用空格分隔,操作数与 操作数之间用逗号“,”分隔。
⑷ 注释:指令功能说明。
① 注释属于非必需项,是为便于阅读, 对指令功能作的说明和注解。 ② 注释必须以“;”开始。
指令有单字节指令、双字节指令、三字节不同长 度的指令,格式不同: (1)单字节指令:操作码、操作数 同在一个字 节中。
方括符[ ]表示可选项 标号代表指令所在地址,1-8个字母/数字,“:‖结尾
⑴
标号:指令的符号地址。
① 用于一段功能程序的识别标记或控制 转移地址。 ② 指令前的标号代表该指令的地址, 是用符号表示的地址。 ③ 一般用英文字母和数字组成。
④
标号必须用冒号“ :”与操作码分隔。
⑵
操作码:表示指令的操作功能。
MOV A,3AH ;将内RAM 3AH单元中的数据传送至A中
MOV A,P0 ;将特殊功能寄存器P0口中的数据传送至A中 说明:3AH和P0是以direct形式出现的直接地址 访问特殊功能寄存器SFR只能采用直接寻址方式。
直接寻址是给出操作数的直接地址。
3. 寄存器间接寻址方式 寄存器中存放的是操作数的地址,在寄存器前加前缀标志“@‖ 。 访问内部RAM或外部RAM的低256个字节时,只能采用R0或R1作 为间址寄存器。例如: MOV A,@Ri ;i=0或1 其中Ri中的内容为40H,把内部RAM40H单元内容送A。 寻址范围: (1)访问内部RAM低128个单元,其通用形式为@Ri (2)对外部RAM的64K字节的间接寻址,例如: MOVX A,@DPTR (3)片外数据存储器的低256字节 例如:MOVX A,@Ri (4)堆栈区 堆栈操作指令PUSH(压栈)和POP(出栈)使用堆栈指针 (SP)作间址寄存器
汇编语言第3章 指令系统和寻址方式
5.寄存器相对寻址方式(register relative addressing)
EA=基址(base) 或变址( index)+偏移量 (displacement)
基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段
(SI) 物理地址=(DS)*16+(BX)+displacement
(DI) =(SS)*16+(BP)+ (SI)+displacement (DI)
例:mov AX,ARRAY[BX][DI] (DS)=1000H,(BX)=1200H, (DI)=1000H, ARRAY=1000H 物理地址=DS*16+(BX)+(DI)+ARRAY =DS*16+1200+1000+1000=13200H 若:(13200)=34H,(13201)=12H 则,(AX)=1234H 允许段超越。 例:mov AL,ES:ARRAY[BX][DI] 用途:处理成组数据(举例说明)
2.段内间接寻址(intrasegment indirect addressing) (IP)新=EA=寄存器或存储单元的内容 寄存器:所有寄存器寻址方式可用的寄存器 存储单元:所有存储单元寻址方式均适用 例:JMP SI (IP)=(SI) JMP WORD PTR VAR或简写JMP VAR (DS)=1000H,VAR=2000H 存储单元的物理地址=(DS)*16+VAR=12000H (12000H)=1234H 则,(IP)新=1234H
4.寄存器间接寻址方式(register indirect addressing)
EA=基址(base) 或变址( index) 基址寄存器有:BX,BP 变址寄存器有:SI,DI 注:默认段是数据段和堆栈段 (SI) 物理地址=(DS)*16+(BX) (DI) =(SS)*16+(BP)
名词解释 指令系统
名词解释指令系统
指令系统是指计算机系统用于向计算机执行特定任务发出指令的一套规则
和机制。
指令系统是计算机硬件和软件的重要组成部分,决定了计算机能够做什么、如何执行特定任务。
指令系统由多个层次组成。
首先是汇编语言,它是用汇编语言编写的程序,
能够让计算机直接执行。
汇编语言通常使用简单的指令集,只涉及计算机寄存器和内存的使用,以及数据的操作。
接下来是高级语言,高级语言编写的程序需要通过编译器或解释器翻译成汇编语言或机器语言,才能被计算机执行。
高级语言通常使用更复杂的指令集,涉及更多的操作,例如文件读写、网络通信等。
指令系统还可以包括硬件指令和软件指令。
硬件指令是由计算机硬件直接控制的指令,例如CPU中的寄存器和内存。
软件指令是由操作系统和应用程序编写的指令,例如读写文件的指令,以及网络通信的指令。
指令系统的设计非常关键,它能够影响计算机系统的性能和效率。
优化指令系统可以提高计算机系统的处理能力和响应速度,也可以降低硬件成本和复杂度。
指令系统的错误或缺陷可能导致计算机系统出现错误或崩溃,因此必须保证指令系统的稳定性和可靠性。
指令系统是现代计算机系统的重要组成部分,对于计算机系统的性能和效率有着至关重要的作用。
4 汇编指令系统
POP AX
POP BX
例②:已知SS=2000H,AX=1600H,SP=0202H, CX=3456H,当执行以下两条指令:
PUSH AX
PUSH CX 以后SS,AX,CX,SP的内容和存储器中 201FFH单元的内容为多少?
⑶ 注意:
堆栈操作数不能为立即数
例:PUSH 0EF34H
堆栈操作数不能为代码段寄存器CS
第四章 汇编语言指令系统
8086/8088指令概述
按指令中显示给出的操作数个数进行的分类: 双操作数指令:有两个操作数,分别为源操作数和目 的操作数 单操作数指令:如果指令仅需要一个操作数,那么它 既是源操作数,又是目的操作数。 无操作数指令:有两种情况,一种是需要操作数,但 是是隐含指定的,在指令中没有显示;另一种是指令 本身不需要操作数。
01H 3BH (执行PUSH AX之前)
SS:01FC SS:01FD SS:01FE
(执行PUSH AX之后)
⑵ POP —— 出栈指令
① 指令格式: POP OPS ② 操作:堆栈指令必须是16位双字节数,即每进行一次POP 操作,SP加2 (OPS) ((SP)+1,(SP)) , (SP) (SP)+2
⑵ 出栈: POP OPS
⑴ PUSH —— 进栈指令
① 指令格式: PUSH OPS ② 操作:堆栈指令必须是16位双字节数,即每进行一次 PUSH操作,SP减2 (SP) (SP)-2, ((SP)+1,(SP)) (OPS)
1
堆栈
2
SS:01FB
堆栈
SS:01FB SP AL AH 01H 3BH SS:01FC SS:01FD SS:01FE
PIC单片机指令系统和汇编语言程序设计
第二章PIC单片机指令系统和汇编语言程序设计2.1 指令系统概述2.1.1 指令的表示方法1.机器指令的表示方法:指令用于规定计算机的基本操作。
一台计算机所能执行的指令集合就是它的指令系统。
指令共有两种表示方法,分别是机器语言表示方法和汇编语言表示方法。
不同种类的单片机有不同的一套命令(即所谓“指令系统”)。
2.汇编语言的表示方法:汇编语言是对机器语言的改进,它采用便于人们记忆的一些符号(例如简化的英文单词)来表示操作码、操作数和地址码等。
通常把表示指令的符号称之为助记符。
3.PIC16F87X单片机指令:PIC16F87X单片机采用精简指令集(RISC)结构,指令效率高,功能强。
它的指令为单字的宽字位(14)指令,由此生成的程序代码短。
指令条数少,仅有35条。
(1)面向字节操作类(2)面向位操作类(3)常数操作和控制类操作。
2.1.2PIC单片机指令的寻址方式1.寄存器间接寻址:所谓寄存器间接寻址指的是通过寄存器F0、F4来实现。
实际的寄存器地址放在F4的低5位中,通过F0来进行间接寻址。
INDF不是物理上实际存在的寄存器,而任何寻址INDF的指令都是以FSR寄存器内容为地址的RAM单元中存放着参加运算或操作的数据。
2.立即数寻址:所谓立即寻址就是操作数在指令中直接给出。
通常把出现在指令中的操作数称之为立即数,因此就把这种寻址方式称之为立即寻址。
3.直接寻址:指令中操作数以其所在存储单元地址的形式给出,就称之为直接寻址。
这种方式是对任何一寄存器直接寻址访问。
4.位寻址:这种寻址方式是对寄存器中的任一位(bit)进行操作。
2.1.3指令符号的意义说明1.PIC汇编语言指令格式PIC系列微控制器汇编语言指令与MCS-51系列单片机汇编语言一样,每条汇编语言指令由4个部分组成,其书写格式如下:标号操作码助记符操作数1,操作数2;注释2.指令符号的意义说明:在PIC系列单片机指令中常把数据存储器RAM当作寄存器来使用(处理)并用字母f(或F)表示。
汇编语言第四章:指令系统和寻址方式
第四章 第一章 指令系统和寻址方式 基础知识
第四章 第一章 指令系统和寻址方式 基础知识
第四章 第一章 指令系统和寻址方式 基础知识
根据d的不同进行选取
第四章 第一章 指令系统和寻址方式 基础知识
d=1时的操作
第四章 第一章 指令系统和寻址方式 基础知识
d=0时的操作
第四章 第一章 指令系统和寻址方式 基础知识
如果2000H单元在附加段,指令为: MOV AX, ES:[2000H] 段跨越前缀: 段寄存器名: —— 改变默认使用的段寄存器
第四章 第一章 指令系统和寻址方式 基础知识
可以使用属性操作符 type PTR 来进行属性说明
第四章 第一章 指令系统和寻址方式 基础知识
(4)寄存器间接寻址方式 (Register Indirect Addressing ) 特点: (寄存器) = 操作数的偏移地址 计算操作数物理地址的公式:
next
(7)相对基址变址寻址方式 ( Relative Based Index Addressing ) 特点:(基址寄存器) + (变址寄存器)+位移量 = 操作数的偏移地址
例:设 ( SS ) = 3000H ( BP ) = 2000H ARRAY = 0250H ( SI ) = 1000H MOV AX, ARRAY[BP][SI] 要访问的存储单元物理地址为: 30000H+2000H +0250+1000H 30000H = 33250H
第四章 第一章 指令系统和寻址方式 基础知识
第四章 第一章 指令系统和寻址方式 基础知识
第四章 第一章 指令系统和寻址方式 基础知识
Байду номын сангаас
汇编语言 第3章1 80x86的指令系统和寻址方式
CS、DS、SS、ES
寄存器寻址指令
MOV AX,1234H MOV BX,AX ;AX←1234H ;BX←AX
寄存器寻址
3.1.4 存储器寻址方式
指令中给出操作数的主存地址信息(偏移
地址,称之为有效地址EA),而段地址在 默认的或用段超越前缀指定的段寄存器中
8086设计了多种存储器寻址方式
量之和,寄存器可以是BX、BP或SI、DI 有效地址=BX/BP/SI/DI+8/16位位移量
段地址对应BX/SI/DI寄存器默认是DS,对应BP
寄存器默认是SS;可用段超越前缀改变 MOV AX,[DI+06H]; mov ax,table[di] ;AX←DS:[DI+06H] MOV AX,[BP+06H] ;AX←SS:[BP+06H] 相对寻址
;AX←DS:[BX+SI+06H]
相对基址变址
位移量可用符号表示 同一寻址方式有多种表达形式
指令操作数的表达-寄存器
r8——任意一个8位通用寄存器
AH AL BH BL CH CL DH DL
r16——任意一个16位通用寄存器
AX BX CX DX SI DI BP SP
reg——代表r8或r16
(4)基址变址寻址方式
有效地址由基址寄存器(BX或BP)的内容加上
变址寄存器(SI或DI)的内容构成:
有效地址=BX/BP+SI/DI
段地址对应BX基址寄存器默认是DS,对应BP
基址寄存器默认是SS;可用段超越前缀改变 MOV AX,[BX+SI] ;AX←DS:[BX+SI] MOV AX,[BP+DI] ;AX←SS:[BP+DI] MOV AX,DS:[BP+DI] ;AX←DS:[BP+DI]
第04章 80868088指令系统
8086汇编语言程序设计
29
8086汇编语言程序设计
30
循环移位指令 指令格式: ROL/ROR DEST,COUNT
RCL/RCR
DEST,COUNT
ROL/ROR操作数循环左/右移;
RCL/RCR操作数连同CF循环左/右移。
8086汇编语言程序设计
31
8086汇编语言程序设计
32
8086汇编语言程序设计
是立即数;两操作数不能同为存储器操作数。
8086汇编语言程序设计
13
8086汇编语言程序设计
14
② 减法运算指令
减法指令
指令格式:SUB DEST, SRC
指令功能:DEST ← (DEST)-(SRC)
对标志位的影响:OF,SF,ZF,AF,PF,CF
操作数可以同为字节或字;目标操作数不能
令共 8 条;
指令格式是:
OPR DEST,COUNT
式中的COUNT是移位的次数,只能是 1 或由 CL 的内容确定;操作数只能是 8/16 位通用寄存 器或存储器单元。
8086汇编语言程序设计
25
算术移位指令 指令格式: 算术左移指令 SAL DEST,COUNT
算术右移指令 SAR DEST,COUNT
② 测试指令
指令格式:TEST DEST,SRC
指令功能:除不改变目标操作数外,和逻辑
与指令相同。如:
TEST AL,8
该指令测试AL第三位的状态。如果该位为1,
则ZF=0, 否则ZF=1,AL的内容不受影响。
8086汇编语言程序设计
24
③ 移位/循环移位指令
有算术移位指令,逻辑移位指令和循环移位指
5项目一任务2汇编语言与指令系统概述
例如:执行“MOVC A,@A+DPTR”指令 设累加器A的内容为20H,DPTR的值为2000H,程序 存储器2020H单元内容为47H,则执行该指令后累加器A 的值为47H。
DPTR 2000H A 20H 指令执行前 指令执行后 2020H ROM A 47H 47H
通常用于查表操作。
6. 相对寻址 指令系统中设有转移指令, 分为直接转移和相对转移 指令, 在相对转移指令中采用相对寻址方式。这种寻址方 式是以PC的内容为基本地址, 加上指令中给定的偏移量作
(6) 相对寻址;
(7) 位寻址
1. 立即寻址 立即寻址方式是指操作数包含在指令字节中。 跟在指令 操作码后面的数就是参加运算的数, 该操作数称为立即数。 立即数有一字节和二字节两种可能, 例如指令: MOV A, # 3AH MOV DPTR, # 0DFFFH
上述两条指令均为立即寻址H、POP。
仅在内部RAM中寻址,SP不出现在指令中
5. 变址寻址(基址寄存器+变址寄存器) 这种寻址方式以基址寄存器DPTR或PC的内容为基地址, 加上变址寄存器A的内容作为操作数的地址,用于访问程序 存储器中的数据,例如: MOVC A, @DPTR+A JMP @A+DPTR MOVC A, @ PC+A 变址寻址只能对程序存储器的数据作寻址进行读操作。
MOV A,R0 ;R0 →A,目的地址和源操作数均为寄存器寻址
4. 寄存器间接寻址
在这种寻址方式中, 寄存器的内容为操作数的地
址。寄存器间接寻址符号为“@”。 在AT89C51中,寄存器间接寻址只能使用寄存器 R0、R1 作为地址指针,寻址内部RAM区的数据;当 访问外部RAM时,可使用R0、R1及DPTR作为地址
汇编语言 第三章 实方式指令寻址与指令系统
3.2实方式32位指令寻址
实地址方式32位指令寻址,指在32位的PC机上使
用16位的存储机制,执行32位的非保护方式及非虚拟
方式的指令,达到直接存取32位寄存器和32位存储器
操作数的目的。
3.3实方式指令系统
指令系统是一台机器所有指令的集合。 Pentium系列 机指令系统庞大、类型多样,约有300多条指令,其中包 括基本指令100多条。 具有支持多进程、多任务、虚 拟存储器和多媒体等功能的32位指令。
设DS=4000H, 1、MOV AX,[3020H] 2、VAR DW 86
MOV AX,VAR 3、SI=1800H, MOV AX,[SI] 4、COUNT DW 5,6,7,8 SI=06H MOV AX,COUNT[SI]
3.1.3数据寻址与数据结构的 关系
多种寻址方式能方便、灵活的存取操作数, 支持高级语 言的某些数据结构。
寄存器间接寻址例
例:MOV AX,[BX] 设BX=1200H
代
MOV
码
段
偏移地址
┇
1200H 22H
数
AH AL 11 22
11H
据
段
寄存器间接寻址
由寄存器间接给出操作数的偏移地址;
存放偏移地址的寄存器称为间址寄存器,它们是:BX, BP,SI,DI
操作数的段地址(数据处于哪个段)取决于选择哪一 个间址寄存器:
一、立即寻址
指令中的源操作数是立即数,即源操作数是参加操作 的数据本身
例:MOV AX,1200H
AH AL
MOV
00H
代
12H
码
┇
段
寄存器寻址(Register Addressing)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第3章指令系统TMS320C54x指令系统共有指令130条,由于操作数的寻址方式不同,派生至205条。
按指令的功能,可以将C54x指令系统分成4类:算术运算指令、逻辑运算指令、程序控制指令、加载和存储指令。
下面分别对各类指令进行介绍。
3.2.1 算术运算指令算术运算指令分为加法指令(ADD),减法指令(SUB),乘法指令(MPY),乘加指令(MAC),乘减指令(MAS),双数/双精度指令(DADD,DSUB)和特殊操作指令(ABDST,SQDST)。
1.加法指令加法指令共有13条,如表3.5所示。
表3.5 加法指令整数分有符号数和无符号数两种格式,表示有符号数时,其最高位表示符号,最高位为0表示其为正数,1表示为负数;无符号数其最高位仍做为数值位计算。
例如,有符号数能够表示的最大的正数为07FFFh,等于32767,而0FFFFH表示最大的负数–1;无符号数不能表示负数,它能够表示的最大的数为0FFFFh,等于十进制数的65535。
2.减法指令减法指令共有13条,见表3.6所示。
表3.6 减法指令3.乘法指令乘法指令共有10条,见表3.7。
表3.7 乘法指令4.乘加和乘减指令乘加和乘减指令共有22条,见表3.8所示。
表3.8 乘加和乘减指令5.双操作数指令双操作数指令共有6条,见表3.9所示。
表3.9 双操作数指令6.特殊应用指令特殊应用指令共有15条,见表3.10所示。
表3.10 特殊应用指令3.2.2 逻辑运算指令逻辑运算指令包括与指令(AND),或指令(OR),异或指令(XOR),移位指令(ROL)和测试指令(BITF)。
1.与指令与指令共5条,见表3.11。
表3.11 与指令2.或指令或指令共5条,见表3.12。
表3.12 或指令3.异或指令异或指令共5条,见表3.13。
表3.13 异或指令4.移位指令移位指令共6条,见表3.14。
表3.14 移位指令5.测试指令测试指令共5条,见表见表3.15。
表3.15测试指令3.2.3 程序控制指令程序控制指令包括分支指令(B,BC),调用指令(CALL),中断指令(INTR,TRAP),返回指令(RET),重复指令(RPT),堆栈操作指令(FRAME,POP),其它程序控制指令(IDLE,NOP)。
分别例于下列表中。
1.分支指令分支指令共6条,见表3.16。
表3.16 分支指令‡条件为真,§条件为假,*延迟指令2.调用指令调用指令共5条,见表3.17。
表3.17调用指令3.中断指令中断指令有2条,见下表。
表3.18中断指令4.返回指令返回指令共有6条,见下表。
表3.19 返回指令5.重复指令重复指令共5条,见下表。
表3.20 重复指令6.堆栈操作指令堆栈操作指令共5条,见下表。
表3.21堆栈操作指令7.其它程序控制指令其它程序控制指令共7条,见下表。
表3.22 其它程序控制指令3.2.4 加载和存储指令加载和存储指令包括一般的加载和存储指令(LD,ST),条件存储指令(CMPS,SACCD),并行的读取和乘法指令(LD‖MAC),并行的读取和存储指令(LD‖ST),并行的存储和乘法指令(ST‖MAC),并行的读取和加减指令(LD‖ADD,LD‖SUB)以及其他读取类型和存储类指令(MVDD,PORTW,READA)。
1.加载指令加载指令共21条,见下表。
2.存储指令存储指令共14条,见下表。
113.条件存储指令条件存储指令有4条,见下表。
表3.25 条件存储指令4.并行加载和存储指令并行加载和存储指令有2条,见下表。
12表3.26 并行加载和存储指令5.并行加载和乘法指令并行加载和乘法指令有4条,见下表。
表3.27 并行加载和乘法指令6.并行存储和加减指令并行存储和加载指令有2条,见下表。
表3.28 并行存储和加减指令7.并行存储和乘法指令并行存储和乘法指令有5条,见下表。
表3.29并行存储和乘法指令13续表8.其它存储和加载指令有12条其它存储和加载指令,见下表。
表3.30 其它存储和加载指令3.2.5 重复执行单条指令重复执行单条指令是将下一条指令重复执行(RC)+1次,最多为65 536次,使用重复执行指令功能时,绝对的程序和数据地址是自动增加的。
当重复指令被解码时,所有中断(包括NMI,不包括RS)均被屏蔽,直到重复指令执行完毕。
但是在响应重复执行循环中响应HOLD信号,不管状态寄存器ST1中的HM为何值。
重复指令可以使被重复的指令由多周期指令变成单周期指令,表3.30列出了这些指令。
使用长偏移地址或绝对地址的单数据操作数指令不能用于重复指令,如使用*ARn(lk)、*+A R n(lk)、*+A R n(lk)%和*(lk)寻址的指令。
不能使用RPT或RPTZ指令循环执行的指令有36条,见表3.31。
14表3.31 重复执行时由多周期指令变成单周期指令的指令表3.32不能使用RPT或RPTZ指令重复指令的指令1516续表3.3 指令介绍及举例本节详细介绍了TMS320C54x 系列指令集,该指令集支持大量的信号处理操作及通用操作,如多重处理和高速控制等。
TMS320C54x 提供两种指令,一是汇编指令,另一种是代数指令。
汇编指令类似指令助记符,代数指令接近汇编指令,但更便于理解。
TMS320C54x 开发平台都支持两种指令编程和调试,也支持汇编指令和代数指令互相转换。
下面所有举例都列出了两种表达方式,前面是汇编指令表达方式,后面为代数指令表达方式。
1. ABDST语法: 汇编指令方式 代数指令方式ABDST Xmem, Ymem abdst (Xmem,Ymem )操作码:执行:(B ((Xmem )-(Ymem ))<<16 →A受OVM ,FRCT 和SXM 影响;影响C ,OVA ,OVB 。
说明:计算两向量Xmem, Ymem 之差的绝对值。
累加器A (32~16)的绝对值加到累加器B 中。
Xmem 减Ymem 之差左移16位送到累加器A 中。
若分数方式位为1(FRCT=1),则绝对值乘2。
指令字长:1个字。
周期数:1个周期。
【例】ABDST *AR3+,*AR4+ (abdst (*AR3+,*AR4+))ABAR3 AR4 FRCT 数据存储器0100h 0200h 2.ABS语法: 汇编指令方式 代数指令方式ABS src[,dst] dst=|src |17操作码:15 14 13 12 11 10 987654321执行:| (src) | → dst (or src if dst is not specified)受OVM 位影响方式如下:若OVM =1,80 0000 0000h 的绝对值为00 7FFF FFFFh ; 若OVM =0,80 0000 0000h 的绝对值为80 0000 0000h 。
影响C, OVdst说明:计算src 的绝对值,然后装入dst 中。
指令字长:1个字。
周期数:1个周期。
【例1】 ABS A,B (B=∣A |)A –53 A –53B –1000B﹢53【例2】 ABS A (A=|A |)AOVM 【例3】 ABS A (A=|A |)3. ADD语法:汇编指令方式 代数指令方式(1)ADD Smem, src src=src+Smem 或src+=Smem(2)ADD Smem,TS,src src=src+Smem <<TS 或src+=Smem <<TS(3)ADD Smem,16,src[,dst] dst=src+Smem <<16或dst+= Smem <<16(4)ADD Smem[,SHIFT],src[,dst] dst=src+Smem[<<SHIFT] 或dst+=Smem[<<SHIFT](5)AAD Xmem,SHFT,src src=src+Xmem <<SHFT 或src+= Xmem <<SHFT(6)ADD Xmem,Ymem,dst dst=(Xmem+Ymem )<<16 (7)ADD #lk[,SHFT],src[,dst] dst=src+# lk[<<[SHFT] 或dst+=# lk[<<SHFT](8)ADD #lk,16,src[,dst] dst=src+# lk <<16或dst+=# lk <<16(9)ADD src[,SHIFT],[,dst] dst=dst+src[<<SHIF] 或dst+= src[<<SHIFT](10)ADD src,ASM[,dst] dst=dst+src<<ASM或dst+= src<<ASM –32 768≤lk≤32 767, –16≤SHIFT≤15,0≤SHFT≤15操作码:(1)(2)(3)(4)15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0(5)(6)(7)(8)(9)(10)执行:(1)(Smem)+(src)→src(2)(Smem)<<(TS)+(src)→src(3)(Smem)<<16+(src)→dst(4)(Smem)[<<SHIFT]+(src)→dst(5)(Xmem)<<SHFT+(src) →src1819(6)((Xmem )+(Ymem ))<<16 →dst (7)lk <<SHFT+(src )→dst (8)lk <<16+(src )→dst (9)(src or [dst])+(src )<<SHIFT→dst (10)(src or [dst])+(src )<<ASM→dst 受SXM 和OVM 位影响。
影响C 。
说明:该指令将一个16位数加到选定的累加器中或一个采用双数据存储器操作数寻址的16位操作数Xmem 中。
被加的数值可为下列各操作数之一:● 单数据存储器操作数(Smem ); ● 双数据存储器操作数(Ymem ); ● 16位立即数(#lk ); ● src 中移位后的值。
如果定义了dst ,结果就存在dst 中;否则,存在src 中。
大部分第二操作数要移位。
当进行左移时,低位舔0,高位如下:如果SXM=1,则进行符号扩展;如果SXM=0,则清0。
对于右移,高位如下:如果SXM=1,则进行符号扩展;如果SXM=0,则清0。
指令字长:指令1、2、3、5、6、9和10:一个字。
指令4、7和8:2个字。
当Smem 使用长偏移量间接寻址或绝对寻址,指令长度增加一个字。
周期数:指令1、2、3、5、6、9和10:一个周期。
指令4、7和8:2个周期。
当Smem 使用长偏移量间接寻址或绝对寻址,指令周期增加一个周期。
【例1】 ADD AR3+,14,A ( A=A + *AR3 + << 14 )A AC C AR3 AR3 SXM SXM 0100h 0100h【例2】 ADD A, –8, B (B=B+A <<–8)A B C 注:#4568=#11D8h4. ADDC语法:汇编指令方式 代数指令方式ADDC Smem, src src = src + Smem + CARRY 或 src+ = Smem + CARRY 操作码:20执行:(Smem )+(src)+(C)→src受OVM ,C 的影响。