首页
学习
活动
专区
圈层
工具
发布

第二章 IBM-PC微机的基本功能

个别指令对寄存器有特定的使用,并且又必须在指令中指明它的名字,这类寄存器的使用称为特定使用。 例如,移位指令SHLAX,CL CL被固定用作移位次数。...2.指针寄存器 指针寄存器有堆栈指针SP和基址指针BP 它们一般被用来存放16位地址,在形成20位的物理地址时常被作为偏移量使用。...四、标志寄存器(难点,容易绕) 标志寄存器是用来反映CPU在程序运行时的某些状态,如是否有进位、奇偶性、结果的符号、结果是否为零等等。...为了方便书写,在源程序中常用5位十六进制数或一个符号来表示一个存储单元的地址。 4.任何两个相邻字节单元就构成一个字单元 一个字存储单元(WORD)的长度为16位二进制数,即两个字节。...对于一个64K的段,当偏移量为0时,就是这个段的起始单元,而偏移量为0FFFFH时,就是这个段的最后一个字节单元。

82020

软考 | 计算机系统

总结而言,指令寄存器(IR)存放的是从内存中获取的指令,类似于中间站,用于存放指令。而程序计数器(PC)则存放的是指令的地址,同时还具有计数的功能。...机器数又分为有符号数和无符号数。其中,无符号数对应正数,表示在机器数中没有符号位。对于无符号数,如果约定小数点的位置在机器数的最低位之后,则该数为纯整数。...如果约定小数点的位置在机器数的最高位之前,那么这个数是纯小数。对于带符号数,机器数的最高位是表示正、负的符号位,其余位则表示数值。...相对寻址:指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。 变址寻址:操作数地址等于变址寄存器的内容加偏移量。...模 2 加减运算的规则是按位运算,不发生借位和进位。要注意,当码距为 2 时,CRC 只能检错而不能纠错。

