标志寄存器

汇编期末复习

别来无恙 提交于 2020-01-07 08:19:03
汇编 记忆部分 进制转换 逻辑地址转换物理地址 1234h:0058h = 12340h+0058h = 12398h 数据存放为 小端原则 低字节在前,比如 12h 34h 56h 78h 短跳,近跳 jmp short target 机器码:EBXX jmp near ptr target 机器码:E9XXXX 近跳的相对长度只能有1个字节长 近跳占3个字节,也就是近跳可以跳2个字节长 XX的计算公式是目标位置减去下一条指令位置,注意:小段规则。 如果是跳回前面的指令,就是 100h-XX ,比如跳回上一条指令,就是EBFC,这里FC=100h-04h,04h相当于下一条指令减去目标指令 远跳 jmp far ptr target 写法是:jmp 段地址:偏移地址 寄存器是CPU中可以存储数据的器件 寄存器 ax, bx, cx, dx。 cs, ds, ss, es。 cs:代码段寄存器 ds:数据段寄存器 ss:栈段寄存器 es:程序首个段前100h的地址,用来存放exe的相关信息。 ip, sp, 注意ip只有jmp类型指令可以修改 只有 bx,bp,si,di 可以放到[]里面,bx, bp为基寄存器。 其中[bx] == ds:[bx] [bp] == ss:[bp] 标志位 影响标志位的指令有很多,比如位运算,加减乘除等。需要记住的只有下面这些。

AVR汇编初探之一《AVR单片机的CPU内部结构》

别说谁变了你拦得住时间么 提交于 2019-12-24 10:57:39
学单片机那么久了,感觉想要深入,还得看汇编语言,至少得了解单片机内部结构。 下面就以ATmega16为例,介绍一下AVR单片机结构和汇编语言。 AVR单片机的CPU内核结构 如上两图,左图是虚线框内AVR CPU的内核结构,右图是AVR单片机内核结构的方框图,可以看出AVR单片机的数据总线(CPU字长)是8位的,也就说它是8位单片机。 AVR采用了Harvard结构,具有独立的数据和程序总线,CPU在执行一条指令的同时,就将PC中指定的下一条指令取出,构成了一级流水线运行方式,实现了一个时钟周期执行一条指令,数据吞吐量高达1MIPS/MHz。 AVR CPU内核由几个重要的部分组成,它们分别是: A.算数逻辑单元ALU(Arithmetic Logic Unit) AVR ALU与32个通用工作寄存器直接相连。寄存器与寄存器之间、寄存器与立即数之间的ALU运算只需要一个时钟周期。ALU操作分为3类:算术、逻辑和位操作,此外还提供了支持无/有符号数和分数乘法的乘法器,操作结果的状态将影响到状态寄存器SREG(Status Register)。 B.程序计数器PC、指令寄存器和指令译码器 程序计数器PC用来存放下一条需要执行指令在程序存储器(ROM)空间的地址(指向FlashROM空间),取出的指令存放在指令寄存器中,然后送入指令译码器中产生各种控制信号,控制CPU的运行(执行指令)。

微处理器寄存器结构(通用寄存器、指针和状态寄存器)

我的梦境 提交于 2019-12-22 15:04:07
寄存器可以分为两大类,一类为通用寄存器,一类为指针寄存器和变址寄存器。 通用寄存器 通用寄存器主要包括:EAX、EBX、ECX、EDX EAX Accumulator 累加器,其中EAX(32位)、AH(16位)、AX,AL(8位) 累加器用作乘除法时由特殊用途,但通常情况下视为通用寄存器 EBX Base 基址寄存器,其中EBX(32位)、BH(16位)、BX,BL(8位) 基址寄存器用作存放访问存储单元的偏移地址 ECX Count 计数器,其中ECX(32位)、CH(16位)、CX,CL(8位) CL用于移位和循环移位计数,CX用作重复的串操作指令计数,CX或ECX用作LOOP/LOOPD计数 EDX Data 数据寄存器,其中EDX(32位)、DH(16位)、DX,DL(8位) 数据寄存器是一个用用寄存器,在乘除法运算时也可用于记录部分积和部分被除数 指针寄存器和变址寄存器 指针寄存器和变址寄存器包括:ESP、EBP、ESI、EDI ESP Stack Pointer 堆栈指针寄存器,该指针用于存储堆栈存储器数据 EBP Base Pointer 基址指针寄存器,该指针用于存放堆栈段的数据区的“基地址” ESI Source Index 源变址指针寄存器,用于寻址串操作指令的源数据串 EDI Destination Index 目的变址指针寄存器

28335GPIO及外部中断配置介绍

