数据寄存器

《自己动手写操作系统》读书笔记——初识保护模式

邮差的信 提交于 2020-03-29 00:49:07
《自己动手写操作系统》读书笔记——初识保护模式 http://www.cnblogs.com/pang123hui/archive/2010/11/27/2309930.html 书本第三章第一节是《认识保护模式》,初步讲解了保护模式下全局描述符表GDT、段描述符、段选择子、从实模式进入保护模式等内容。去年看这个的时候,如果不是有以前学习保护模式时做的笔记,还真不好懂呢,因为作者提供的材料不够系统,对仅学习过8086汇编语言的人来说,是不太好理解的。下面的内容大体以我以前做的笔记为纲,较为简略,只说明要点。(本来还可以参考下以前学习保护模式时收集的资料的,很可惜,移动硬盘坏了,资料都没有了,早就该注意信息安全了的。) 描述符与描述符表 8086是16位处理器,有16位的寄存器和数据总线,20位的地址总线,寻址能力为1MB。地址由段基址和段偏移两部分组成,段基址和偏移地址都是16 位的,物理地址的计算方式为:物理地址=段基址×16+段偏移。从80386开始,Intel处理器进入了32位时代,地址总线为32位,寻址能力为 4GB。此时,通用寄存器变成从16位变成了32位,但段寄存器仍然是16位的,原来的基地址加偏移值的物理地址计算方法已经不适用了,需要新的计算方法。 386以上CPU运行于保护模式时,虽然段寄存器仍然是16位的,但是其意义已经发生了变化:不再是表示段基地址了

PLC:学习笔记(西门子)2

戏子无情 提交于 2020-03-28 13:26:26
传统的工业控制系统:继电器-接触器 PLC(programmable logic controller) PLC特点: 1、plc可靠性高(软件代替复杂线路、抗干扰的CPU、电源采用多级滤波并用集成稳压块稳压、IO采用光电隔离技术) 2、丰富IO口(交流、直流、开关量、模拟量、电压、电流、脉冲、电位、强电、弱电都有相应的IO模块和工业现场的设备) 3、模块化结构(plc辅助触点不受次数的限制,只需考虑输入、输出点个数即可) 4、编程简单(梯形图)、安装简单、设计施工周期短 PLC工作方式:采用循环扫描的工作方式其输入/输出存在响应滞后 PLC基本组成:中央处理单元(大型的多采用冗余系统或三CPU表决式系统)、存储器、输入/输出接口(现场常用输入接口:按钮开关、行程开关、接触器的触点、传感器输出的开关量或模拟量(DAC后输入进plc)输入一般接光电耦合电路和微电脑输入接口电路(输入数据寄存器、选通电路、中断请求电路) 现场常用输出:电磁阀、接触器、继电器、信号灯、电动机等 其电路组成和输入相近:输出接口电路和功率驱动电路(继电器方式输出、晶闸管方式输出、晶体管方式输出)) 4、电源 5、底板和机架 6、PLC的外部设备(编程设备(RS232、RS422)、监控设备、存储设备、输入/输出设备) 7、PLC的通信网络(各厂家均在向标准通信协议靠拢) PLC编程语言:因为厂家和机型不同

进入保护模式

与世无争的帅哥 提交于 2020-03-26 15:04:05
全局描述符   和一个段有关的信息需要 8 个字节来描述,所以称为 段描述符(Segment Descriptor) ,每个段都需要一个描述符。为了存放这些描述符,需要在内存中开辟出一段空间。在这段空间里,所有的描述符都是挨在一起,集中存放的,这就构成一个 描述符表 ,最主要的描述符表是 全局描述符表(Global Descriptor Table,GDT) 。   为了跟踪全局描述符表,处理器内部有一个 48 位的寄存器,称为 全局描述符表寄存器(GDTR) 。该寄存器分为两部分,分别是 32 位的线性地址和 16 位的边界。32 位的处理器具有 32 根地址线,可以访问的地址范围是 0x00000000 到0xFFFFFFFF,共 232字节的内存,即 4GB 内存。所以,GDTR的 32 位线性基地址部分保存的是全局描述符表在内存中的起始线性地址,16 位边界部分保存的是全局描述符表的边界(界限),其在数值上等于表的大小(总字节数)减一。   因为 GDT 的界限是 16 位的,所以,该表最大是 2 16 字节,也就是 65536 字节(64KB)。又因为一个描述符占 8 字节,故最多可以定义 8192 个描述符。   由于在实模式下只能访问 1MB 的内存,故 GDT 通常都定义在 1MB 以下的内存范围中。当然,允许在进入保护模式之后换个位置重新定义 GDT。

关于MAX30100心率的编程