2.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    【学员笔记分享】二进制逆向学习笔记:汇编之通用寄存器

    ,所以,这些32位寄存器更具有通用性。...变址寄存器不可分割成8位寄存器。作为通用寄存器,也可存储算术逻辑运算的操作数和运算结果。 它们可作一般的存储器指针使用。在字符串操作指令的执行过程中,对它们有特定的要求,而且还具有特殊的功能。...在16位CPU系统中,它只有4个段寄存器,所以,程序在任何时刻至多有4个正在使用的段可直接访问;在32位微机系统中,它有6个段寄存器,所以,在此环境下开发的程序最多可同时访问6个段。...使用该标志位的情况有:多字(字节)数的加减运算,无符号数的大小比较运算,移位操作,字(字节)之间移位,专门改变CF值的指令等。...三、32位标志寄存器增加的标志位 1、I/O特权标志IOPL(I/OPrivilege Level) I/O特权标志用两位二进制位来表示,也称为I/O特权级字段。

    1.4K30

    汇编语言从入门到精通-2CPU资源和存储器

    图2.1 CPU寄存器组的示意图  2.1.2、通用寄存器的作用   通用寄存器可用于传送和暂存数据,也可参与算术逻辑运算,并保存运算结果。除此之外,它们还各自具有一些特殊功能。...有些指令的执行会改变标志位(如:算术运算指令等),不同的指令会影响不同的标志位,有些指令的执行不改变任何标志位(如:MOV指令等),有些指令的执行会受标志位的影响(如:条件转移指令等),也有指令的执行不受其影响...2、物理地址的形成方式   由于规定段地址必须是16的倍数,所以,其值的一般形式为:XXXX0H,即:前16位二进制位是变化的,后四位是固定为0。...16位CPU有四个段寄存器,所以,其程序可同时访问四个不同含义的段。段寄存器及其偏移量的引用关系如图2.7所示。 ?...对于上述规定,随着后续内容的叙述,将会对它们有更进一步理解。

    93430

    软件设计师考试 | 计算机系统

    总结而言,指令寄存器(IR)存放的是从内存中获取的指令,类似于中间站,用于存放指令。而程序计数器(PC)则存放的是指令的地址,同时还具有计数的功能。...机器数又分为有符号数和无符号数。其中,无符号数对应正数,表示在机器数中没有符号位。对于无符号数,如果约定小数点的位置在机器数的最低位之后,则该数为纯整数。...如果约定小数点的位置在机器数的最高位之前,那么这个数是纯小数。对于带符号数,机器数的最高位是表示正、负的符号位,其余位则表示数值。...相对寻址:指令地址码给出的是一个偏移量(可正可负),操作数地址等于本条指令的地址加上该偏移量。 变址寻址:操作数地址等于变址寄存器的内容加偏移量。...模 2 加减运算的规则是按位运算,不发生借位和进位。要注意,当码距为 2 时,CRC 只能检错而不能纠错。

    1.1K50

    Review

    1.4 类型转换 有符号数和无符号数的转换规则: 位模式不变、数值可能改变(按不同编码规则重新解读) 隐式转换 有符号数隐式转换为无符号数 当表达式中有符号和无符号数混用时,包括比较运算符连接的表达式...image.png 符号扩展 对于给定 w 位的有符号整型数 x 转为 w+k 位相同数值的整型数,将符号位复制 k 份 C 语言中从短整数类型向常整数类型转换时自动进行符号扩展 image.png...有符号数加法 image.png image.png 【注】CPU 其实并不知道操作的是有/无符号数,CPU 所做的便是将两个 w 位的二进制数 x、y 相加并将结果的进位 w+1 位去掉(即只保留结果的后...AT&T 格式指令后缀 b:操作字节(1 byte) w:操作字(2 byte) l:操作双字(4 byte) q:操作四字(8 byte) 【注】x86_64 规定:任何为寄存器生成 32 位值的指令都会把该寄存器的高位部分置...栈操作指令类 image.png 算术逻辑运算指令类 image.png 【注】leaq 指令不设置条件码,因为它是用于进行地址计算的。对于逻辑操作,进位标志和溢出标志会设置位0。

    1.6K30

    嵌入式:数据处理指令详解

    和CMN (5)TST和TEQ (6)乘法指令 乘法指令的二进制编码 汇编格式 注意事项 ARM的数据处理指令主要完成寄存器中数据的算术和逻辑运算操作: 数据处理指令分类 数据处理指令二进制编码 数据处理指令表...数据处理指令的特点 所有操作数都是32位宽,或来自寄存器或来自指令中的立即数(符号或0扩展) 如果数据操作有结果,则结果为32位宽,放在一个寄存器中(有一个例外是长乘指令的结果是64位的); ARM数据处理指令中使用...按结果位宽一般分为2类:一类是2个32位二进制数相乘的结果是64位;另一类是2个32位二进制数相乘,仅保留最低有效32位。...RdHi:RdLo ←Rm*Rs 111 SMLAL 有符号长乘累加 RdHi:RdLo +=Rm*Rs 注: 对于有符号和无符号操作数,结果的最低有效32位是一样的,所以对于只保留32位结果的乘法指令...乘法指令的二进制编码 说明: 对于32位乘积结果指令,Rd为结果寄存器,Rm、Rs、Rn为操作数寄存器。

    1.5K40

    MIPS架构深入理解7-汇编语言理解

    9.3.1 算术、逻辑指令 MIPS架构算术、逻辑指令是三目操作运算指令,也就是说,它们具有2个输入和一个输出。例如:表达式d = s + t写成汇编形式为addu d,s,t。...但是,有时候16位立即数不能满足我们的要求,我们需要对其进行扩展,扩展方式有两种:符号扩展或零扩展到32位。怎样选择取决于操作,通常,算术操作使用符号扩展,逻辑操作使用零扩展。...指令的执行总是将任何GP寄存器的32位上半部分设置为所有1或所有0(反映第31位的值)。...9.4 寻址模式 MIPS架构的寻址模式非常简单,就是寄存器+偏移量的方式,偏移量的范围是−32768~32767(也就是16位的立即数)。...直接寻址+索引:使用寄存器指定偏移量。 常量寻址:直接作为32位地址使用。 寄存器间接寻址:寄存器+偏移量,但是此处的偏移量等于0。

    3.9K20

    大学课程 | 《微机原理与接口技术》笔记

    加(减)法运算时,若最高位有进(借)位则CF=1 OF:溢出标志位。当算术运算的结果超出了有符号数的可表达范围时,OF=l ZF:零标志位。当运算结果为零时ZF=1 SF:符号标志位。...16位,规则字,以偶地址开始存放 字节: 高8位传送奇地址,低8位传送偶地址 内存储器管理 8088CPU是16位体系结构的微处理器 可以同时处理16位二进制码 8088CPU需要管理1MB内存 分段技术...分为若干个逻辑段,取内地址,用16位表示,每段最大64KB 对段首地址(物理地址)规定,段首地址低4位为0,例如:00000H,00010H,FFFF0H 段地址:段的起始地址的高16位 偏移地址:段内相对于段的起始地址的偏移量...仲裁控制 出错处理 总线驱动 总线的主要性能指标 总线带宽(B/S) 单位时间内总线上可传送的数据量 总线带宽=位宽×工作频率 总线位宽(bit) 能同时传送的数据位数 总线的工作频率(MHz) 总线带宽...“0”和“1”的,具有记忆功能的半导体器件组成 (2)能存放一位二进制数的半导体器件称为一个存储元 (3)若干存储元构成一个存储单元 半导体存储器的分类 内存储器: 随机存取存储器(RAM) 静态存储器

    4.7K75

    程序是怎样跑起来--读书笔记

    CPU 是具有各种 功能的寄存器的集合体 程序计数器、累加寄存器、标志寄存器、指令寄存器和栈寄存器都只有一个,其他的寄存器一般有多个 数据是用二进制表示的 二进制表示的原因 计算机内部是由I CA 这种电子部件构成的...二进制数 ○○的 ×× 次幂”表示位权,其中,十进制数的情况下○○部分为 10,二进制数的情况下则为 2。这个称为基数。 ○○的 ×× 次幂”中的 ××,在任何进制数中都是数的位数-1。...这个运算中出现 了最高位溢出的情况,对于溢出的位, 计算机会直接忽略掉。100000000 这个 9 位二进制数就会被认为是 00000000 这一 8 位二进制数。...该数据位是 1 时表示负,为 0 时则表示“正或者 0”。数值的大小用尾数部分和指数部分来表示。...0.75 就是“0.75×10 的0次幂”。根据这个规则来表示小数的方式,就是正则表达式。 在二进制数中,我们使用的是“ 将小数点前面的值固定为1的正则表达式”。

    91920

    汇编语言期末复习不挂科——知识点总结

    ,对它们有特定的要求,且具有特殊的功能 2个指针寄存器:SP和BP (1)BP为基指针寄存器,用它可直接存取堆栈中的数据 (2)SP为堆栈指针寄存器,用它只可访问栈顶 4个段寄存器:ES,DS,CS...偏移量 段寄存器的引用 取指令所用的段寄存器和偏移量一定是用CS和IP; 堆栈操作所用的段寄存器和偏移量一定是SS和SP; 串操作的目标操作数所用的段寄存器和偏移量一定是ES和DI;...,奇偶标志:计算结果二进制数有奇数个1还是偶数个1,奇数个1写0,偶数个1写1 SF标记,符号标记:运算结果为正,置0;为负,置1 CF标志,进位标志:最高位是否有进位或错误,有置1,没有置...0 OF标志,溢出标志:8位数是否超过-128到127,是溢出置1 AF标志,辅助进位标志,低4位是否向高4位进位或借位,是置1,否置0 算术运算指令 加法指令 1.ADD加法指令:把源操作数的值加到目的操作数...指令的执行不影响任何标志位。

    1.2K10

    IEEE 754标准--维基百科

    只有32位模式有强制要求,其他都是选择性的。大部分编程语言都提供了IEEE浮点数格式与算术,但有些将其列为非必需的。...特殊值 这里有三个特殊值需要指出: 以上规则,总结如下: 32位单精度 单精度二进制小数,使用32个比特存储。 S为符号位,Exp为指数字,Fraction为有效数字。...指数部分即使用所谓的偏正值形式表示,偏正值为实际的指数大小与一个固定值(32位的情况是127)的和。采用这种方式表示的目的是简化比较。...浮点数的舍入 任何有效数上的运算结果,通常都存放在较长的寄存器中,当结果被放回浮点格式时,必须将多出来的比特丢弃。...C语言标准定义的浮点数的十进制精度为:十进制数字的位数q,使得任何具有q位十进制数字的浮点数可近似表示为b进制的p位数字并且能近似回十进制表示而不改变这q位十进制数字[4] 但由于相对近似误差不均匀,有的

    2.5K30

    Xilinx FPGA中为什么有了BRAM还需要SliceM

    一个LUT(在7系列及以后通常是6输入LUT)最多能实现 64x1位 的RAM或 32x1位 的移位寄存器。你可以非常精细地使用一个或几个LUT来实现你需要的小容量存储,资源利用率高。...非常适合寄存器组、小型FIFO、状态机状态寄存器、系数存储、数据路径上的小缓存等。 访问性能与灵活性: BRAM: 具有固定的访问时序(通常有1-2个周期的读延迟)。...更灵活的位宽: 更容易实现不规则的位宽组合(例如,一个3位宽、一个5位宽的小存储器),只需要组合不同LUT的输出即可。BRAM的位宽配置受其物理结构限制。...其输出寄存器可以单独用作触发器。 其进位逻辑可以用于快速算术运算。 这种多功能性是Slicem存在的根本原因。分布式RAM/移位寄存器只是它众多功能模式中的两种。...设计者需要根据存储容量、访问速度要求、端口数量、位宽、功耗以及布局布线等因素,选择合适的资源类型。Slicem对于实现高效、灵活、高性能的数字系统设计是不可或缺的。

    29010

    一周掌握FPGA Verilog HDL语法 day 2

    寄存器数据类型的关键字是reg.通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当。Verilog HDL语言提供了功能强大的结构语句使设计者能有效地控制是否执行这些赋值语句。...其格式如下: reg [n-1:0] 存储器名[m-1:0];或 reg [n-1:0] 存储器名[m:1]; 在这里,reg[n-1:0]定义了存储器中每一个存储单元的大小,即该存储单元是一个n位的寄存器...基本的算术运算符 在Verilog HDL语言中,算术运算符又称为二进制运算符,共有下面几种: 1) + (加法运算符,或正值运算符,如 rega+regb,+3) 2) - (减法运算符,或负值运算符...注意:在进行算术运算操作时,如果某一个操作数有不确定的值x,则整个结果也为不定值x。 位运算符 Verilog HDL作为一种硬件描述语言,是针对硬件电路而言的。...这是因为在计算拼接信号的位宽的大小时必须知道其中每个信号的位宽。位拼接还可以用重复法来简化表达式。见下例: {4{w}} //这等同于{w,w,w,w} 位拼接还可以用嵌套的方式来表达。

    43310

    非常详细!操作系统【内存管理】培训级教程

    如图:据此可以快速得到地址的转换逻辑:(2)拓展假设一个计算机是用32个二进制位表示逻辑地址,页面大小位4KB = 2^12B = 4096B那么,进程数据的逻辑地址的后12位为页面偏移量,逻辑地址的前...该计算机就支持32位,因此有20个二进制位表示页号,即可以表示220个页面,每个页面在页表中都必须对应一个页表项,因此页表中的页表项最多可以有220个,所以一个页表需要的最大空间为220*4 = 222B...由此,可以将页表的2^20拆分成1024组,每组有1024个页表项,用一个二级页表存储单级页表,7.3.3 逻辑结构的改变32位二进制位中,前10位用来表示二级页表,后10位用来表示每个二级页表包含的单极页表...TIPS:如果一个页表分为了好几页,那么不同页中可能页号有重叠,可能会照成无法区分顶级页表的后果。例子:业内偏移量位数实质上就是需要用几位二进制位来表示页面大小。...首先检查段号是否合法(段号是否越界)。假如S是否>=段表长度M(从段表寄存器中读取),那么段号越界,系统发生越界中断。注意此处因为段表长度至少为1,而段号从0开始,所以当S=M时也相当于越界。

    36110

    MIPS架构深入理解1-MIPS和RISC架构体系介绍

    一些编译器高效优化的要求和流水线的设计要求是兼容的,所以MIPS架构的CPU具有32个通用寄存器,使用具有三个操作数的算术/逻辑指令。那些复杂的特殊目的的指令也是编译器不愿意产生的。...3个操作数的指令: 编译器偏爱三个操作数的运算,对于复杂的表达式能够有更大的优化空间。而算术/逻辑运算指令不需要存储操作,所以有足够的位表示两个源操作寄存器和一个目的寄存器。...一旦数据加载到寄存器中,它就看作为一个寄存器长度大小的数据(比如说,32位架构就是32位整数,64位架构就被看作为64位整数)。所以,对于这些字节或半字的load操作,还需要考虑符号位。...虽然,可以使用寄存器保存跳转目标,然后再使用跳转指令跳转到32位地址的任何地方。 条件分支指令只有16位的偏移量,对于4字节对齐的内存空间,其访问的范围是2^18B。...最少的子程序支持: 跳转指令也与我们习惯上的认知有所不同:具有跳转(jump)和链接(link)跳转指令,把返回地址写入到一个固定的寄存器中。默认使用$31作为返回地址寄存器。

    9.1K21

    一周掌握FPGA Verilog HDL语法 day 2

    寄存器数据类型的关键字是reg.通过赋值语句可以改变寄存器储存的值,其作用与改变触发器储存的值相当。Verilog HDL语言提供了功能强大的结构语句使设计者能有效地控制是否执行这些赋值语句。...其格式如下: reg [n-1:0] 存储器名[m-1:0];或 reg [n-1:0] 存储器名[m:1]; 在这里,reg[n-1:0]定义了存储器中每一个存储单元的大小,即该存储单元是一个n位的寄存器...基本的算术运算符 在Verilog HDL语言中,算术运算符又称为二进制运算符,共有下面几种: 1) + (加法运算符,或正值运算符,如 rega+regb,+3) 2) - (减法运算符,或负值运算符...注意:在进行算术运算操作时,如果某一个操作数有不确定的值x,则整个结果也为不定值x。 位运算符 Verilog HDL作为一种硬件描述语言,是针对硬件电路而言的。...这是因为在计算拼接信号的位宽的大小时必须知道其中每个信号的位宽。位拼接还可以用重复法来简化表达式。见下例: {4{w}} //这等同于{w,w,w,w} 位拼接还可以用嵌套的方式来表达。

    1.5K10

    RISC-V指令集讲解(3)I-Type 移位指令和U-type指令

    示例: SRAI  x13,x12,3 将x12寄存器中的值算术右移3位,并将结果写入x13中  图4 SRAI机器编码格式 [2] 注意: SRLI,SRAI的OP-IMM和funct3编码皆相同,...举例区分算术右移和逻辑右移 注意区分算术右移和逻辑右移,例如1100_1100(这里以8-bit数进行说明,RV32I中寄存器中实际存储的数为32-bit), 1100_1100算术右移三位,结果为1111...注意U-type中的指令opcode是不相同的。与I-type相同的,U-type对应的immediate,固定为20位,被命名为U-immediate[31:12],如图5所示。...RISC-V选择了非对称立即拆分(常规指令中为12位,再加上20位特殊的上载立即指令,比如LUI),以增加可用于常规指令的操作码空间 [1]。...AUIPC和JALR(后续文章会进行介绍)中的12位立即数的组合可以将控制权转移到任何32位PC相对地址,而AUIPC加上常规加载或存储指令中的12位立即数偏移量可以访问任何32位PC相对的数据地址。

    2.7K40

    操作系统学习笔记-12:内存分配(二):非连续分配

    在上一篇笔记中介绍的是连续分配,包括固定分区分配和动态分区分配。但前者容易产生内部碎片,后者容易产生外部碎片(虽然可以用紧凑技术解决,但是有一定的成本),都不是理想的解决方案。...页面、页框 页框:具体来说,把内存分割为多个固定大小 X 的部分,这些部分就叫做页框/页帧/物理块/内存块,每个页框会有一个数字编号,第一个页框就从 0 开始 页面:同样,进程分割为多个固定大小 X 的部分...当然,由于成本的关系,快表不会做得很大,但对于中小型作业来说也已经足够,只是对于大型作业来说,不太可能把全部页表项都存放到快表中。 某系统使用基本分页存储管理,并采用了具有快表的地址变换机构。...因此对于单个页表项,它至少要用一个 20 位二进制数才能表示这样的一个内存块号,而一个字节 8 位,所以至少要三个字节才可以表示这样的一个内存块号。...假设仍然是用 32 位二进制数表示逻辑地址,此时,地址的前 16 位将表示段号,后 16 位表示段内偏移量: 由于段号是 16 位二进制数,也就是说段号有 2^16^ 种取值,即每个进程最多最多可以被分为

    3.7K100
    领券