ぐ巨炮叔叔 提交于 2019-12-13 03:20:06
本文转载连接: https://blog.csdn.net/E_ROAD_BY_U/article/details/53083151 弄了两周终于把28335的启动流程、寄存器及中断向量表的映射方法、内存的划分等有了一个全面的了解,今天看到久违的LED灯的闪烁,顿扫阴霾。特在此总结下28335GPIO及外部中断配置介绍。其实对于一个微控制器,只要能够独立实现这两个功能,也算是入门了。 一、GPIO口介绍 外界二进制信息(数字量)要被CPU处理,要给存储器存放,就需要外界信息源与两者之间的交换接口,这样的交换接口若用来进行通用目的数字量的输入输出,就被称为通用数字量输入/输出接口,简称GPIO。F28335 DSP有多达88个GPIO口,对应着芯片引出的88个引脚,随着芯片的封装与尺寸的确定,引脚数目是有限的,所以这88个引脚多数都是功能复用的,即可以灵活配置为输入引脚,也可以灵活配置为输出引脚,即可以作为通用I/O引脚,也可以作为特殊功能口(如SCI、SPI、ECAN等),非常灵活,用户根据需要,可以通过GPIO MUX(输入输出多路选择器,复用开关)寄存器来进行相关配置。 F28335DSP将这88个GPIO口分成了A、B、C三大组,A组包括GPIO0至GPIO31,B组包括GPIO32至GPIO63,C组包括GPIO64至GPIO87,每个引脚都复用了多个功能,同一时刻

CPU

不问归期 提交于 2019-12-12 10:36:07
CPU 1. CPU是什么? 2.CPU 实际做什么? 3.CPU 的内部结构 4.CPU 是寄存器的集合体 5.计算机语言 6.汇编语言 7.程序计数器 8.条件分支和循环机制 9.标志寄存器 10.函数调用机制 11.通过地址和索引实现数组 12.CPU 指令执行过程 13.总结 1. CPU是什么? CPU 的全称是 Central Processing Unit ,它是你的电脑中最硬核的组件,这种说法一点不为过。CPU 是能够让你的计算机叫计算机的核心组件,但是它却不能代表你的电脑,CPU 与计算机的关系就相当于大脑和人的关系。 它 是一种小型的计算机芯片 ,它嵌入在台式机、笔记本电脑或者平板电脑的主板上。通过在单个计算机芯片上放置数十亿个微型晶体管来构建 CPU。 这些晶体管使它能够执行运行存储在系统内存中的程序所需的计算,也就是说 CPU 决定了你电脑的计算能力。 2.CPU 实际做什么? CPU 的核心是从程序或应用程序获取指令并执行计算。 此过程可以分为三个关键阶段: 提取,解码和执行 。 CPU从系统的 RAM 中提取指令,然后解码该指令的实际内容,然后再由 CPU 的相关部分执行该指令。 RAM : 随机存取存储器 (英语:Random Access Memory,缩写:RAM),也叫主存,是与 CPU 直接交换数据的内部存储器。它可以 随时读写 (刷新时除外)

PCI设备编号

空扰寡人 提交于 2019-12-11 02:44:02
1.PCI设备编号 每一个PCI device都有其unique PFA(PCI Fcntion Address) PFA由 bus number、device number、function number组成 一条PCI总线支持256个PFA,即支持256个PCI device 每个PCI芯片都有自己的device number(取决于IDSEL管脚),每个PCI芯片占用8个PFA。 每个PCI芯片的第一个PCI device的PFA必为8的倍数。 若PCI device的配置空间中PCI_HEADER_TYPE寄存器的最高bit为1,说明此芯片还有其他PFA,即还有其他device,即当前芯片是 multi-function device . Each function on a multi-function device has its own configuration space 在系统中,每个PCI芯片上的所独有的信号线是:INTA、INTB、INTC、INTD、IDSEL 每个芯片上的IDSEL需要连到PCI总线中AD[31:11]中的一根,这对应于PCI device PFA的device number IDSEL is equivalent to chip select on the CPU side during address phase of CFG RD

ARM汇编指令

让人想犯罪 __ 提交于 2019-12-10 07:40:14
转载: arm汇编指令-Bingghost-博客园 学习嵌入式系统时的资料收集 ARM处理器的指令集可以分为跳转指令、数据处理指令、程序状态寄存器(PSR)处理指令、加载/存储指令、协处理器指令和异常产生指令6大指令 一、跳转指令 跳转指令用于实现程序流程的跳转 跳转指令分类 Ⅰ.使用专门的跳转指令 分支指令 B 带链接的分支指令: BL 带状态切换的分支指令 BX Ⅱ. 程序计数器PC控制 直接向程序计数器PC写入跳转地址值,通过向程序计数器PC写入跳转地址值 可以实现在4GB的地址空间中的任意跳转,在跳转之前结合使用MOV LR,PC等类似指令 可以保存将来的返回地址值,从而实现在4GB连续的线性地址空间的子程序调用。 ARM指令集中的跳转指令可以完成从当前指令向前或向后的32MB的地址空间的跳转,包括以下4条指令: 1、B指令 B指令的格式为: B{条件} 目标地址 2、BL指令 BL指令的格式为: BL{条件} 目标地址 BL是另一个跳转指令,但跳转之前,会在寄存器R14中保存PC的当前内容, 因此,可以通过将R14的内容重新加载到PC中,来返回到跳转指令之后的那个 指令处执行。 该指令是实现子程序调用的一个基本但常用的手段 3、BLX指令 BLX指令的格式为: BLX 目标地址 BLX指令从ARM指令集跳转到指令中所指定的目标地址

