标志寄存器

汇编之各个寄存器的作用

陌路散爱 提交于 2019-12-04 06:01:50
原文链接:[ https://www.cnblogs.com/zimmerk/articles/2520011.html ] 4个数据寄存器(EAX、EBX、ECX和EDX) 2个变址和指针寄存器(ESI和EDI) 2个指针寄存器(ESP和EBP) 6个段寄存器(ES、CS、SS、DS、FS和GS) 1个指令指针寄存器(EIP) 1个标志寄存器(EFlags) 1、数据寄存器 数据寄存器主要用来保存操作数和运算结果等信息,从而节省读取操作数所需占用总线和访问存储器的时间。32位CPU有4个32位的通用寄存器EAX、EBX、ECX和EDX。对低16位数据的存取,不会影响高16位的数据。这些低16位寄存器分别命名为:AX、BX、CX和DX,它和先前的CPU中的寄存器相一致。 4个16位寄存器又可分割成8个独立的8位寄存器(AX:AH-AL、BX:BH-BL、CX:CH-CL、DX:DH-DL),每个寄存器都有自己的名称,可独立存取。程序员可利用数据寄存器的这种”可分可合”的特性,灵活地处理字/字节的信息。 寄存器AX和AL通常称为累加器(Accumulator),用累加器进行的操作可能需要更少时间。累加器可用于乘、 除、输入/输出等操作,它们的使用频率很高; 寄存器BX称为基地址寄存器(Base Register)。它可作为存储器指针来使用; 寄存器CX称为计数寄存器(Count

2.3-X86指令简介

痴心易碎 提交于 2019-12-03 11:50:06
  x86指令种类繁多,数量庞大, 在这一节我们将会学习x86指令的分类,并分析其中最为基础的一部分指令。 通常一个指令系统主要包括这几类指令。 运算指令,比如加、减、乘、除这样的算术运算,以及与、或、非这样的逻辑运算。 还有传送类指令,比如把数据从存储器送到通用寄存器,或者从通用寄存器送到I/O接口等等。 有了这两类指令,计算机就可以从外界获取数据, 并在内部完成运算,最后将结果输出到外界。但是如果你想编制比较复杂的程序,例如像高级语言当中if e lse这样的语句,或者是for while这样的循环语句, 那就需要用到转移类指令,另外还需要有一些对CPU进行控制的指令。 那无论是哪一类指令,我们首先要关心的就是它究竟改变了什么。 例如一条加法指令,它会改变通用寄存器的内容, 或者有可能改变标志位,再有是改变存储器单元的内容,或者改变外设端口的内容, 还有可能改变指令指针以及其他的情况。 那我们在学习到新的指令的时候,一定要认真地想清楚这条指令 究竟改变了哪些地方,又对后续的指令会产生什么样的影响。   现在我们就通过一个示例程序来讲解几个常用的指令。 这个程序的目的是进行两个数的求和运算, 这两个数比较大,可能有很多个字节,第一个数存放在2000H开始的 存储器空间中,第二个数存放在3000H开始的存储器空间中。 而且我们希望这个程序有一定的灵活性,可以适应不同长度的数。

80x86的硬件基础知识摘要

匿名 (未验证) 提交于 2019-12-02 23:49:02
16位结构的微处理器: 数据总线为16位 主存容量1 MB: 地址总线为20位 (为什么20位对应1MB:1MB = 1024*1024 bytes = 220bytes) 【三种工作模式】 实模式: 8086/8088的工作方式,即存储器分段方式 保护模式: 80286起 ,虚拟存储管理和多任务管理 V86模式: 80386起, 同时模拟多个8086工作 【(程序可见的)寄存器】 通用寄存器:     数据寄存器:       ax:累加器,速度最快       bx:基址寄存器,指示存储器地址       cx :计数器,循环计数       dx:数据寄存器,存放乘除法结果,在I/o中存放端口地址(IO接口寄存器)     地址寄存器:       sp:堆栈指针寄存器,指向栈顶       bp:基址指针寄存器,指向栈中任意数据       si:源变址寄存器       di:目的变址寄存器 专用寄存器:     ip:指令指针寄存器     flags:标志寄存器     zf:零标志,0则置1     sf:符号标志,负号置1     cf:进位标志,有则置1,无符号数溢出判断     of:溢出标志,有则置1,有符号数溢出判断     af:辅助进位标志,低4位有进位则置1     pf:奇偶标志,1的个数为偶数则置1     tf:跟踪标志,单步执行则置1    

你说的曾经没有我的故事 提交于 2019-12-02 08:09:12
  不是科班毕业,直接学了Java入行,最近打算学C语言,了解一些入门级的语言,就看了一点入门的东西,这一篇汇编语言也是拾人牙慧,这里贴上原文地址,尊重原创。    《汇编语言》- 来自底层的较量 - 温故而知新 https://www.cnblogs.com/yougewe/p/8011911.html 。   百科的汇编语言定义:汇编语言(assembly language)是一种用于 电子计算机 、 微处理器 、 微控制器 或其他可编程器件的低级语言,亦称为符号语言。在汇编语言中,用 助记符 代替 机器指令 的 操作码 ,用地址符号或标号代替指令或 操作数 的地址。在不同的设备中,汇编语言对应着不同的机器语言 指令集 ,通过汇编过程转换成机器指令。特定的汇编语言和特定的机器语言指令集是一一对应的,不同平台之间不可直接移植。 一、汇编语言能干什么?仅次于机器语言?   计算机工作是由一系列的机器指令进行驱动工作的,这些指令是一系列二进制数字 0101000110,对应计算机的高低电平,而这些机器指令的集合就是机器语言,这已经是最底层,和硬件一对一了已经。   很明显,这样的机器语言是反人类的。只有天才和疯子才有能力去把控他。   于是汇编语言产生了。汇编语言就是将一些难于记忆的0100100转换为便于记忆的格式,让人能够稍微理解点。如 将寄存器bx的内容送到ax中

寄存器用途和英文全称

天涯浪子 提交于 2019-12-01 18:51:36
寄存器用途和英文全称 32位 寄存器类别和用途 基本程序执行寄存器(basic program execution registers)。8 个通用寄存器,6 个段寄存器,一个处理器状态标志寄存器(EFLAGS),和一 个指令指针寄存器(EIP)。 EAX、AX、AH和AL 一些寄存器的组成部分可以处理 8 位的值。例如,AX 寄存器的高 8 位被称为 AH,而低 8 位被称为 AL。同样的重叠关系也存在于 EAX、EBX、ECX 和 EDX 寄存器中: 32 位 16 位 8 位(高) 8 位(低) EAX AX AH AL EBX BX BH BL ECX CX CH CL EDX DX DH DL 其他通用寄存器只能用 32 位或 16 位名称来访问,如下表所示: 32 位 16 位 32 位 16 位 ESI SI EBP BP EDI DI ESP SP 通用寄存器有特殊用法: 乘除指令默认使用EAX。它常常被称为扩展累加器(extended accumulator)寄存器。 CPU 默认使用 ECX 为循环计数器。 ESP 用于寻址堆栈数据。它极少用于一般算术运算和数据传输,通常被称为扩展堆栈指针(extended stack pointer)寄存器。 ESI 和 EDI 用于高速存储器传输指令,有时也被称为扩展源变址(extended source index

程序员需要了解的硬核知识之CPU

有些话、适合烂在心里 提交于 2019-12-01 18:50:02
大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和 CPU 打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CPU CPU是什么 CPU 的全称是 Central Processing Unit ,它是你的电脑中最 硬核 的组件,这种说法一点不为过。CPU 是能够让你的计算机叫 计算机 的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。它是一种小型的计算机芯片,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 CPU 实际做什么 CPU 的核心是从程序或应用程序获取指令并执行计算。此过程可以分为三个关键阶段: 提取,解码和执行 。CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器(英语:Random Access Memory,缩写: RAM ),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的 临时数据存储介质 CPU 的内部结构

程序员需要了解的硬核知识之CPU

柔情痞子 提交于 2019-12-01 18:46:47
大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和 CPU 打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CPU CPU是什么 CPU 的全称是 Central Processing Unit ,它是你的电脑中最 硬核 的组件,这种说法一点不为过。CPU 是能够让你的计算机叫 计算机 的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。它是一种小型的计算机芯片,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 CPU 实际做什么 CPU 的核心是从程序或应用程序获取指令并执行计算。此过程可以分为三个关键阶段: 提取,解码和执行 。CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器(英语:Random Access Memory,缩写: RAM ),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的 临时数据存储介质 CPU 的内部结构

程序员需要了解的硬核知识之CPU

柔情痞子 提交于 2019-12-01 18:45:39
大家都是程序员,大家都是和计算机打交道的程序员,大家都是和计算机中软件硬件打交道的程序员,大家都是和 CPU 打交道的程序员,所以,不管你是玩儿硬件的还是做软件的,你的世界都少不了计算机最核心的 - CPU CPU是什么 CPU 的全称是 Central Processing Unit ,它是你的电脑中最 硬核 的组件,这种说法一点不为过。CPU 是能够让你的计算机叫 计算机 的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。它是一种小型的计算机芯片,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 CPU 实际做什么 CPU 的核心是从程序或应用程序获取指令并执行计算。此过程可以分为三个关键阶段: 提取,解码和执行 。CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器(英语:Random Access Memory,缩写: RAM ),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以随时读写(刷新时除外),而且速度很快,通常作为操作系统或其他正在运行中的程序的 临时数据存储介质 CPU 的内部结构

单片机成长之路(51基础篇) - 026 基于stm89c52之单片机看门狗

早过忘川 提交于 2019-12-01 17:09:50
基于stc89c52的看门狗,代码如下: main.c 1 #include "stc89c5x_Quick_configuration.h"    // 自定义头文件 2 #include "data.h" 3 #include "bsp_gpio.h" 4 #include "bsp_wdt.h" 5 6 void init_OS_Time(void){ 7 DATA.Time.Time_Interrupt = 1; // 设置步长 8 DATA.Time.Interrupt_count = 0; // 设置单位步数 9 DATA.Time.Time_s = 0; // 时间 s 10 DATA.Time.Time_h = 0; // 时间 h 11 DATA.Time.Time_day = 0; // 时间 日 12 DATA.Time.Time_month = 0; // 时间 月 13 DATA.Time.Time_year = 0; // 时间 年 14 } 15 16 void main(void){ 17 init_OS_Time(); 18 init_WDT(); 19 while(1){ 20 ; 21 } 22 } bsp_wdt.h 1 #ifndef __BSP_WDT_H_ 2 #define __BSP_WDT_H_ 3 4 /*-----------

STM32F4学习笔记7——USART Part2

天涯浪子 提交于 2019-11-30 18:16:23
硬件流控制 使用 nCTS 输入和 nRTS 输出可以控制 2 个器件间的串行数据流。如图显示了在这种模式 下如何连接 2 个器件: 分别向 USART_CR3 寄存器中的 RTSE 位和 CTSE 位写入 1,可以分别使能 RTS 和 CTS 流 控制。 RTS 流控制 如果使能 RTS 流控制 (RTSE=1),只要 USART 接收器准备好接收新数据,便会将 nRTS 变 为有效(连接到低电平)。当接收寄存器已满时,会将 nRTS 变为无效,表明发送过程会在 当前帧结束后停止。下图图显示了在使能 RTS 流控制的情况下进行通信的示例。 CTS 流控制 如果使能 CTS 流控制 (CTSE=1),则发送器会在发送下一帧前检查 nCTS。如果 nCTS 有效 (连接到低电平),则会发送下一数据(假设数据已准备好发送,即 TXE=0);否则不会进 行发送。如果在发送过程中 nCTS 变为无效,则当前发送完成之后,发送器停止。 当 CTSE=1 时,只要 nCTS 发生变化,CTSIF 状态位便会由硬件自动置 1。这指示接收器是 否已准备好进行通信。如果 USART_CR3 寄存器中的 CTSIE 位置 1,则会产生中断。下图 显示了在使能 CTS 流控制的情况下进行通信的示例。 注意:停止帧的特殊行为:当使能 CTS 流后,发送器发送停止信号时将不检查 nCTS 输入状态。