状态寄存器

Keil 程序调试窗口

六眼飞鱼酱① 提交于 2019-11-26 22:36:12
一、程序调试时的常用窗口 Keil 软件在调试程序时提供了多个窗口,主要包括输出窗口(Output Windows)、观察 窗口(Watch&Call Statck Windows)、存储器窗口(Memory Window)、反汇编窗口(Dissambly Window)串行窗口(Serial Window)等。进入调试模式后,可以通过菜单 View 下的相应命 令打开或关闭这些窗口。 图 1 是输出窗口、观察窗口和存储器窗口,各窗口的大小可以使用鼠标调整。进入调试 程序后,输出窗口自动切换到 Command 页。该页用于输入调试命令和输出调试信息。对于 初学者,可以暂不学习调试命令的使用方法。 图 1 调试窗口(命令窗口、存储器窗口、观察窗口) 1 、存储器窗口 ? 存储器窗口中可以显示系统中各种内存中的值,通过在 Address 后的编缉框内输入“字 母:数字”即可显示相应内存值,其中字母可以是 C、D、I、X,分别代表代码存储空间、 直接寻址的片内存储空间、间接寻址的片内存储空间、扩展的外部 RAM 空间,数字代表想 要查看的地址。例如输入 D:0 即可观察到地址 0 开始的片内 RAM 单元值、键入 C:0 即 可显示从 0 开始的 ROM 单元中的值,即查看程序的二进制代码。该窗口的显示值可以以各 种形式显示,如十进制、十六进制、字符型等,改变显示方式的方法是点鼠标右键

操作系统原理(1)