汇编语言复习提纲

99封情书 提交于 2019-12-05 00:07:09
第一章:掌握各进制的转换,有符号数的补码表示 1.1 各进制的转换 10进制 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16进制 1 2 3 4 5 6 7 8 9 A B C D E F 2进制 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111 十进制数一般用D、二进制数用B、八进制数用O、十六进制数用H来表示。 例如:10101100B,115D ,0075H等。 例: (1)N=45D 十进制数转换为二进制数(用除以2取余) 45/2 = 22 (a0= 1) 22/2 = 11 (a1= 0) 11/2 = 5 (a2= 1) 5/2 = 2 (a3= 1) 2/2 = 1 (a4= 0) 1/2 = 0 (a5= 1) 所以:N=45D=101101B (2)N=117D 十进制转换为十六进制数(除以16取余法) 117/16 = 7 (a0= 5) 7/16 = 0 (a1= 7) 所以 :N=117D=75H (3)将二进制数1011100转换为十进制数(各位二进制数码乘以与其对应的权之和) 1011100B = 1×2^6 + 0×2^5 + 1×2^4 + 1×2^3 + 1×2^2 + 0×2^1 + 0×2^0 = 92D (4

标志寄存器

自作多情 提交于 2019-12-04 23:24:06
目录 标志寄存器(8086CPU) 作用 大小 使用方式 ZF标志,在第6位,结果为0则为1,否则为0 PF标志,在第2位,结果中1的个数为偶数则为1,否则为0 SF 标志,在第7位,结果为负则为1,否则为0;有符号运算有效 CF标志,在第0位,存储进位或借位的值 OF标志,在第11位,结果溢出则为1,否则为0;没理解透彻 DF标志 串传送指令movsb 串传送指令movsw cld和std设置DF标志位 adc 指令,带位加法指令,用于计算特别大的数据 sbb 指令, 带借位减法指令,用于运算特别大的数据 cmp指令,这个玩意有点复杂(P234, 11.8) pushf和popf 标志寄存器在debug中的表示 标志寄存器(8086CPU) 作用 用来存储相关指令的某些执行结果 用来为CPU执行相关指令提供行为依据 用来控制CPU的相关工作方式 大小 标志寄存器有16位 使用方式 标志寄存器是按位起作用,也就是说每一个位都有专门的含义,记录特定的i西南西 flag的1、3、5、12、13、14、15位在8086CPU中没有使用,不具有任何含义。而0、2、4、6、7、8、9、10、11位都具有特殊的含义 ZF标志,在第6位,结果为0则为1,否则为0 zf (Zero Flag) 是零标志位,在第6位;它记录相关指令执行后,其结果是否为0,如果为0,那么 zf = 1 ;否则 zf

汇编基础知识

帅比萌擦擦* 提交于 2019-12-04 11:26:14
1: 数据的表示 微型计算机的字长与微处理器的寄存器位数有关。 以 Intel 80X86 系列微处理器为例,CPU 是 8086/8088、80286 的字长是 16 位(二进制位 bit),那么它们的寄存器的位数一定是 16 位的; 32 位字长的微机 CPU 是 80386/80486 或者 Pentium 系列,它们的寄存器的位数则是 32 位的。 学习汇编语言我们会用到十六进制(H)的数据形式,要使自己尽快习惯用十六进制来思维。在汇编语言中,数值后面分别用字母 B 、 H 、 D 代表二进制(Binary)、十六进制(Hexadecimal)、十进制数(Decimal)(十进制数可以省略 D )。 在计算机中还规定采用字节、字、双字等单位来表示数据。 字节(Byte):8 位二进制数。如 00000101B 或表示成 05H ; 10000101B 或表示成 85H 。 字(Word):16 位二进制数,等于 2 字节。如 1100010111010110B 或表示成 C5D6H 。 双字(Double Word):32 位二进制数,又称为双精度数,等于 4 字节。如 23456789H 。 2: 寄存器的分类 8086 寄存器都是 16 位的寄存器,根据用途可分为 4 种类型。分别是数据寄存器、地址寄存器、段寄存器和控制寄存器 (1)数据寄存器