我的梦境 提交于 2020-03-23 07:02:18
  MAX30100是能够读取心率、血氧的传感器,通信方式是通过IIC进行通信。   其工作原理是通过红外led灯照射,能够得到心率的ADC值。       图为MAX30100的寄存器。   可以分为五类,状态寄存器、FIFO、控制寄存器、温度寄存器、ID寄存器。   温度寄存器是读取芯片的温度值,以矫正因为温度而产生的偏差。   ID寄存器是读取芯片的ID号。      重点在于另外三类寄存器。 STATUS寄存器   其中,STATUS寄存器有两个,一个是中断状态寄存器,一个是中断使能寄存器。        例如,当你使能了心率中断,当心率转换结束时,其状态位就会置1。    FIFO寄存器   数据存储在FIFO_DATA寄存器,我们主要去读取他就可以了。其余三个是溢出次数以及读写指针。   DATA存的数据是每次读到的ADC值。每一次会读四次,依次是IR的高低数据、RED的高低数据。       Configured寄存器        Mode寄存器中 SHDN是低功耗控制位、RESET是复位、TEMP_EN是温度检测使能,MODE是模式选择。     SPO2设置寄存器 主要是设置血氧浓度相关的参数的,以及LED_PW的功率。     LED寄存器是设置两颗灯的脉冲时间。 程序编写      首先要对max30100进行初始化配置。 max30100_write

20145205 《信息安全系统设计基础》第5周学习总结