為{幸葍}努か 提交于 2019-11-26 22:02:16
计算机体系结构 一个计算机系统由运算器、控制器、存储器(即内存)、输入设备、输出设备组成。其中运算器运算数据,而数据在内存中,运算器要通过控制器到内存中获取数据,运算器最后将运算后的结果通过控制器保存在内存中,通常程序由指令和数据组成,当程序运行时指令和数据保存在内存中,指令中有数据在内存中的地址信息,从而运算器知道数据在内存的位置,然后通过控制器获取所需的数据;一般来说IO设备是通过北桥或南桥芯片连入的,北桥成为高速总线控制器:内存和CPU通过北桥连接在一起。南桥称为低速总线控制器:外围设备和南桥连在一起,然后南桥和北桥相连; 对一个简单的PC机而言,在某一时刻只能运行一个程序,但PC计算能力很强一个程序运行的程序内容和占用的CPU时间不是特别长,因此为了能够尽可能利用计算机的资源,需要让PC具有同时运行多个程序的能力,因此每个程序在运行时需要一个协调器称为内核(内核是运行在硬件之上负责管理硬件资源并且将硬件资源虚拟成其他样子提供给上层所需的应用程序(这样做的原因是如果某一应用程序直接运行在硬件之上则此程序就可以控制硬件的各种属性,其它程序运行时可能彼此会产生干扰,一个恶意的程序可能导致其它程序统统退出所以就需要统一的资源管理者,而且每个程序要想使用硬件必须通过内核来完成,而内核也不会让程序直接访问硬件而是通过将硬件提供的计算能力通过一个个的称为系统调用(system call

Intel 80386 CPU

偶尔善良 提交于 2019-11-26 19:20:50
一、80386 概述 80386处理器被广泛应用在1980年代中期到1990年代中期的IBM PC相容机中。这些PC机称为「80386电脑」或「386电脑」,有时也简称「80386」或「386」。80386的广泛应用,将PC机从 16位 时代带入了 32位 时代。80386的强大运算能力也使PC机的应用领域得到巨大扩展,商业办公、科学计算、工程设计、多媒体处理等应用得到迅速发展。它的数据总线和地址总线都是32位,直接寻址的内存空间4GB,虚拟地址空间为64TB。芯片上集成了27.5万个晶体管,主频16-33MHz。它是X86第一个真正的32位CPU,它能提供真正的多任务处理和建立虚拟系统的能力。 二、80386的引脚及功能 80386 DX有132根引脚,采用PGA(Pin Grid Array,引脚网格阵列)封装,采用这种封装工艺单根引脚所占用的面积较双列直插时小,因此引脚数目可以多一些,不必再采用引脚复用技术。因此,在80386中数据线和地址线是分开设置的,控制信号和状态信号也不再复用引脚。其中34 条地址线(A31~A2、BE3~BE0),32 条数据线(D31~D0),3 条中断线,1条时钟线,13 条控制线,20 条电源线VCC,21条地线VSS,还有8 条为空。 与8086/8088 相比,需要说明以下几点: 1)时钟( CLK2): 80386

计算机组成原理 - 一些简单题和设计分析题

此生再无相见时 提交于 2019-11-26 12:34:03
为了前几天的计算机组成原理的复习,从google上搜索的一些烟台大学历年考试试题进行的一些总结,现在分享给需要的朋友。 简答题 1. CPU中包括哪几种寄存器?分别说明其作用。 答:CPU有以下寄存器: (1)指令寄存器(IR):用来保存当前正在执行的一条指令。 (2)程序计数器(PC):用来确定下一条指令的地址。 (3)地址寄存器(AR):用来保存当前CPU所访问的内存单元的地址。 (4)缓冲寄存器(DR):<1>作为CPU和内存、外部设备之间信息传送的中转站。 <2>补偿CPU和内存、外围设备之间在操作速度上的差别。 <3>在单累加器结构的运算器中,缓冲寄存器还可兼作为操作数寄存器。 (5)通用寄存器(AC):当运算器的算术逻辑单元(ALU)执行全部算术和逻辑运算时,为ALU提供一个工作区。 (6)状态条件寄存器:保存由算术指令和逻辑指令运行或测试的结果建立的各种条 件码内容。除此之外,还保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。 2.根据操作数所在位置,指出其寻址方式(填空)。 (1)、操作数在寄存器中,为____ 寄存器 ____寻址方式。 (2)、操作数地址在寄存器中,为_ 寄存器间接 _寻址方式。 (3)、操作数地址(主存)在指令中,为___ 直接 ___寻址方式。 (4)、操作数在指令中,为__ 立即 ____寻址方式。

计算机组成原理复习题二

时光毁灭记忆、已成空白 提交于 2019-11-26 12:33:28
原文地址: https://wenku.baidu.com/view/935be3d1c1c708a1284a4446 一、选择题 1、在间址周期中,_C_____。 A.所有指令的间址操作都是相同的; B.凡是存储器间接寻址的指令,它们的操作都是相同的; C.对于存储器间接寻址或寄存器间接寻址的指令,它们的操作是不同的; D.以上都不对。 2、将有关数据加以分类、统计、分析,以取得有利用价值的信息,我们称其为_C_____。 A. 数值计算 B. 辅助设计 C. 数据处理 D. 实时控制 3、定点16位字长的字,采用2的补码形式表示时,一个字所能表示的整数范围是____A_。 A.-215 ~ +(215 -1) B.-(215 –1)~ +(215 –1) C.-(215 + 1)~ +215 D.-215 ~ +215 4、根据传送信息的种类不同,系统总线分为___B___。 A. 地址线和数据线 B. 地址线、数据线和控制线 C. 地址线、数据线和响应线 D. 数据线和控制线 5、外存储器与内存储器相比,外存储器__B____。 A.速度快,容量大,成本高 B.速度慢,容量大,成本低 C.速度快,容量小,成本高 D.速度慢,容量大,成本高 一个256K×8的存储器,其地址线和数据线总和为___C___。 注解:256=2的8次方,所以地址线为8,256K*8

计算机组成原理期末试题

泄露秘密 提交于 2019-11-26 12:28:58
一、选择类型题: 1.现代计算机组织结构是以_B____为中心,其基本结构遵循冯·诺依曼思想。 A. 寄存器 B. 存储器 C. 运算器 D. 控制器 2.存储字长是指 ___ B ___ 。 A .存放在一个存储单元中的二进制代码组合; B .存放在一个存储单元中的二进制代码位数; C .存储单元的个数; D .机器指令的位数。 3 . CPU 通过 ____ B __ 启动通道。 A .执行通道命令; B .执行 I/O 指令; C .发出中断请求; D .程序查询。 4 .对有关数据加以分类、统计、分析,这属于计算机在 __ C ____ 方面的应用。 A .数值计算; B .辅助设计; C .数据处理; D .实时控制。 5.电子计算机的算术/逻辑单元、控制单元及存储器合称为C A.CPU B.ALU C.主机; D.UP 6.存储周期是指 ______ 。 A .存储器的写入时间; B .存储器进行连续写操作允许的最短间隔时间; C .存储器进行连续读或写操作所允许的最短间隔时间; D .指令执行时间。 7.当定点运算发生溢出时,应______ 。 A.向左规格化; B.向右规格化; C.发出出错信息; D .舍入处理。 8 .加法器采用先行进位的目的是 ______ 。 A .优化加法器的结构; B .节省器材; C .加速传递进位信号; D .增强加法器结构。 9

浅谈汇编

爷,独闯天下 提交于 2019-11-26 11:59:48
创建编写汇编文件: 首先创建一个空文件 命名方式以.s结尾 第一行需要声明一个代码段 .text 第二行声明一个global + 方法名 .global test 指令: 汇编代码注释在行前加上 ; ret:返回 mov指令:目的寄存器,源操作数 举例:mov x0, #0x8 将8赋值给x0 add指令:将两个寄存器相加 sub指令:将两个寄存器相减 cmp指令:比较指令 操作数1 操作数2:cmp x0, x1 用x0减去x1,并将结果放到cpsr(程序状态寄存器)寄存器里 b 指令:跳转指令,相当于jump b 目标地址 bl指令:带返回的跳转指令,与b指令的区别是使用bl指令,ret指令才会生效 内存操作: 1、load,从内存中装载数据 ldr指令:从内存中读取数据 ldr x0, [x1] ldur指令: ,一般如果数据为负数,会用ldur ldp指令:从内存中读取数据,放到一对寄存器中 ldp w0, w1, [x2, #0x10] 2、store,往内存中存储数据 str指令:往内存中写入数据 str w0, [x1],将w0的数据写入到x1中 stur指令:参考ldur指令 stp指令:参考ldp指令 wzr指令:零寄存器 xzr指令:零寄存器 程序计数器: pc(Program Counter) 记录CPU当前指令是哪一条指令

程序的机器级表示(一)

[亡魂溺海] 提交于 2019-11-26 06:07:55
程序编码 假设一个C程序,有两个文件p1.c和p2.c。我们用Unix命令行编译这些代码: linux> gcc -Og-o p p1.c p2.c    命令gcc就是GCC编译器,这是Linux默认的编译器。编译选项-Og告诉编译器使用会生成符合原始C代码整体结构的机器代码的优化等级,使用较高级别的优化产生的代码会严重变形,以至于产生的机器代码和初始源代码之间的关系难以理解。 实际上,gcc命令调用了一整套程序,将源代码转换为可执行代码。首先,C预处理器扩展源代码,插入所有用#include命令指定的文件,并扩展所有用#define声明指定的宏。其次,编译器产生两个源文件的汇编代码,名字分别为p1.s和p2.s。接下来,汇编器会将汇编代码转换为二进制目标代码文件p1.o和p2.o。目标代码是机器代码的一种形式,它包含所有指令的二进制表示,但是还没填入全局值的地址。最后,链接器将两个目标代码文件与实现函数(如printf)的代码合并,并产生最终的可执行文件p(由-o p指定的)。 机器级代码 对机器级编程来说,其中两种抽象尤为重要。第一种是由指令集体系结构或指令集架构(Instruction Set Architecture,ISA)来定义机器级程序的格式和行为,它定义了处理器状态、指令的格式,以及每条指令对状态的影响。大多数ISA,包括x86-64

modbus_tk与Modubs Slave结合使用

百般思念 提交于 2019-11-26 03:38:28
下载两个软件: Modbus Slave/Poll Modbus Slave(用来模拟客户端(从))和Modbus Poll(用来模拟服务端(主)) Modbus Poll是非常流行的Modbus Master模拟器,用于测试和调试从设备。支持Modbus RTU/ASCII和Modbus TCP/IP。 一、模拟器的使用 1.1 配置Modbus Poll 配置Modbus Poll的连接 配置Modbus Poll的参数 参数说明 Tx:向主站发送数据帧的次数 Err:通讯错误次数 ID:模拟Modbus子设备的设备地址 F:使用的Modbus功能码 SR:扫描周期 Slave ID:Modbus从站地址 Function:寄存器的功能码 Address:寄存器起始地址,默认从0开始 Quantity:寄存器连续个数,默认为10个 Scan Rate:读取数据的周期,单位毫秒,默认1000ms 寄存器功能码 代码 中文名称 寄存器PLC地址 位操作/字操作 操作数量 01 读线圈状态 00001-09999 位操作 单个或多个 02 读离散输入状态 10001-19999 位操作 单个或多个 03 读保持寄存器 40001-49999 字操作 单个或多个 04 读输入寄存器 30001-39999 字操作 单个或多个 05 写单个线圈 00001-09999 位操作 单个 06

GDB调试及coredump详解

情到浓时终转凉″ 提交于 2019-11-26 03:09:48
一、coredump:是针对程序异常而产生的core文件,包含程序运行时的内存、寄存器状态、堆栈指针、函数调用等信息,用于存储程序出错时的状态。 二、coredump的存储位置:与被执行文件在同一目录下。当然,位置可以在程序中通过 chdir 命令修改 三、如何判断是coredump文件:该文件主要的格式为 ELF 格式。可以通过 readelf -h core 进行判断,如图: 四、产生coredump的条件: 首先确认 当前会话 中的ulimit -c,若为0,则不会产生core,需要修改和设置。 附: ulimit -c unlimited #可以产生core且不受大小限制 ulimit -a #显示当前各种用户进程设置 #ulimit的某些参数设置与运行机器的配置有关,慎重使用。 ulimit -d unlimited #数据段长度 ulimit -m unlimited #最大内存大小 ulimit -s unlimited #堆栈大小 #以上是设置为无限制 #若是想设置对应字符大小,可以指定如下图: ulimit -c [size] 可能 -c 设置成 4 也不会生成core,因人而异。 当前用户对写入core目录的写权限有足够的空间。 其他不会产生core文件的原因。 五、coredump产生的几种情况 内存访问越界 多线程程序使用不安全的线程函数