指令周期机器周期等各种周期介绍

指令周期机器周期等各种周期介绍
指令周期机器周期等各种周期介绍

时钟周期:

时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。

在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。

8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。

机器周期:

在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。

8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。

例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒;

指令周期:

执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。

对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。

通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

总线周期:

由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或I/O接口)进行一次访问所需时间称为一个总线周期。

总结一下,时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。

指令周期:是CPU的关键指标,指取出并执行一条指令的时间。一般以机器周期为单位,分单指令执行周期、双指令执行周期等。现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。

机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。

时钟周期:CPU的晶振的工作频率的倒数。

例子:22.1184MHZ的晶振,它的晶振周期、时钟周期和机器周期分别是多少?

以51为例,晶振22.1184M,时钟周期(晶振周期)就是(1/22.1184)μs,一个机器周期包含12个时钟周期,一个机器周期就是0.5425μs。一个机器周期一般是一条指令花费的时间,也有些是2个机器周期的指令,DJNZ,是双周期指令.

--------------------------------------------------------

红皮书118页说cpu的操作频率可达60MHZ,这个频率是机器周期还是指令周期?ARM机器周期跟指令周期有什么对应关系?由于ARM采用的是三级流水线的技术,所有的指令执行都由相同的三个阶段取指,译码,执行,那么所有的指令的执行时间是不是都是相同的?

我的理解是:如果ARM不接pll(即ARM直接采用晶振的周期),ARM的机器周期就是晶振的振荡周期,这两个是等同的,所有的指令的执行时间都是相同的,且都等于晶振周期;如果ARM连接并使能pll,则1/Fcclk就是机器周期,指令的执行频率等于Fcclk。请教高手指点更正,多谢!!

zlgarm :

没有机器周期的概念,只有主时钟的概念,它是OLL的输出。如果程序和数据均在片内RAM中,这样计算指令执行时间

1、一般指令需1个主时钟时间

2、每次跳转增加3个主时钟时间(也许是2个,需要确认)

3、从RAM中取一个操作数多增加一个主时钟时间,以次类推

4、保存一个结果到RAM中多增加一个主时钟时间,以次类推

5、访问片内外设,增加一个外设时钟时间

注意伪指令ldr rn,=x需要从ram中取一个操作数。

slump:

如果从FLASH中运行,启动MAM后,当指令不在MAM缓冲中,需用MAMTIM个周期进行MAM预取指。所以程序跳转的开销是相当大的。

--------------------------------------------------------

8051、ARM和DSP指令周期的测试与分析

本文对三种最具代表性的微控制器(AT89S51单片机、7TDMI核的LPC2114型单片机和TMS320F2812)的指令周期进行了分析和。为了能观察到指令周期,将三种控制器的GPIO口设置为数字输出口,并采用循环不断地置位和清零,通过观察GPIO口的波形变化得到整个循环的周期。为了将整个循环的周期与具体的每一条指令的指令周期对应起来,通过C语言源程序得到汇编语言指令来计算每一条汇编语言的指令周期。

1 AT89S51工作机制及指令周期的

AT89S51单片机的时钟采用内部方式,时钟发生器对振荡脉冲进行2分频。由于时钟周期为振荡周期

的两倍(时钟周期=振荡周期P1+振荡周期P2),而1个机器周期含有6个时钟,因此1个机器周期包括12个晶振的振荡周期。取石英晶振的振荡频率为11.059 2 MHz,则单片机的机器周期为12/11.059

2=1.085 1 μs。51系列单片机的指令周期一般含1~4个机器周期,多数指令为单周期指令,有2周期和4周期指令。

为了观察指令周期,对单片机的P1口的最低位进行循环置位操作和清除操作。源程序如下:

#include

main() {

while(1) {

P1=0x01;

P1=0x00;

}

}

采用KEIL uVISION2进行编译、链接,生成可执行文件。当调用该集成环境中的Debug时,可以得到上述源程序混合模式的反汇编代码:

2:main()

