首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

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

28920

软考 | 计算机系统

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

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

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

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

73530

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

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

63130

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

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

74650

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.3K30

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

和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为操作数寄存器

1K40

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.2K20

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

加(减)法运算时,若最高位进(借)则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) 静态存储器

3.1K75

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

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

75420

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

,对它们特定要求,且具有特殊功能 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加法指令:把源操作数值加到目的操作数...指令执行不影响任何标志

74310

IEEE 754标准--维基百科

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

1.5K30

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

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

7.4K21

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

示例: SRAI  x13,x12,3 将x12寄存器算术右移3,并将结果写入x13中  图4 SRAI机器编码格式 [2] 注意: SRLI,SRAIOP-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立即数组合可以将控制权转移到任何32PC相对地址,而AUIPC加上常规加载或存储指令中12立即数偏移量可以访问任何32PC相对数据地址。

1.8K40

一周掌握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} 拼接还可以用嵌套方式来表达。

98510

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

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

3K100

爱了爱了,这篇寄存器有点意思

在 8086 架构中,所有的内部寄存器、内部以及外部总线都是 16 ,可以存储两个字节,因为是完全 16 微处理器。...8086 CPU 可以一次存储两种类型数据 字节(byte):一个字节由 8 bit 组成,这是一种恒定不变存储方式 字(word):字是由指令集或处理器硬件作为单元处理固定大小数据,对于 intel...索引寄存器 索引寄存器主要包含段地址偏移量,索引寄存器主要分为 BP(Base Pointer):基础指针,它是栈寄存器偏移量,用来定位栈上变量 SP(Stack Pointer): 栈指针,它是栈寄存器偏移量...1 - 开启,0 - 关闭 进位 (Carry) : 设置最后一个无符号算术运算是否带有进位 溢出 (Overflow) : 设置最后一个符号运算是否溢出 符号 (Sign) : 如果最后一次算术运算为负...❞ 寄存器最大宽度为 16 ❝这个寄存器最大宽度值就是通用寄存器能处理二进制最大位数 ❞ 寄存器和运算器之间通路为 16 ❝这个指的是寄存器和运算器之间总线,一次能传输 16 数据

4.5K31

CPU 执行程序秘密,藏在了这 15 张图里

CPU 内部还有一些组件,常见寄存器、控制单元和逻辑运算单元等。其中,控制单元负责控制 CPU 工作,逻辑运算单元负责计算,而寄存器可以分为多种类,每种寄存器功能又不尽相同。...CPU 中寄存器主要作用是存储计算时数据,你可能好奇为什么了内存还需要寄存器?...这个自增大小,由 CPU 决定,比如 32 CPU,指令是 4 个字节,需要 4 个内存地址存放,因此「程序计数器」值会自增 4; 简单总结一下就是,一个程序执行时候,CPU 会根据程序计数器里内存地址...不同 CPU 不同指令集,也就是对应着不同汇编语言和不同机器码,接下来选用最简单 MIPS 指集,来看看机器码是如何生成,这样也能明白二进制机器码具体含义。...一起具体看看这三种类型含义: R 指令,用在算术和逻辑操作,里面由读取和写入数据寄存器地址。

1.6K42

第二章 计算概述

2.2.3 存储器   系统存储器就是用于存储数据一长排存储箱。存储箱中每个单元都有一个唯一数字地址。所有单元大小相同,在现代计算机中,通常是一个由八8个构成字节。...2.2.3 寄存器   所有的CPU都拥有一定数量被称作寄存器存储单元。寄存器读写速度非常快——比其他任何类型存储器访问速度都快。...冯·诺依曼计算机组成   原始树莓派内部ARM11处理器拥有16个可用于通用程序设计寄存器,其中3个具有特殊功能。还有两个寄存器作为状态寄存器使用。   ...指令集中机器指令按功能分组:(从/向存储器中以及寄存器之间)数据转移类指令;算术运算类指令;逻辑操作类指令;(读状态或控制操作类指令等。...对于二进制,常常在数后面加一个字母b或B。例如:011010B 对于二进制常常使用前缀0b。例如:0b011010。 有时也能见到在二进制数前添加前缀%,例如:%011010。

36720
领券