喜你入骨 提交于 2020-03-23 03:17:00
教材学习内容总结 程序编码 GCC将源代码转化为可执行代码的步骤: C预处理器——扩展源代码-生成.i文件 编译器——产生两个源代码的汇编代码-——生成.s文件 汇编器——将汇编代码转化成二进制目标代码——生成.o文件 链接器——产生可执行代码文件 机器级代码 1.机器级编程的两种抽象 (1)指令集结构ISA 是机器级程序的格式和行为,定义了处理器状态、指令的格式,以及每条指令对状态的影响。 (2)机器级程序使用的存储器地址是虚拟地址 看上去是一个非常大的字节数组,实际上是将多个硬件存储器和操作系统软件组合起来。 2.几个处理器: 程序计数器(CS:IP) 整数寄存器(AX,BX,CX,DX) 条件码寄存器(OF,SF,ZF,AF,PF,CF) 浮点寄存器 一条机器指令只执行一个非常基本的操作。 程序编码 书上107页的代码,需要用到反汇编器。在Linux系统中,带‘d’命令行标志的程序OBJDUMP可以充当这个角色。 数据格式 数据传送指令的三个变种: movb 传送字节 movw 传送字 movl 传送双字 访问信息 一个IA32中央处理单元(CPU)包含8个存储32位置的寄存器 操作数指示符 立即数 寄存器 存储器 寻址方式 (1)立即数寻址方式 格式:$后加用标准c表示法表示的整数,如 $0xAFF (2)寄存器寻址方式 如%eax,与汇编中学过的AX寄存器类比。 (3

基于51单片机的CAN通讯协议C语言程序

♀尐吖头ヾ 提交于 2020-03-22 09:39:21
//-----------------------函数声明,变量定义-------------------------------------------------------- #include <reg52.h> sbit int0 = P3^2; //-----------------------定义寻址的基址-------------------------------------------------------- #define base_Adr 0x00 //-----------------------定义总线定时寄存器的值-------------------------------------------------------- #define SJA_BTR0 0x00 //该值需要用户根据实际需要的波特率进行计算 #define SJA_BTR1 0x16 //具体计算见文章说明 //-----------------------设置接收报文类型(标示符)-------------------------------------------------------- //该值需要用户根据实际需要重新配置 #define SJA_ACR 0x00 //验收代码寄存器的值 #define SJA_AMR 0x16 //验收屏蔽寄存器的值 //-------

汇编基础——常用寄存器及其用途

早过忘川 提交于 2020-03-21 23:31:47
通用寄存器的主要用途 寄存器的分类 寄存器 主 要 用 途 通 用 寄 存 器 数据 寄存器 AX 乘、除运算,字的输入输出,中间结果的缓存 AL 字节的乘、除运算,字节的输入输出,十进制算术运算 AH 字节的乘、除运算,存放中断的功能号 BX 存储器指针 CX 串操作、循环控制的计数器 CL 移位操作的计数器 DX 字的乘、除运算,间接的输入输出 变址 寄存器 SI 存储器指针、串指令中的源操作数指针 DI 存储器指针、串指令中的目的操作数指针 变址 寄存器 BP 存储器指针、存取堆栈的指针 SP 堆栈的栈顶指针 指令指针 IP/EIP 标志位寄存器 Flag/EFlag 32位 CPU的 段寄存器 16位CPU的 段寄存器 ES 附加段寄存器 CS 代码段寄存器 SS 堆栈段寄存器 DS 数据段寄存器 新增加的 段寄存器 FS 附加段寄存器 GS 附加段寄存器 来源: https://www.cnblogs.com/javawebsoa/archive/2013/05/14/3078478.html

寄存器基本原理介绍(上篇)

╄→гoц情女王★ 提交于 2020-03-20 16:36:01
存储器被划分为多个存储单元,从零开始编号,就像是一条街上的门牌号一样,那么 CPU 要读取这些数据,就像是在这一条街里找这个门牌号一样,先要确定在哪里住。 由此可见,CPU 要相对数据进行读写,必须和芯片进行下面 3 类交互: 存储单元的地址(地址信息) 器件的选择,读或者写命令(控制信息) 读或写的数据(数据信息) 那么,CPU 是如何让将这些新词传输到存储器的芯片中的,这就涉及到一个概念,我们都知道,计算机能够处理的信息都是电信号,也就是高低电平,电信号当然是由导线来传送。在计算机中,由专门连接 CPU 和其他芯片的导线,我们通常称为总线,总线从物理的概念来讲,就是一根根导线的集合。根据传出信息的不同,总线从逻辑上讲主要分为 3 类:地址总线,控制总线以及数据总线。 分析上图,三个基础导线首先 CPU 通过地址线将信息发出,然后通过控制线发出内存读写任务,选中存储器芯片,并命令从中读取数据,最后通过数据线将数据送入 CPU。 接下来,详细介绍一下。 地址总线 现在,我们知道 CPU 是通过地址总线来指定存储单元的,那么可见地址总线上能传递多少不同的信息,就能对多少个存贮单元进行寻址。 现在假设,一个 CPU 有 10 根地址线,一根导线能传递的状态只有两种,一种是高电平,一种是低电平,就是二进制的 0 和 1,那么 10 根导线就是 10 位 2 进制数据,那么 10

MPU6050 I2C master模式调试记录

爷,独闯天下 提交于 2020-03-17 07:53:01
http://blog.csdn.net/airk000/article/details/22945573 MPU6050这个芯片是可以最多外挂5个其他的sensor的(好强大!),所以在将MPU6050调通后也理应对这一部分进行调试,废话不多说,开始说我的调试过程。本文中对i2cset的使用简写,没有总线号和其他参数,读者请自行查阅,相信很好理解的。 调试过程 使能MPU6050。因为MPU6050上点后为sleep状态,所以要首先对其进行使能,让他开始正常工作。如果不这样,那么其他的寄存器也将无法写入值,也就无法开展之后的工作,所以这里一定是先将mpu6050从sleep状态中拉出来: [html] view plain copy i2cset 0x68 0x6B 0 使能MPU6050 I2C MASTER模式。 [html] view plain copy i2cset 0x68 0x6A 0x20 设置MPU6050作为master的I2C速率(400kHz),因为外挂子传感器为HMC5883L,其spec中说明其支持400kHz I2C速率,所以设置成这个。当然MPU6050的master模式还有其他很多速率,请自行查阅spec。 [html] view plain copy i2cset 0x68 0x24 0x0D //只设置速率 or [html] view

CPU体系结构(组成部分)

﹥>﹥吖頭↗ 提交于 2020-03-16 00:27:10
在准备网络工程师考试,里面有些知识点是比较常考的。自己写这篇博客呢,当作是笔记吧,自己看一看也分享给大家一起学习。 这部分的内容就是讲CPU里面的组成结构以及各部分的功能。 CPU的构成:CPU主要由 运算器 、 控制器 、 寄存器组 和 内部总线 构成。 运算器 :由 算术逻辑单元ALU 、 通用寄存器 、 数据暂存器 等组成。程序状态字寄存器接受从控制器送来的命令并执行相应的动作,主要负责对数据的加工和处理。 算术逻辑单元ALU:用于进行各种算术逻辑运算(如与、或、非等)、算术运算(如加减乘除等) 通用寄存器:用来存放操作数、中间结果和各种地址信息的一系列存储单元。常见的通用寄存器如下:     a) 数据寄存器:        AX,累加寄存器,算数运算的主要寄存器;        BX,基址寄存器;        CX,计数寄存器,串操作、循环控制的计数器;        DX,数据寄存器。     b) 地址指针寄存器:       SI:源变址寄存器;       DI:目的变址寄存器;       SP:堆栈寄存器;       BP:基址指针寄存器     c) 累加寄存器:AC,又称为累加寄存器。当运算器的逻辑单元执行算术运算或者逻辑运算的时候,为ALU提供一个工作区。   3.数据暂存器:用来暂存从主存储器读出的数据,这个数据不能存放在通用寄存器中