3: {

4:while(1)

5:{

6:P1=0x01;

0x000FMOVP1(0x90),#0x01

7:P1=0x00;

0x0012 E4CLRA

0x0013 F590MOVP1(0x90),A

8:}

0xEDSJMPmain (C:0003)

其中斜体的代码为C源程序,正体的代码为斜体C源程序对应的汇编语言代码。每行汇编代码的第1列为该代码在器中的位置,第2列为机器码,后面是编译、链接后的汇编语言代码。所有指令共占用6个机器周期(其中“MOV P1(0x90),#0x01”占用2个机器周期,“CLR A”和“MOV P1(0x90),A”各占用1个机器周期,最后一个跳转指令占用2个机器周期),则总的循环周期为6×机器周期=6×1.085 1 μs=6.51 μs。

图1 P1口最低位的波形

将编译、链接生成的可执行文件到AT89S51的Flash中执行可以得到P1口最低位的波形,如图1所示。整个循环周期为6.1 μs,与上面的分析完全一致。

2 LPC2114工作机制及指令周期的测试

LPC2114是基于ARM7TDMI核的可加密的单片机,具有零等待128 KB的片内Flash,16 KB的SRAM。时钟频率可达60 MHz(晶振的频率为11.059 2 MHz,时钟频率设置为11.059 2×4 =44.236 8 MHz,片内外设频率为时钟频率的1/4,即晶振的频率)。7TDMI核通过使用三级流水线和大量使用内部寄存器来提高指令流的执行速度,能提供0.9 MIPS/MHz的指令执行速度,即指令周期为1/(0.9×44.236 8)=0.025 12 μs,约为25 ns。

为了观察指令周期,将LPC2114中GPIO的P0.25脚设置为输出口,并对其进行循环的置位操作和清除操作。C源程序如下:

#include"config.h"

//P0.25引脚输出

#defineLEDCON0x

intmain(void)

{//设置所有引脚连接GPIO

PINSEL0 = 0x;

PINSEL1 = 0x;

//设置LED4控制口为输出

IO0DIR = LEDCON;

while(1)

{IO0SET = LEDCON;

IO0CLR = LEDCON;

}

return(0);

}

采用ADS1.2进行编译、链接,生成可执行文件。当调用AXD Debugger时,可以得到上述源程序的反汇编代码:

main[0xe59f1020]ldrr1,0x

[0xe3a00000]movr0,#0

[0xe]strr0,[r1,#0]

c[0xe]strr0,[r1,#4]

[0xe3a00780]movr0,#0x

[0xe1c115c0]bicr1,r1,r0,asr #11

[0xe]strr0,[r1,#8]

c[0xe]strr0,[r1,#4]

[0xec]strr0,[r1,#0xc]

[0xeafffffc]b0xc

[0xe002c000]dcd0xe002c000

每行汇编代码的第1列为该代码在器中的位置,第2列为机器码,后面是编译、链接后的汇编语言代码。循环部分的语句最关键的就是下面3句:

c[0xe]strr0,[r1,#4]

[0xec]strr0,[r1,#0xc]

[0xeafffffc]b0xc

在AXD Debugger中,将其调用到RAM中运行程序得到循环部分GPIO的P0.25的输出波形,如图2所示。从图中可以看出,循环周期中保持为高电平的时间为1350 ns左右,低电平的时间为450 ns左右,即指令“str r0,[r1,#4]”和指令“str r0,[r1,#0xc]”均需350 ns左右,而跳转指令则需100 ns左右。这主要是由于以下原因造成的:①ARM的大部分指令是单周期的,但是也有一些指令(如乘法指令)是多周期的;②基于核的微控制器只有加载、存储和指令可以对存储器的数据进行访问,这样从存储器读数据或向存储器写数据要增加1个时钟周期;③访问片内外设要增加一个外设时钟周期。当然,每个指令还要有1个时钟周期,跳转时要清空流水线还要另加一定的时钟周期。

图2 GPIO的P0.25脚输出波形

为了观察乘法指令,特地采用下述汇编语言进行了实验。

首先是没有乘法指令的汇编源程序:

INCLUDELPC2294.INC ;引入头文件

; P0.25引脚控制LED4,低电平点亮

LEDCONEQU0x

EXPORTMAIN

;声明程序代码块

AREALEDCONC,CODE,READONLY

;装载寄存器地址,PINSEL0

MAINLDRR0,=PINSEL0

;设置数据,即设置引脚连接GPIO

MOVR1,#0x

STRR1,[R0]; [R0] ← R1

LDRR0,=PINSEL1

STRR1,[R0]

LDRR0,=IO0DIR

LDRR1,=LEDCON

;设置LED控制口为输出

STRR1,[R0]

;设置GPIO控制参数

LOOPLDRR1,=LEDCON

LEDSETLDRR0,=IO0SET

; LED控制I/O置位,即LED4熄灭

STRR1,[R0]

LEDCLRLDRR0,=IO0CLR

; LED控制I/O复位,即LED4点亮

STRR1,[R0]

;无条件跳转到LOOP

B LOOP

采用ADS1.2进行编译、链接后的汇编代码为:

LOOP [0xe3a01780]movr1,#0x

LEDSET[0xe59f0028] ldrr0,0x

fc[0xe]strr1,[r0,#0]

LEDCLR[0xe59f0024] ldrr0,0xc

[0xe]strr1,[r0,#0]

[0xeafffff9] bLOOP

在AXD Debugger中,将其调用到RAM中运行程序得到循环部分的GPIO的P0.25脚输出波形,如图3所示。从图中可以看出,循环周期中保持为高电平的时间为450 ns左右,低电平的时间为550 ns左右。[资源来自"岁月联盟"]

本文来自"岁月联盟"

图3 GPIO的P0.25脚输出波形2

在上例的LOOP循环部分中加入乘法指令,即将循环部分改为:

LOOP LDRR1,=LEDCON

LEDSETLDRR0,=IO0SET

STRR1,[R0]

MOVR2,#0x0234

MULR2,R1,R2

LEDCLRLDRR0,=IO0CLR

STRR1,[R0]

B LOOP

采用ADS1.2进行编译、链接后的汇编代码为:

LOOP[0xe3a01780]movr1,#0x

LEDSET[0xe59f0030]ldrr0,0x

fc[0xe]strr1,[r0,#0]

[0xe3a02f8d]movr2,#0x234

[0xe] mulr2,r1,r2

LEDCLR[0xe59f0024] ldrr0,0x

c[0xe]strr1,[r0,#0]

[0xeafffff7]bLOOP

在AXD Debugger中,将其调用到RAM中运行程序得到循环部分的GPIO的P0.25脚输出波形,如图4所示。从图中可以看出,循环周期中保持为高电平的时间为550 ns左右,低电平的时间为550 ns左右。与上例比较可知,多出的MUL乘法指令和MOV传送指令共占用100 ns。

综上所述,得出如下结论:当指令放在RAM中运行时,指令“str r0,[r1,#4]”和指令“strr0,[r1,#0xc]”均需350 ns左右,相当于14个指令周期;指令“ldr r0,0xc”的执行时间为100 ns,相当于4个指令周期;MUL 乘法指令和MOV传送指令共占用100ns,相当于4个指令周期;跳转指令共占用100 ns,相当于4个指令周期。

3 TMS320F2812工作机制及指令周期测试

TMS320F2812是TI公司的一款用于控制的高性能和高性价比的32位定点DSP芯片。该芯片最高可在150 MHz主频下工作(本文将其设置到100 MHz),并带有18K×16位0等待周期片上SRAM和128K×16位片上Flash(存取时间为36 ns)。TMS320F2812采用哈佛总线结构,即在同一个时钟周期内可同时进行一次取指令、读数据和写数据的操作,同时TMS320F2812还通过采用8级流水线来提高系统指令的执行速度。

为了观察指令周期,对TMS320F2812的GPIOA0进行循环的置位操作和清除操作。C源程序如下:#include "DSP28_Device.h"

void main(void) {

InitSysCtrl();/*初始化系统*/

DINT;/*关中断*/

IER = 0x0000;

IFR = 0x0000;

InitPieCtrl();/*初始化PIE控制寄存器*/

InitPieVectTable();/*初始化PIE矢量表*/

InitGpio();/*初始化EV*/

EINT;

for(;;) {

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

}

}

图4 GPIO的P0.25脚输出波形3

其中最重要的是要对通用输入/输出进行初始化和确定系统CPU时钟。其中系统的时钟通过PLL设定为100 MHz,而初始化InitGpio() 的源程序为:

#include "DSP28_Device.h"

void InitGpio(void)

{ EALLOW;

//多路复用器选为数字I/O

GpioMuxRegs.GPAMUX.all=0x0000;

//GPIOAO为输出,其余为输入

GpioMuxRegs.GPADIR.all=0x0001;

GpioMuxRegs.GPAQUAL.all=0x0000;

EDIS;

}

通过在主程序for(;;)的地方加断点,可以很容易找到上面主程序中循环部分程序编译后的汇编指令:3F8011 L1:

3FFMOVWDP,#0x01C3

3F8013 2820 MOV@32,#0xFFFF

3F8015 2820 MOV@32,#0xFFFF

3F8017 2820 MOV@32,#0xFFFF

3F8019 2820 MOV@32,#0xFFFF

3F801B 2820 MOV@32,#0xFFFF

3F801D 2820 MOV@32,#0xFFFF

3F801F 2B20 MOV@32,#0

3F8020 2B20 MOV@32,#0

3F8021 2B20 MOV@32,#0

3F8022 6FEF SBL1,UNC

其中第1列为程序在RAM中的位置,第2列为机器码,后面就是汇编语言程序。指令“MOV

@32,#0xFFFF”使GPIO输出高电平,指令“MOV @32,#0”使GPIO输出低电平。其中含有6个使GPIOA0输出高电平的指令和3个使GPIOA0输出低电平的指令,系统的指令周期为10 ns,因此循环周期中保持高电平的时间为60 ns。通过将该程序放在H0 SARAM中进行调试,可得GPIOA0的波形,如图5所示。其中高电平时间正好为60 ns。注意,由于3个低电平之后要进行跳转,故清空流水线的周期要长一些。

图5 TMS320F2812中GPIOA0的波形1

为了观察乘法指令的周期,将上述循环部分的C源程序修改为:

for(;;)

{Uint16 test1,test2,test3;

test1=0x1234; test2=0x2345;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

GpioDataRegs.GPADAT.all=0xFFFF;

test3=test1*test2;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

GpioDataRegs.GPADAT.all=0x0000;

}

上述程序经过编译、链接后的汇编指令如下:

3F8012L1:

3FMOV*-SP[1],#0x1234

3F8014 2842 MOV*-SP[2],#0x2345

3F8016 761F MOVWDP,#0x01C3

3F8018 2820 MOV@32,#0xFFFF

3F801A 2820 MOV@32,#0xFFFF

3F801C 2820 MOV@32,#0xFFFF

3F801E 2D42 MOVT,*-SP[2]

3F801F 1241 MPYACC,T,*-SP[1]

3F8020 9643 MOV*-SP[3],AL

3F8021 2B20 MOV@32,#0

3F8022 2B20 MOV@32,#0

3F8023 2B20 MOV@32,#0

3F8024 6FEE SBL1,UNC

其中使GPIOA0为高电平的指令仍然为6个指令周期(其中包括1个乘法指令),因为乘法指令也是单周期的,因此循环周期中保持高电平的时间为60 ns。通过将该程序放在H0 SARAM中进行调试可得GPIOA0的波形,如图6所示。其中高电平时间正好为60 ns,而由于3个低电平之后要进行跳转,

要清空流水线,而且还要为乘法做准备,因此保持低电平的时间比图5所需的时间要长。当采用数字式示波器观察时,如果探头采用×1档观察的波形不是很理想,则可以采用×10档,并配合调节探头的补偿旋钮。[来源"岁月联盟"]

图6 TMS320F2812中GPIOA0的波形2

4 三种微处理器的比较

首先要强调的是,这几种微控制器都可以通过提高晶振的振荡频率来缩短指令周期,但是这些控制器的

振荡频率是有一定限制的,例如单片机不超过40 MHz,而LPC2114的频率不超过60 MHz,TMS320F2812的最高频率为150 MHz。在同样的工作频率下,ARM指令运行的指令周期远远高于传统的单片机。因为传统的单片机没有采用流水线机制,而ARM核和DSP都采用了流水线,但是由于访问外设和RAM等存储器要加一定的时钟周期,因此ARM不是真正可以实现单周期运行的,特别是不能实现单周期的乘法指令,而DSP可以实现真正的单周期乘法指令,速度要远远高于微控制器。

时钟周期.机器周期.指令周期的含义

时钟周期.机器周期.指令周期的含义 时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是 单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最 基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ 的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于 时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统 一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速 度就越快。 8051单片机把一个时钟周期定义为一个节 第 1 页 拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段 完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周 期(状态周期)组成。 8051系列单片机的一个机器周期同6个 S周期(状态周期)组成。前面已说过一个 时钟周期定义为一个节拍(用P表示),二个节拍定义 第 2 页 为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就 是说一个机器周期=6个状态周期=12个时钟周期。 例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒; 指令周期: 执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周 期也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译 码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则 第 3 页

时钟周期 指令周期 机器周期 状态周期

时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。 8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。 8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S 表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 例如外接24M晶振的单片机,他的一个机器周期=12/24M 秒; 指令周期:

执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 总线周期: 由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接口的访问,是通过总线实现的。通常把CPU通过总线对微处理器外部(存贮器或I/O接口)进行一次访问所需时间称为一个总线周期。 总结一下,时钟周期是最小单位,机器周期需要1个或多个时钟周期,指令周期需要1个或多个机器周期;机器周期指的是完成一个基本操作的时间,这个基本操作有时可能包含总线读写,因而包含总线周期,但是有时可能与总线读写无关,所以,并无明确的相互包含的关系。 指令周期:是CPU的关键指标,指取出并执行一条指令的时间。一般以机器周期为单位,分单指令执行周期、双指令执行周期等。现在的处理器的大部分指令(ARM、DSP)均采用单指令执行周期。 机器周期:完成一个基本操作的时间单元,如取指周期、取数周期。 时钟周期:CPU的晶振的工作频率的倒数。

机器人编程常用的四大语言介绍

机器人编程常用的四大语言介绍 伴随着机器人的发展,机器人语言也得到了发展和完善,机器人语言已经成为机器人技术的一个重要组成部分。机器人的功能除了依靠机器人的硬件支撑以外,相当一部分是靠机器人语言来完成的。早期的机器人由于功能单一,动作简单,可采用固定程序或者示教方式来控制机器人的运动。随着机器人作业动作的多样化和作业环境的复杂化,依靠固定的程序或示教方式已经满足不了要求,必须依靠能适应作业和环境随时变化的机器人语言编程来完成机器人工作。下面就来了解一下常见的机器人编程语言吧! VAL语言 一、VAL语言及特点 VAL语言是美国Unimation公司于1979年推出的一种机器人编程语言,主要配置在PUMA和UNIMATION等型机器人上,是一种专用的动作类描述语言。VAL语言是在BASIC语言的基础上发展起来的,所以与BASIC语言的结构很相似。在VAL的基础上Unimation公司推出了VALⅡ语言。 VAL语言可应用于上下两级计算机控制的机器人系统。上位机为LSI-11/23,编程在上位机中进行,上位机进行系统的管理;下位机为6503微处理器,主要控制各关节的实时运动。编程时可以VAL语言和6503汇编语言混合编程。

VAL语言命令简单、清晰易懂,描述机器人作业动作及与上位机的通信均较方便,实时功能强;可以在在线和离线两种状态下编程,适用于多种计算机控制的机器人;能够迅速地计算出不同坐标系下复杂运动的连续轨迹,能连续生成机器人的控制信号,可以与操作者交互地在线修改程序和生成程序;VAL语言包含有一些子程序库,通过调用各种不同的子程序可很快组合成复杂操作控制;能与外部存储器进行快速数据传输以保存程序和数据。 VAL语言系统包括文本编辑、系统命令和编程语言三个部分。 在文本编辑状态下可以通过键盘输入文本程序,也可通过示教盒在示教方式下输入程序。在输入过程中可修改、编辑、生成程序,最后保存到存储器中。在此状态下也可以调用已存在的程序。 系统命令包括位置定义、程序和数据列表、程序和数据存储、系统状态设置和控制、系统开关控制、系统诊断和修改。 编程语言把一条条程序语句转换执行。 二、VAL语言的指令 VAL语言包括监控指令和程序指令两种。其中监控指令有六类,分别为位置及姿态定义指令、程序编辑指令、列表指令、存储指令、控制程序执行指令和系统状态控制指令。各类指令的具体形式及功能如下:

51单片机指令周期,机器周期,时钟周期详解

51单片机指令周期,机器周期,时钟周期详解 51单片机有指令周期,机器周期,时钟周期的说法,看似相近,但是 又都不太一样,很容易混淆。还是详细分析一下。 时钟周期:单片机外接的晶振的振荡周期就是时钟周期,时钟周期=振 荡周期。比方说,80C51单片机外接了一个11.0592M的晶体振荡器,那我们 就说这个单片机系统的时钟周期是1/11.0592M,这里要注意11.0592M是频率,周期是频率的倒数。 机器周期:单片机执行指令所消耗的最小时间单位。我们都知道51单 片机采用的CISC(复杂指令指令集),所以有很多条指令,并且各条指令执行的 时间也可能不一样(有一样的哦),但是它们执行的时间必须是机器周期的整数倍,这就是机器周期的意义所在。8051系列单片机又在这个基础上进行细分,将一个机器周期划分为6个状态周期,也就是S1-S6,每个状态周期又由两个 节拍组成,P1和P2,而P1=P2=时钟周期。这也就是经常说的8051系列单片机的的时钟频率是晶振频率的12分频,或者是1/12,就是这个意思。现在(截 至2012)新的单片机已经能做到不分频了,就是机器周期=时钟周期。 指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的 整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。现在(截至2012)新的单片机已经能做到 不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。 来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。

计算机应用基础知识概述

第1章计算机应用基础知识概述 第2讲计算机应用基础知识概述(二) 教学目标及基本要求: 1、掌握计算机软件系统的构成,软件的概念、特点及分类 2、了解指令、语言、程序的概念。 3、掌握计算机的基本工作原理。 教学重点: 软件的概念、特点,存储程序原理。 教学难点: 存储程序原理。 教学内容: 1、系统软件、应用软件 2、程序设计语言、计算机的指令、计算机的程序 3、计算机的工作原理、计算机的基本工作过程 教学时间: 1学时 主要内容: 1.3.3 计算机软件系统的构成 软件:在硬件设备上运行的各种程序以及有关资料,主要由程序和文档两部分组成。1.系统软件 指管理、监控和维护计算机资源(包括硬件和软件)的软件。它是为整个计算机系统所配置的、不依赖于特定应用领域的通用性软件。它扩大了计算机的功能,提高了计算机的工作效率。系统软件是不可少,一般由生产厂家或专门的软件开发公司研发,其他程序都在它的支持下编写和运行。系统软件主要包括操作系统和实用系统软件。 (1)操作系统 概念:操作系统(Operating System,OS)是直接运行在裸机上的最基本的系统软件,是系统软件的核心,其他软件必须在操作系统的支持下才能运行。它控制和管理计算机系统内各种软、硬件资源,合理有效地组织计算机系统的工作。 DOS、Unix、Windows(95、98,2000、xp等) (2)实用系统软件 ①语言处理程序 概念:将非机器语言的程序通过解释或翻译成与其相对应的机器指令后,使其被计算机执行。 要点: ●计算机只能直接识别和执行机器语言程序。非机器语言的程序必须通过解释或翻译 成与其相对应的机器指令后,才能被计算机执行 ●一般将用高级语言或汇编语言编写的程序称为源程序,而将已翻译成机器语言的程 序称为目标程序,不同高级语言编写的程序必须通过相应的语言处理程序进行翻 译。 ●计算机将源程序翻译成机器指令时,通常有两种翻译方式:编译方式和解释方式, 具体如图1-7所示。

机器语言

机器语言 百科名片 机器语言是直接用二进制代码指令表达的计算机语言,指令是用0和1组成的一串代码,它们有一定的位数,并分成若干段,各段的编码表示不同的含义,例如某台计算机字长为16位,即有16个二进制数组成一条指令或其它信息。16个0和1可组成各种排列组合,通过线路变成电信号,让计算机执行各种不同的操作。 目录 简介 指令格式 寻址方式 种类 特点 发展过程 编辑本段简介 一条指令就是机器语言的一个语句,它是一组有意义的二进制代码,指令的基 本格式如:操作码字段地址码字段其中操作码指明了指令的操作性质及功能,地址码则给出了操作数或操作数的地址。 各计算机公司设计生产的计算机,其指令的数量与功能、指令格式、寻址方式、数据格式都有差别,即使是一些常用的基本指令,如算术逻辑运算指令、转移指令等也是各不相同的。因此,尽管各种型号计算机的高级语言基本相同,但将高级语言程序(例如Fortran语言程序)编译成机器语言后,其差别也是很大的。因此将用机器语言表示的程序移植到其他机器上去几乎是不可能的。从计算机的发展过程已经看到,由于构成计算机的基本硬件发展迅速,计算机的更新换代是很快的,这就存在软件如何跟上的问题。大家知道,一台新机器推出交付使用时,仅有少量系统软件(如

操作系统等)可提交用户,大量软件是不断充实的,尤其是应用程序,有相当一部分是用户在使用机器时不断产生的,这就是所谓第三方提供的软件。 为了缓解新机器的推出与原有应用程序的继续使用之间的矛盾,1964年在设计IBM360计算机时所采用的系列机思想较好地解决了这一问题。从此以后,各个计算机公司生产的同一系列的计算机尽管其硬件实现方法可以不同,但指令系统、数据格式、I/O系统等保持相同,因而软件完全兼容(在此基础上,产生了兼容机)。当研制该系列计算机的新型号或高档产品时,尽管指令系统可以有较大的扩充,但仍保留了原来的全部指令,保持软件向上兼容的特点,即低档机或旧机型上的软件不加修改即可在比它高档的新机器上运行,以保护用户在软件上的投资。 CISC(复杂指令系统)和RISC(精简指令系统) 编辑本段指令格式 计算机的指令格式与机器的字长、存储器的容量及指令的功能都有很大的关系。从便于程序设计、增加基本操作并行性、提高指令功能的角度来看,指令中应包含多种信息。但在有些指 令中,由于部分信息可能无用,这将浪费指令所占的存储空间,并增加了访存次数,也许反而会影响速度。因此,如何合理、科学地设计指令格式,使指令既能给出足够的信息,又使其长度尽可能地与机器的字长相匹配,以节省存储空间,缩短取指时间,提高机器的性能,这是指令格式设计中的一个重要问题。 计算机是通过执行指令来处理各种数据的。为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息: (1)操作码。它具体说明了操作的性质及功能。一台计算机可能有几十条至几百条指令,每一条指令都有一个相应的操作码,计算机通过识别该操作码来完成不同的操作。 (2)操作数的地址。CPU通过该地址就可以取得所需的操作数。 (3)操作结果的存储地址。把对操作数的处理所产生的结果保存在该地址中,以便再次使用。 (4)下条指令的地址。执行程序时,大多数指令按顺序依次从主存中取出执行,只有在遇到转移指令时,程序的执行顺序才会改变。为了压缩指令的长度,可以用一个程序计数器(ProgramCounter,PC)存放指令地址。每执行一条指令,PC的指

单片机时钟周期、机器周期、指令周期与总线周期

单片机时钟周期、机器周期、指令周期与总线周期 时钟周期: 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。具体计算就是1/fosc。也就是说如果晶振为1MHz,那么时钟周期就为1us;6MHz的话,就是1/6us。 8051单片机把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期: 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状

态周期)组成。 8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。具体计算为:时钟周期Xcycles。如果单片机是12周期的话,那么机器周期就是T×12。假设晶振频率为12M,单片机为12周期的话,那么机器周期就是1us。 例如外接24M晶振的单片机,他的一个机器周期=12/24M秒;52系列单片机一个机器周期等于12个时钟周期。设晶振频率为12MHz时,52单片机是12T的单片机,即频率要12分频。12M经过分频变为1M,由T=1/f,即一个机器周期变为1us 指令周期: 执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。通常,包含一个机器周期的指令成为单周期指令,比如CLR,MOV等等。包含两个机器周期的指令称为双周期指令。另外还有4周期指令,比如乘法和除法指令。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 总线周期: 由于存贮器和I/O端口是挂接在总线上的,CPU对存贮器和I/O接

8051 时钟周期,机器周期,指令周期

时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ 的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储

器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 指令周期 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 以51为例,晶振22.1184M,时钟周期(晶振周期)就是(1/22.1184)μs,一个机器周期包含12个时钟周期,一个机器周期就是0.5425μs。一个机器周期一般是一条指令花费的时间,也有些是2个机器周期的指令,DJNZ,就是双周期指令,所以指令周期为0.5425μs 但不是所有机器周期都等于12个时钟周期的。

汇编指令与机器码

一、状态寄存器 PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 OF DF IF TF SF ZF AF PF CF 条件码: ①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。 ②SF(Sign Flag)符号标志。结果为负时置1,否则置0. ③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0. ④CF(Carry Flag)进位标志,进位时置1,否则置0. ⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0. ⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0. 控制标志位: ⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。 ⑧IF(Interrupt Flag)中断标志。 ⑨TF(Trap Flag)陷井标志。 二、直接标志转移(8位寻址) 指令格式机器码测试条件如...则转移 JC 72 C=1 有进位 JNC 73 C=0 无进位 JZ/JE 74 Z=1 零/等于 JNZ/JNE 75 Z=0 不为零/不等于 JS 78 S=1 负号 JNS 79 S=0 正号 JO 70 O=1 有溢出 JNO 71 O=0 无溢出 JP/JPE 7A P=1 奇偶位为偶 JNP/IPO 7B P=0 奇偶位为奇 三、间接标志转移(8位寻址) 指令格式机器码测试格式如...则转移 JA/JNBE(比较无符号数) 77 C或Z=0 > 高于/不低于或等于 JAE/JNB(比较无符号数) 73 C=0 >=高于或等于/不低于 JB/JNAE(比较无符号数) 72 C=1 < 低于/不高于或等于

弱智的PIC教程之11 机器周期,指令周期

【弱智的PIC教程之11】 机器周期、指令周期 【问题引入】 上一讲中,我们单步执行时,可以看到LED一个一个被点亮。但如果连续运行,会发现LED乱闪烁 。为什么呢,我们来仔细研究一下。 下面这两张图,是RB0和RB1相继被点亮的截图。 可以看出,从RB0端口LED亮→灭→RB1亮,总共才花费2us的时间。如果将程序烧录到单片机硬件,用实际的电路进行运行,由于视觉暂留的原因,我们能看到的是8个LED全部亮,而不是一个一个依次点亮(用Protues仿真的效果与实际有差异)。 为此我们需要在每个LED点亮后,进行一段延时,让其保持一定的时间,再熄灭,点亮下一个LED。 是的,我们需要延时,增加一个延时子程序。这就是本讲要解决的问题。 【机器频率、机器周期】 每个单片机运行时,读需要一个元器件,就是晶振。如果你手头上有实物之类的电路板,可以找到上面的晶振,如下图的模样: 晶振和单片机内部的相关电路,构成一个振荡器,产生固定的振荡频率,单片机的运行全部依靠这种振荡,实现统一步

伐。可以把这种振荡比喻成为单片机的心脏。如果它出现故障停止运行了,单片机也就停止运行了。 有的电路板上找不到晶振,是因为已经固化的单片机内部了,或者使用的是陶振、阻容振荡。但这不影响我们分析。 仔细看晶振上的数值,比如我手头上的一个晶振,上面是“4MHz”,这就是单片机的心跳速度,我们叫做“机器频率”,其倒数就是“机器周期” 关于机器周期、指令周期我们在第14讲还会有进一步阐述。 回到前面这个例子来,我们是用Proteus仿真,在MPLAB IDE中,单击下面这个图标,打开PROTEUS程序: 进入到PROTEUS程序中,双击PIC16F628A,出现Edit Component对话框,如下: 这是我们在第3讲中设置的机器频率:4MHz,当然我们也可以设置成其他频率,如8MHz、20MHz等。就好比我们实际使用中,将4MHz的晶振换成8MHZ的一样。 关于晶振的使用条件,请参考该型号单片机的《数据手册》。 【指令周期】 指令周期是:单片机运行一“步”所花费的时间,等于4个机器周期。在上面的例子中,机器频率是4MHz,机器周期是1/4us,即0.25us,指令周期=4*0.25=1us。 在本讲开始的【问题引入】中,在第7us点亮RB0LED,运行两条指令后,点亮RB1LED,两条指令花去2us,所以第二张图上,显示在第7+2=9us时,RB1LED点亮。 PIC16系列的单片机大约有33条指令,绝大部分指令运行时,只需要一个指令周期。少数几条指令运行需要2个指令周期。如:GOTO、CALL等等,后面会有详细的介绍。

时钟周期机器周期指令周期

基本知识学习:时钟周期机器周期总线周期指令周期 学习linux才发现要懂得好多细节性的东西,这些东西原来总认为不知道也可以照样工作,呵呵~ 总体来说,学习计算机在windows下就是个错误,起码在入门后应该转移到linux/unix下来,尤其是对于计算机专业的人来说! 基本知识,还需要好好补补~朝花夕拾! From: https://www.360docs.net/doc/4717306820.html,/sodarfish/blog/item/8c6a4503816a28ea09fa93c3.html =============================================================================== ==== 时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250us。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S 表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6 个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6 个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 机器周期:通常用内存中读取一个指令字的最短时间来规定CPU周期,(也就是计算机通过内部或外部总线进行一次信息传输从而完成一个或几个微操作所需要的时间 指令周期 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期数也不同。对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。 通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。

机器语言指令概述

6.4 机器语言指令概述 用汇编语言指令编写的汇编语言程序输入计算机后,计算机并不能识别和执行,必须由机器提供的汇编程序将它翻译成由机器语言指令组成的程序,才能由计算机执行。通常这种翻译工作不必由人来干预。本节只简单介绍一下机器语言指令的构成,以便读者在实际应用(实时控制)中也可完成类似的转换工作。 8086/8088的机器语言指令为可变字节的指令,一条指令可以由1~7个字节组成,因此指令格式比较灵活。其格式如下所示: 其中,opcode为操作码字段;d指示操作方向;S表示符号扩展;W指示操作数宽度;mod用来区分是寄存器寻址还是存储器寻址;reg寄存器编码;r/m寄存器或存储器; disp-low位移量低位; disp-high位移量高位;data-low立即数低位;data-high立即数高位。 格式中给出了1~6个字节的情形。如果指令中显示指定段跨越前缀,则在机器语言指令中使用放在该指令之前的一个字节来表示,其格式如下所示: 其中,001和110均为段前缀标志;SEG指定四个段寄存器中的一个,00为ES,01为CS,10为SS,11为DS。 6.4.1 操作码的机器语言表示 操作码一般占用第一个字节的7~2位,但有些指令的操作码占用第一个字节的7~1位,甚至还可能占用第二个字节的5~3位作为扩展操作码。 在多数操作码中,常使用某些位来指示某些信息。例如第一个字节中的W位用来指示该指令是对字节(W=1)还是对字节(W=0)进行操作。在双操作数指令中,d位指定寄存器是用于目的操作数(d=1)还是用于源操作数(d=0)。另外,在立即寻址方式的指令中,S位表示符号扩展,若立即数为8位, 6.4.2寻址方式的机器语言表示 指令中除操作码占用的位数外,其它位则用来表示操作数或操作数的地址。8086/8088用一个寻址方式字节来表示操作数的寻址方式,它通常是机器指令的第二个字节。 第二个字节中的reg字段表示寻址方式为寄存器方式,在双操作数指令的情况下,由reg和第一个字节中的W位联合指定一个寄存器作为两个操作数中的一个操作数。Reg与W位联合指定的寄存器如表6-4-1所示。

单片机指令周期怎么计算

单片机指令周期怎么计算 指令周期:指令周期执行某一条指令所消耗的时间,它等于机器周期的整数倍。传统的80C51单片机的指令周期大多数是单周期指令,也就是指令周期=机器周期,少部分是双周期指令。现在(截至2012)新的单片机已经能做到不分频了,并且尽量单指令周期,就是指令周期=机器周期=时钟周期。 来看这张8051单片机外部数据,这里ALE和$PSEN$的变化频率已经小于一个机器周期,如果使用C语言模拟这个信号是没有办法做到的一一对应的,所以只能尽量和上面的时序相同,周期延长。 指令周期是不确定的,因为她和该条指令所包含的机器周期有关。一个指令周期=1个(或2个或3个或4个)机器周期,像乘法或除法就含有4个机器周期,单指令就只含有1个机器周期。 对于大多说的51单片机来说,1个机器周期=12个时钟周期(或振荡周期) 也有部分单片机时钟周期和振荡周期不相等,例如,1个时钟周期=2个振荡周期。 该定义指的是执行一条指令所需要的时间,通常一个指令周期会由若干个机器周期组成。指令不同,所需的机器周期数也不同。 对于一些简单的的单字节指令,在取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或者两个以上的机器周期。通常含一个机器周期的指令称为单周期指令,包含两个机器周期的指令称为双周期指令。 PIC单片机指令周期计算PIC单片机的每四个时钟周期为一个内部指令周期 例如:8MHz的晶振,则内部指令周期为1/(8/4)= 0.5 uS 实例一:35us,8MHz的晶振,8位定时器,分频比1/2 ,初值E4 实例二:156.25us ,32768Hz的晶振,8位定时器,分频比1/32 ,初值FC 计算方法一:35 = =(256-初值)*分频*4/晶振+ 14/分频=(256-初值)+14/2

汇编指令机器码总结

汇编指令机器码总结与验证 摘要:本文介绍了汇编指令机器码的含义与作用,并讨论了指令的组成结构即操作码与地址码。然后全面总结了机器码中的单字节操作码,并利用Debug工具进行了详细的验证。 关键词:指令;机器码 一、机器码概述[1] 机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。这种指令集就称为机器码,它是电脑的CPU可直接解读的数据。一条指令是机器语言的一个语句,是一组有意义的二进制代码。计算机通过执行指令来处理各种数据。 为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息: a) 操作码 b) 操作数的地址 c) 操作结果的存储地址 d) 下条指令的地址 一条指令实际上包括两种信息即操作码和地址码。操作码用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。地址码用来描述该指令的操作对象,它或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址(即寄存器名)。 二、机器码详解[2] 由上文已知,一条指令一般由操作码和地址码组成。其中,操作码是指明CPU对内存或寄存器中的数据进行什么样的操作,地址码给出这些数据对象。下面我们就将指令分为两部分进行研究。1.操作码 操作码一般占用1个字节(8位)或2个字节(16位)。其中最低比特(记作W)在很多指令中表示目标操作数的位宽,W=0表示字节长(8位)操作数,W=1表示双字节长(16位)操作数。例如,操作码00000000B(W=0)表示“ADD 8位寄存器,8位寄存器”,而00000001B(W=1)表示“ADD 16位寄存器,16位寄存器”。 2.地址码 地址码一般占用1个字节,其中的8个比特位可分为三组,形式一般为“oommmrrr”。这些分组大致可分为以下四个类型: 1) “oo”——表示指令的地址偏移量类型 a) 00:如果mmm=110,那么指令后紧跟一个地址偏移量;否则未使用地址偏移量 b) 01:指令后紧跟一个8比特无符号地址偏移量 c) 10:指令后紧跟一个16比特无符号地址偏移量 d) 11:此时mmm表示一个寄存器而不是地址

时钟周期、机器周期、及指令周期

时钟周期、机器周期、及指令周期 本文介绍什么是时钟周期、机器周期、及指令周期等。 单片机工作时,是一条一条地从RoM中取指令,然后一步一步地执行。单片机访问一次存储器的时间,称之为一个机器周期,这是一个时间基准。―个机器周期包括12个时钟周期。如果一个单片机选择了12MHZ晶振,它的时钟周期是1/12us,也是一个晶振周期。它的一个机器周期是12×(1/12)us,也就是1us。 机器周期不仅对于指令执行有着重要的意义,而且机器周期也是单片机定时器和计数器的时间基准。例如一个单片机选择了12MHZ晶振,那么当定时器的数值加1时,实际经过的时间就是1us,这就是单片机的定时原理。 时钟周期 时钟周期也称为振荡周期,定义为时钟脉冲的倒数(可以这样来理解,时钟周期就是单片机外接晶振的倒数,例如12M的晶振,它的时间周期就是1/12 us),是计算机中最基本的、最小的时间单位。 在一个时钟周期内,CPU仅完成一个最基本的动作。对于某种单片机,若采用了1MHZ的时钟频率,则时钟周期为1us;若采用4MHZ的时钟频率,则时钟周期为250ns。由于时钟脉冲是计算机的基本工作脉冲,它控制着计算机的工作节奏(使计算机的每一步都统一到它的步调上来)。显然,对同一种机型的计算机,时钟频率越高,计算机的工作速度就越快。但是,由于不同的计算机硬件电路和器件的不完全相同,所以其所需要的时钟周频率范围也不一定相同。我们学习的8051单片机的时钟范围是1.2MHz-12MHz。 在8051单片机中把一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示)。 机器周期 在计算机中,为了便于管理,常把一条指令的执行过程划分为若干个阶段,每一阶段完成一项工作。例如,取指令、存储器读、存储器写等,这每一项工作称为一个基本操作。完成一个基本操作所需要的时间称为机器周期。一般情况下,一个机器周期由若干个S周期(状态周期)组成。8051系列单片机的一个机器周期同6个S周期(状态周期)组成。前面已说过一个时钟周期定义为一个节拍(用P表示),二个节拍定义为一个状态周期(用S表示),8051单片机的机器周期由6个状态周期组成,也就是说一个机器周期=6个状态周期=12个时钟周期。 指令周期 指令周期所需的时间执行指令,通常一个机器周期数组成。指令是不同的机器周期所需的数量也不同。对于一些简单的单字节指令,指令的读取周期,指示出指令寄存器解码后立即执行,不再需要其他机器周期。对于一些如指挥权的更复杂的指令,乘法指令,你需要两个或更多的机器周期。 通常的机器周期的指令称为单周期指令,其中包括两个机器周期的指令称为双周期指令

MSP430的时钟周期(振荡周期)、机器周期、指令周期之间的关系

MSP430的时钟周期(振荡周期)、机器周期、指令周期之间的关系 通用知识 时钟周期也称为振荡周期:定义为时钟脉冲的倒数(时钟周期就是直接供内部CPU使用的晶振的倒数,例如12M的晶振,它的时钟周期就是1/12us),是计算机中的最基本的、最小的时间单位。在一个时钟周期内,CPU仅完成一个最基本的动作。时钟脉冲是计算机的基本工作脉冲,控制着计算机的工作节奏。时钟频率越高,工作速度就越快。 机器周期:在计算机中,常把一条指令的执行过程划分为若干个阶段,每一个阶段完成一项工作。每一项工作称为一个基本操作,完成一个基本操作所需要的时间称为机器周期。8051系列单片机的一个机器周期由6个S周期(状态周期)组成。一个S周期=2个时钟周期,所以8051单片机的一个机器周期=6个状态周期=12个时钟周期。 指令周期:执行一条指令所需要的时间,一般由若干个机器周期组成。指令不同,所需的机器周期也不同。 专用知识: 在430中,一个时钟周期= MCLK晶振的倒数。如果MCLK是8M,则一个时钟周期为1/8us; 一个机器周期=一个时钟周期,即430每个动作都能完成一个基本操作; 一个指令周期= 1~6个机器周期,具体根据具体指令而定。 另:指令长度,只是一个存储单位与时间没有必然关系。

MSP430根据型号的不同最多可以选择使用3个振荡器。我们可以根据需要选择合适的振荡频率,并可以在不需要时随时关闭振荡器,以节省功耗。这3个振荡器分别为: (1)DCO 数控RC振荡器。它在芯片内部,不用时可以关闭。DCO的振荡频率会受周围环境温度和MSP430工作电压的影响,且同一型号的芯片所产生的频率也不相同。但DCO的调节功能可以改善它的性能,他的调节分为以下3步:a:选择BCSCTL1.RSELx确定时钟的标称频率;b:选择DCOCTL.DCOx在标称频率基础上分段粗调;c:选择DCOCTL.MODx的值进行细调。 (2)LFXT1 接低频振荡器。典型为接32768HZ的时钟振荡器,此时振荡器不需要接负载电容。也可以接450KHZ~8MHZ的标准晶体振荡器,此时需要接负载电容。 (3)XT2 接450KHZ~8MHZ的标准晶体振荡器。此时需要接负载电容,不用时可以关闭。 低频振荡器主要用来降低能量消耗,如使用电池供电的系统,高频振荡器用来对事件做出快速反应或者供CPU进行大量运算。当然高端430还有锁频环(FLL)及FLL+等模块,但是初步不用考虑那么多。 MSP430的3种时钟信号:MCLK系统主时钟;SMCLK系统子时钟;ACLK辅助时钟。 (1)MCLK系统主时钟。除了CPU运算使用此时钟以外,外围模块也可以使用。MCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。 (2)SMCLK系统子时钟。供外围模块使用。并在使用前可以通过各模块的寄存器实现分频。SMCLK可以选择任何一个振荡器所产生的时钟信号并进行1、2、4、8分频作为其信号源。

汇编指令与机器码的相互转换

汇编指令与机器码的相互转换 机器语言我们只要重点理解一下几个概念: 1. 机器语言指令有操作码(OP)和地址码两部分组成 |_____________OP_______________|__d__|__w__| |_____________OP_______________|__s__|__w__| <--此格式用于立即寻址方式 在多数操作码中,常使用某些位来指示某些信息: 如图上结构里的:w=1 时对字来操作 w=0 时对字节来操作 d值在双操作数指令中才有效 当d=1 时有且只有一个寄存器用于目的操作数 d=0 时有且只有一个寄存器用于源操作数 s=1 时立即数为8位,但要求扩展成16位数 s=0 时当指令作字节操作/有16位立即数 由于汇编的指令格式很多,这里我只作一些基本情况介绍,必要时读者可以下载/查阅80x86汇编小站https://www.360docs.net/doc/4717306820.html,提供的OPCODES手册来查阅。 2. 寻址方式的机器语言表示: | mod | reg | r/m | |_____|_____|_____|_____|_____|_____|_____| reg 表示寄存器方式,在不包括立即数的双操作数指令的情况下,规定必须有一个操作数在寄存器中,该寄存器由reg字段指定,并与操作码字节中的w位相组合确定的寄存器 mod字段与r/m(register/memory)字段结合在一起确定另一个操作数的寻址方式现在你们下载了80x86汇编小站(https://www.360docs.net/doc/4717306820.html,)提供的OPCODES 手册了吗? 下载好了,请解压后打开里面的:opcodes.html 文件,然后熟悉里面的表格: 现在熟悉简单的: ____________________________________________________________________________ __ 表1 rrr : W=0 : W=1 : reg32 000 : AL : AX : EAX

(2020年7月整理)数据通路及指令周期流程图.doc

数据通路、指令周期流程图 某计算机有如下部件,ALU,移位器,主存M,主存数据寄存器MDR,主存地址寄存器MAR,指令寄存器IR,通用寄存器R0 R3,暂存器C和D。 (1)请将各逻辑部件组成一个数据通路,并标明数据流动方向。 (2)画出“ADD R1,R2”指令的指令周期流程图。 (3)请述说RISC指令系统和CISC指令系统的区别及应用 解: (1) 设该系统为单总线结构,暂存器C和D用于ALU的输入端数据暂存,移位器作为ALU输出端的缓冲器,可对ALU的运算结果进行附加操作,则数据通路可设计如下: (2) 根据上面的数据通路,可画出“ADD R1,R2”的指令周期流程图如下:

ADD R1, R2 (3)请述说RISC指令系统和CISC指令系统的区别及应用 RISC 和CISC 是目前设计制造微处理器的两种典型技术,RISC虽然它们都是试图在体系结构、操作运行、软件硬件、编译时间和运行时间等诸多因素中做出某种平衡,以求达到高效的目的,但采用的方法不同,因此,在很多方面差异很大,它们主要有: (1)指令系统:RISC 设计者把主要精力放在那些经常使用的指令上,尽量使它们具有简单高效的特色。对不常用的功能,常通过组合指令来完成。因此,在RISC 机器上实现特殊功能时,效率可能较低。但可以利用流水技术和超标量技术加以改进和弥补。而CISC 计算机的指令系统比较丰富,有专用指令来完成特定的功能。因此,处理特殊任务效率较高。 (2)存储器操作:RISC 对存储器操作有限制,使控制简单化;而

CISC 机器的存储器操作指令多,操作直接。 (3)程序:RISC 汇编语言程序一般需要较大的内存空间,实现特殊功能时程序复杂,不易设计;而CISC 汇编语言程序编程相对简单,科学计算及复杂操作的程序社设计相对容易,效率较高。 (4)中断:RISC 机器在一条指令执行的适当地方可以响应中断;而CISC 机器是在一条指令执行结束后响应中断。 (5) CPU:RISC CPU 包含有较少的单元电路,因而面积小、功耗低;而CISC CPU 包含有丰富的电路单元,因而功能强、面积大、功耗大。(6)设计周期:RISC 微处理器结构简单,布局紧凑,设计周期短,且易于采用最新技术;CISC 微处理器结构复杂,设计周期长。(7)用户使用:RISC 微处理器结构简单,指令规整,性能容易把握,易学易用;CISC微处理器结构复杂,功能强大,实现特殊功能容易。 (8)应用范围:由于RISC 指令系统的确定与特定的应用领域有关,故RISC 机器更适合于专用机;而CISC 机器则更适合于通用机。

相关文档
最新文档