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

40 行 Python 代码,写一个 CPU!

上图中有指令 RAM 和数据 RAM,两个 RAM 就是哈佛结构的重要标志。 “常见的两种 CPU 结构为哈佛和冯诺依曼结构。哈佛结构是将程序指令和数据存储在同一块 RAM 中的 CPU 设计方案。...数据寄存器中的数据分别走向加法器 adder 来进行加法、减法运算后流向 21选择器,也可能直接流向 21选择器等待选择。21选择器选择后,数据进入累加寄存器 AC 。...比如这里的两个 1 代表高电平,分别连接数据寄存器 DR 和累加寄存器 AC 的使能端 w。这样当我们读到 0x18 时,我们知道 CPU 会把当前数据通路上的数据写入数据寄存器和累加寄存器。...对加法器的操作,是自动的,它的一个输入是 AC 累加器存器,另一个输入是 DR 数据寄存器,同时受到 sub 减法控制信号的控制。...zf 作为零标志位寄存器,如果 AC 累加器存起结果为零的话,则 zf 为 1。此时如果 pre 为 1 的话,那么就可以将 pc 设置为 DR 数据寄存器的值,实现了运算结果为零跳转功能。

68210

汇编语言指令大全(详细)「建议收藏」

( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加。( 结果在第一个操作数里 ) XLAT 字节查表转换。...SUB 减法。 SBB 带借位减法。 DEC 减 1。 NEC 求反(以 0 减之)。 CMP 比较。(两操作数作减法,仅修改标志位,不回送结果)。 AAS 减法的ASCII码调整。...DAS 减法的十进制调整。 MUL 无符号乘法。 IMUL 整数乘法。 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整。 DIV 无符号除法。...SUB 减法. SBB 带借位减法. DEC 减 1. NEC 求反(以 0 减之). CMP 比较.(两操作数作减法,仅修改标志位,不回送结果). AAS 减法的ASCII码调整....DAS 减法的十进制调整. MUL 无符号乘法. IMUL 整数乘法. 以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算), AAM 乘法的ASCII码调整.

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

    汇编知识扫盲之常见汇编指令

    IN   I/O端口输入. ( 语法: IN 累加器, {端口号│DX} )     OUT  I/O端口输出. ( 语法: OUT {端口号│DX},累加器 )      输入输出端口由立即方式指定时...SUB  减法.     SBB  带借位减法.     DEC  减 1.     NEC  求反(以 0 减之).     NEG 求补     CMP  比较....(两操作数作减法,仅修改标志位,不回送结果).     AAS  减法的ASCII码调整.     DAS  减法的十进制调整.     MUL  无符号乘法.     ...D标志 0表示重复操作中SI和DI应自动增量; 1表示应自动减量.       Z标志 用来控制扫描或比较操作的结束.     MOVS  串传送.       ( MOVSB 传送字符.  ...以上四条,测试带符号整数运算的结果(标志S,O和Z).     JE/JZ 等于转移.     JNE/JNZ 不等于时转移.     JC   有进位时转移.

    1.7K20

    未整理的计组复习笔记?

    AX)、零操作数指令(x86支持,常用,空指令操作、停机指令等,或是有操作数的堆栈指令,对固定的操作数如堆顶、标志R、累加R) 缩短指令的长度:4➡️3,增加pc寄存器。...也可以使用多种内存寻址,缩短内存od位数 操作数:一般有立即数10,200、寄存器R:AX,BX(使用二进制编号)、内存单元:需要地址、固定位置:标志R、累加R、栈顶 补充:机器字长,操作字长度,寄存器宽度...位R:AX(累加器),BX(基址R),CX(移位或循环次数,计数R),DX(数据R,可以和AX(L)合起来作为32位存储器) 8个8位R:AH(高字节,高8位),AL(低字节),BH,BL,CH,CL...立即数 PUSH、POP:只能是宽度16位的R或内存单元 (用的不多)XLAT:查表,BX指向表格首地址,AL决定第n项 标志寄存器操作LAHF,将标志R低八位传送到AH;SAHF相反 地址传送指令...减法SUB DST,SRC; DST-SRC➡️DST SBB带借位减法,用于扩展减法 DEC DST;和INC相反 NEG求负数(求补) 比较指令 CMP DST,SRC; DST-SRC

    1.2K20

    16位汇编指令_汇编语言指令表

    :通用寄存器,标志寄存器,指令寄存器 EAX,累加 ECX,循环计数 EDX,数据寄存器 EBX,基址寄存器 ESP,栈顶 EBP,栈底 ESI,扩展源指针 EDI,扩展目的指针 EIP,指令指针 SI...IN   I/O端口输入. ( 语法: IN 累加器, )     OUT   I/O端口输出. ( 语法: OUT ,累加器 )     输入输出端口由立即方式指定时, 其范围是 0-255; 由寄存器...SUB  减法.     SBB  带借位减法.     DEC  减 1.     NEC  求反(以 0 减之).     CMP  比较....(两操作数作减法,仅修改标志位,不回送结果).     AAS  减法的ASCII码调整.     DAS  减法的十进制调整.     MUL  无符号乘法.     ...D标志  0表示重复操作中SI和DI应自动增量; 1表示应自动减量.     Z标志 用来控制扫描或比较操作的结束.     MOVS  串传送.     ( MOVSB 传送字符.

    1K30

    iOS逆向工程之Hopper中的ARM指令

    首先我们执行的是将两个数的最低位相加并设置C标志位(ADDS R8, R0, R4),然后在进行下一位的操作,对R1和R5中的值进行相加,在相加后再加上上次操作的进位,然后再设置标志位,以此类推。...因为当两个数值在进行减法操作时,如果需要借位时就会把C标志位进行清零操作,所以在进行SBC操作时需要将C标志位进行取反操作。下面我们一128位数值相减为例。...C 带借位的反向减法,上面这两个命令与SUB和SBC命令差不多,都是进行减法操作的,不过操作数的计算顺序不同。...有一点需要注意的是CMN与CMP是算术指令,TEQ和TST属于逻辑指令。比较指令在执行后总是会设置标志位(N、Z、C、V), 因为条件后缀是根据被设置的标志位来判断比较结果是否满足条件的。...CMN与CMP进行的是算术减法操作,所以会影响C -- Carry标志。

    1.4K70

    ARM汇编语言指令集汇总

    DIV 除 ADC 带进位的加法指令 SBC 带借位减法指令 AND 逻辑“与” ASR 算术右移 RSB 反向减法 SBC 带进位减法 RSC 带进位反向减法(仅 ARM) SDIV 有符号除法 UDIV...#0 R0寄存器中的值和0比较 CMN 负数比较指令 CMN R1,R0 将寄存器R1的值与寄存器R0的值相加,并根据结果设置CPSR的标志位 CMN R1,#100 将寄存器R1的值与立即数100相加...,并根据结果设置CPSR的标志位 CBZ 比较,为零则跳转 CBNZ 比较,为非零则跳转 组合和分离指令 指令 简介 BFC 和 BFI 位域清零和位域插入 SBFX 和 UBFX 有符号或无符号位域提取...SXT、SXTA、UXT 和 UXTA 符号扩展或零扩展指令,可选择进行加法运算 PKHBT 和 PKHTB 半字组合指令 并行指令 指令 简介 USAD8 差值的绝对值无符号求和 USADA8 差值的绝对值无符号求和再累加...R0, #0x8 测试bit_3是否为0 TEQ 位测试指令 TEQ R1,R2 将寄存器R1的值与寄存器R2的值按位异或,并根据结果设置CPSR的标志位 ThumbEE指令 指令 简介 ENTERX

    1.4K20

    ARM汇编:数据处理指令集:MOV、ADD、ADDS、ADC、SUB、SUBS、SBC、RSB、MUL、AND、ORR、EOR、BIC、CMP、TST、TEQ、LSL、LSR、ASR、RORV

    #1 add r2, r1, r0  ;r2 = r1 + r0 add r2, r1, #2  ;r2 = r1 + 2 数据操作对CPSR的影响 ;默认情况下,数据处理指令不影响条件码标志位,...但可以选择通过添加“S”来影响标志位。...= r1 + r3 + 'C'  'C'位 CPSR 进位标志 减法指令 SUB ;减法指令执行时,没有借位时 CPSR 'C' 位置 1 mov r0, #5 mov r1, #3 sub r2, r0...5 - r0 乘法指令 MUL ;为了提高效率,任何乘法指令不可以使用立即数 mov r0, #3 mov r1, #5 mov r2, r0, r1  ;r2 = r0 * r1 乘——累加指令 MLA...orr r0,r0,#0xd3 0xd3=1101 0111 将r0与0xd3作算数或运算,然后将结果返还给r0,即把r0的bit[7:6]和bit[4]和bit[2:0]置为1。

    3.3K20

    ②CPU - 运算器、控制器 【软考-软件设计师考点】

    AC通常简称为累加器,它是一个通用寄存器,其功能是当运算 器的算术逻辑单元执行算术或逻辑运算时,为ALU提供一个工作区。...例如,在执行一个减法运算前,先将被减数取出暂存在AC中,再从内存储器中取出减数,然后同AC的内容相减,将所得的结果送回AC中。运算的结果是放在累加器中的,运算器中至少要有一个累加寄存器。...DR的主要作用为:作为CPU和内存、外部设备之间数据传送的中转站;作为CPU和内存、外围设备之间在操作速度上的缓冲:在单累加器结构的运算器中,数据缓冲寄存器还可兼作为操作数寄存器。...PSW保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容,主要分为状态标志和控制标志,例如运算结果进位标志©、运算结果 溢出标志(V)、运算结果为0标志(Z)、运算结果为负标志(N)、中断标志...(I)、方向标志(D)和单步标志等。

    38130

    基于FPGA的CRC校验码生成器设计

    0 1 0 1 3)乘法运算 0×0=0 0×1=0 1×0=0 1×1=1 多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果时采用带进位的加法...后者按带借位的二进制减法,根据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义的。...,还取决于输入信号,相当于Mealy型状态机,如下图: ?...仿真结果如下:得到的是数据0xaa和0xf0的CRC校验码,为验证结果的正确性,可以按照模2法则手工计算一下。 ?...八、其他例子 同样给出一个4 bit信息位,5 bitCRC码的(9,4)码的程序和仿真结果,程序的流程与上述流程完全一样: ? ? ?

    1.5K20

    8051的特殊功能寄存器

    F0:是用户标志位,留给我们用的 RS1和RS0是工作寄存器组选择位,由RS1和RS0控制选择哪一组工作寄存器工作。 ?...OV:溢出标志位,在加减法运算的过程中,当第6位或者第7位其中的某一位有进位的时候,OV置1. 即第6位进位和第7位进位的异或(D6⊕D7)。...和F0位差不多 P:奇偶校验位,8051进行的是偶校验。即当累加器ACC的内容中1的个数是奇数个,那么P就被置1,否则清零。 寄存器B:在乘除法运算中与累加器A配合使用。...MUL AB把累加器A和寄存器B中的8位无符号数相乘,结果的高8位存在寄存器B中,低8位存在累加器A中。DIV AB用B除以A,把商存在A中,余数存在B中。...RB8:在模式2和3下,为接收到的第9位数据。 TI:发送中断标志位(中断源),硬件置位,软件清零。 RI:接受中断标志位(中断源),硬件置位,软件清零。

    1.5K30

    DeepMind重磅:神经算术逻辑单元,Keras实现

    触发外推失败的输入分布变化是否具有实际意义,取决于训练过的模型将在何处运行。...第一个模型是神经累加器(Neural Accumulator,NAC),它是线性层的一种特殊情况,其变换矩阵W仅由-1,0和1组成;也就是说,它的输出是输入向量中行的加法或减法。...图2:神经累加器(NAC)是其输入的线性变换。 变换矩阵是tanh(W)和σ(M)的元素乘积。...图2描述了这样一个单元:神经算术逻辑单元(NALU),它学习两个子单元之间的加权和,一个能够执行加法和减法,另一个能够执行乘法,除法和幂函数,如 ? 。...第一个NAC(较小的紫色子单元)计算累加向量a,存储NALU的加法/减法运算的结果; 它与原始NAC的计算方式相同(即a = Wx)。

    1.1K20

    【愚公系列】软考中级-软件设计师 002-计算机系统知识(CPU)

    ALU是一个特殊的电子电路,它包含了多个逻辑门和寄存器,可以执行诸如加法、减法、乘法、逻辑与、逻辑或、逻辑非等各种算术和逻辑操作。...1.2 累加器寄存器累加器寄存器(accumulator register)是计算机中的一种特殊寄存器,用于存储和操作算术和逻辑运算的结果。...累加器通常是一个较小的存储单元,被设计成在算术和逻辑运算中频繁使用。它可以存储一个数值,并且可以对这个数值进行加法、减法和逻辑运算。...这些标志位的值可被后续的指令所读取和修改,在程序执行过程中起到控制和判断的作用。状态条件寄存器的具体结构和位数可能与计算机体系结构有关,不同的计算机体系结构可能有不同的标志位定义和使用方法。...在ARM架构的计算机系统中,通用寄存器集合包括16个32位寄存器,分别命名为R0到R15。其中R13通常用作堆栈指针(SP),R14通常用作链接寄存器(LR),R15通常用作程序计数器(PC)。

    30011

    基于FPGA 的CRC校验码生成器

    0 1 0 1 3)乘法运算 0×0=0 0×1=0 1×0=0 1×1=1 多位二进制模2乘法类似于普通意义上的多位二进制乘法,不同之处在于后者累加中间结果时采用带进位的加法...后者按带借位的二进制减法,根 据余数减除数够减与否确定商1还是商0,若够减则商1,否则商0。多位模2除法采用模2减法,不带借位的二进制减法,因此考虑余数够减除数与否是没有意义 的。...,还取决于输入信号,相当于Mealy型状态机,如下图: ?...仿真结果如下:得到的是数据0xaa和0xf0的CRC校验码,为验证结果的正确性,您可以按照模2法则手工计算一下^.^ ?...8.同样给出一个4 bit信息位,5 bitCRC码的(9,4)码的程序和仿真结果,程序的流程与上述流程完全一样: ? ? ?

    1.4K20

    16位汇编第五讲各种指令详解第一讲

    inter手册 补充知识,理解reg momem imm accum segreg英文什么意思 英文名称 含义 Reg 寄存器的意思 Mod 寻址方式是哪一种 Mem 内存 Imm 立即数 Accum 累加寄存器...ax压栈 pop ax  出栈的值放到ax中 push的指令       push r16/m16/seg  (可以是16位寄存器,2个字节的内存,或者段寄存器) pop 一样 标志寄存器传送指令      ...,因为这个CPU寻址的时候指令执行周期短,如果 写成 mov ah,0那么带有立即数所以比较慢,玩汇编就是要这样玩的) SAHF 清零标志位 PUSHF 和POPF都是一样的,只不过有入栈出栈的操作,所以指令周期更长...SBB指令按照定义相应设置状态标志 SBB指令主要与SUB配合,实现多精度减法运算 同加法一样,只不过是借位 双字减法例子 mov ax,4652h   ;ax=4652h sub ax,0f0f0h   ..., 而是写成  SUB 0,1 用0减去操作数1,然后结果返回操作数 求补运算也可以表达成,将操作数按位取反后加1 NEG指令对标志的影响与用零作减法的SUB指令一样 跳转指令 JMP 预习  inter

    1.1K50

    嵌入式:堆栈寻址、相对寻址与ARM指令总结

    根据堆栈的生成方式,又可以分为递增堆栈(Ascending Stack)和递减堆栈(Decending Stack),当堆栈由低地址向高地址生成时,称为递增堆栈,当堆栈由高地址向低地址生成时,称为递减堆栈...以下程序段完成子程序的调用和返回,跳转指令BL采用了相对寻址方式: BL NEXT ;跳转到子程序 ; NEXT处执行 …… NEXT ……...ARM 指令及功能描述 数据处理指令(22条) 助记符 指令功能描述 ADC 带进位加法指令 ADD 加法指令 SUB 减法指令 SBC 带借位减法指令 RSB 逆向减法指令 RSC 带借位的逆向减法指令...CMP 比较指令 CMN 负数比较指令 MUL 32 位乘法指令 MLA 乘加运算指令 UMLL 无符号数长乘 助记符 指令功能描述 UMLAL 无符号数长乘累加 SMULL 有符号数长乘 SMLAL...有符号数长乘累加 AND 逻辑与指令 ORR 逻辑或指令 EOR 异或指令 BIC 位清零指令 TST 位测试指令 TEQ 相等测试指令 MOV 数据传送指令 MVN 数据取反传送指令 Load/Store

    1K50

    【计组不挂科】计算机组成第二章< 数据的表示&运算方法&运算部件 >习题库(选择题&判断题&填空题)(含答案与解析)

    将加数的阶码调整到与被加数的阶码相同 答案:A 27.若用双符号位,则发生正溢的特征是:双符号位为( ) A.00 B.01 C.10 D.11 答案:B 负溢出:10 28.浮点数运算的溢出判断,取决于...对 5.一个正数的补码和这个数的原码表示一样,而正数的反码就不是该数的原码表示,而是原码各位数取反。 x 6.浮点数的正负取决于阶符。...9.某R进位计数制,其右边一位的权是其相邻的左边一位的权的R倍。 x 正确的说法应该是:某R进位计数制,其左边一位的权是其相邻的右边一位的权的R倍。...对 13.标志寄存器中,符号标志位SF的值为0是,表明运算结果为负。 x 符号标志位SF的值为0时,表明运算结果为正数;而当SF的值为1时,才表明运算结果为负数。...正数 负 20. ()的规则是包括符号位在内的每一位取反,末位加1 求补 21.补码定点加减法运算判断溢出的方法常用的有()判溢方法、()判溢方法和()判溢方法。

    14410

    2.2寄存器

    2.2寄存器 | 通用寄存器 数据寄存器 AX 累加器 AH AL BX 基数寄存器 BH BL CX 计数寄存器 CH CL DH 数据寄存器 DH DL 变址寄存器 SI 源变址寄存器...1)数据寄存器 AX一AH(高字节)、AL(低字节)—累加器 BX—BH、BL—基数寄存器 CX—CH、CL—计数寄存器 DX—DH、DL—数据寄存器 其中AX、BX、CX、DX为16位,AH...下一条指令的物理地址=CSx16+IP 5)标志寄存器★ ①状态标志(是计算机在计算的时候自动产生的) 进位标志CF:最高位产生进位/借位,CF=1(通常出现在加减法的运算中) 奇偶标志PF:运算结果低...8位中“1”的个数为偶数,则PF=1(用来检验计算有没有错误) 铺助进位标志AF:低4位向高4位有进位,则AF=1 零标志ZF:运算结果为0,则ZF=1 符号标志SF:最高位为1,表示结果为负数,...则SF=1 溢出标志OF:运算过程中发生“溢出”,则OF=1 ②控制标志(是我们可以通过程序来控制的) λ中断允许标志IF IF=1,则CPU可以接受可屏蔽中断请求 IF=0,则CPU不可以接受屏蔽中断请求

    12910
    领券