当前位置: 首页 > news >正文

《汇编语言》- 读书笔记 - 第2章-寄存器

《汇编语言》- 读书笔记 - 第2章-寄存器

  • 2.0 8086CPU 寄存器
    • 段地址:偏移地址
  • 2.1 通用寄存器
  • 2.2 字在寄存器中的存储
  • 2.3 几条汇编指令
    • 表2.1汇编指令举例
    • 表2.2 程序段中指令的执行情况之一
    • 问题 2.1
    • 表2.3 程序段中指令的执行情况之二
    • 问题 2.2
  • 检测点 2.1
  • 2.4 物理地址
  • 2.5 16位结构的CPU
  • 2.6 8086CPU给出物理地址的方法
  • 2.7 “段地址X16+偏移地址=物理地址”的本质含义
  • 2.8 段的概念
  • 内存单元地址小结
  • 检测点 2.2
  • 2.9 段寄存器
  • 2.10 CS和IP
  • 2.11 修改 CS、IP 的指令
    • 问题 2.3
  • 2.12 代码段
  • 2.9~2.12 小结
  • 检测点 2.3

CPU由运算器控制器寄存器等构成,内部总线连接这些器件,外部总线连接主板上其他器件。
对于汇编程序员来说,寄存器最主要的部件,我们能做的就是通过改变寄存器中的内容控制CPU
不同CPU的寄存器个数和结构不同。8086CPU有14个寄存器,包括:
通用寄存器:AX、BX、CX、DX
段寄存器:CS、SS、DS、ES
偏移指针寄存器:SI、DI、SP、BP、IP
标志寄存器:PSW

2.0 8086CPU 寄存器

寄存器EN全称功能
通用寄存器
AXAccumulator Register累加器,用于算术运算和数据传输。可拆成高8位ah和低8位al分开使用。
BXBase Register基地址寄存器,用于存放内存地址。可拆成高8位bh和低8位bl分开使用。
CXCount Register计数器,用于循环计数或者数据传输。可拆成高8位ch和低8位cl分开使用。
DXData Register数据寄存器,也可以用于 I/O 操作。可拆成高8位dh和低8位dl分开使用。
段寄存器
DSData Segment Register数据段寄存器,存放程序的数据的基地址。
ESExtra Segment Register附加段寄存器,存放一些额外数据的基地址。
SSStack Segment Register堆栈段寄存器,存放堆栈的基地址。
CSCode Segment Register代码段寄存器,存放当前执行指令的代码段的基地址。
偏移指针寄存器
IPInstruction Pointer指令指针,寄存器。
SPStack Pointer栈指针,指向当前堆栈顶部。
BPBase Pointer基址指针,用于访问堆栈中的参数和局部变量
SISource Pointer源变址指针,用于源操作数的偏移地址
DIDestination Pointer目的变址指针,用于目的操作数的偏移地址
标志寄存器
PSWProgram Status Word程序状态寄存器,主要用于反映处理器的状态和ALU运算结果的某些特征及控制指令的执行。

段地址:偏移地址

段地址:偏移地址说明
CS:IP指向下一条指令的物理地址
SS:SP指向当前堆栈顶部的物理地址
DS:BX指向数据的物理地址
DS:SI指向数据的物理地址。例:复制中的源
DS:DI指向数据的物理地址。例:复制中的目标

2.1 通用寄存器

8086CPU 的所有寄存器都是 16 位的,可以存放两个字节。
AX、BX、CX、DX这4个寄存器通常用来存放一般性的数据,被称为通用寄存器。

  • 数据在寄存器中的存储情况

在这里插入图片描述

  • 四个通用寄存器都可以拆分为高低位,分开使用。

在这里插入图片描述

2.2 字在寄存器中的存储

8bit(位)组成一个Byte(字节)。2字节组成一个
所以一个字包含两个字节。共16位。

在这里插入图片描述
我们再看个例子:9527H这个字的数据可以当作整体来用,表示:
9527H = 10010101 00100111 =38183
也可以把高低位拆开分别使用,表示:
高位:95H = 10010101B = 149
低位:27H = 00100111B = 39

进制寄存器值高位低位
169527H9527
21001010100100111B1001010100100111
103818314939

补充:10进制数直接与高低位对应很难理解。需要转为216进制分出高低位再转成10进制。

2.3 几条汇编指令

  1. 汇编指令寄存器名时,不区分大小写。
  2. 下面的两个"问题"主要是介绍了寄存器执行加法后溢出的问题。

表2.1汇编指令举例

汇编指令控制CPU完成的操作用高级语言的语法描述
mov ax,18将18 送入寄存器AXAX=18
mov ah,78将78送入寄存器AHAH-78
add ax,8将寄存器AX中的数值加上8AX=AX+8
mov ax,bx将寄存器BX中的数据送入寄存器AXAX-BX
add ax,bx将AX和BX中的数值相加,结果存在AX中AX=AX+BX

表2.2 程序段中指令的执行情况之一

(原 AX 中的值:0000H,原 BX 中的值:0000H)

程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov ax,4E20H4E20H0000H
add ax,1406H6226H0000H
mov bx,2000H6226H2000H
add ax,bx8226H2000H
mov bx,ax8226H8226H
add ax,bx?(参见问题2.1)8226H

问题 2.1

  • 指令执行后AX中的数据为多少?

8226H + 8226H = 1044CH
AX 只有16位(对应4个16进制数)
所以溢出了,最高位的1丢失。
最后AX中剩下的就只有044CH

表2.3 程序段中指令的执行情况之二

程序段中的指令指令执行后AX中的数据指令执行后BX中的数据
mov ax,001AH001AH0000H
mov bx,0026H001AH0026H
add al,bl0040H0026H
add ah,bl2640H0026H
add bh,al2640H4026H
mov ah,00040H4026H
add al,85H00C5H4026H
add al,93H?(参见问题2.2)4026H

问题 2.2

指令执行后AX中的数据为多少?

C5H + 93H = 158H
AL 只有8位(对应2个16进制数)
所以溢出了,最高位的1丢失。
最后AL中剩下的就只有58H
注意:add al,93H进行的是 8 位运算。单独使用AL时,它作为一个独立的8位寄存器,和AH无关。并不会把溢出的1放到 AH中去。

在进行数据传送或运算时,要注意指令的两个操作对象的位数应当是一致的,例如:

  • 正确的写法
mov ax,bx
mov bx,cx
mov ax,18H
mov al,18H
add ax,bx
add ax,20000
  • 错误的写法
mov ax,bl		 ; 在8位存器和16位存器之间传送数据
mov bh,ax		 ; 在16位寄存器和8位存器之间传送数据
mov al,20000	 ; 8位存器最大可存放值为255的数据
add al,100H		 ; 将一个高于8位的数据加到一个8位存器中

检测点 2.1

《汇编语言》- 读书笔记 - 检测点 2.1

2.4 物理地址

CPU 访问内存单元时,需要使用物理地址。
所有的内存单元构成一个线性空间,每个内存单元在其中有唯一的地址,这就是所谓的物理地址
不同的 CPU 可以采用不同的方式来形成物理地址。对于 8086CPU,在发送物理地址到地址总线之前,它需要先在内部生成物理地址。

2.5 16位结构的CPU

  • 运算器一次最多可以处理 16 位的数据;
  • 寄存器的最大宽度为 16位;
  • 寄存器和运算器之间的通路为 16 位。

8086CPU是16位结构,一次性能够处理传输暂存信息长度最大为16位。(内存单元的地址也是信息)

2.6 8086CPU给出物理地址的方法

8086CPU有20地址总线,达到1MB寻址能力。
也就是说地址总线一次能收发20辆车。
但CPU一单只能打包16车货。
如果CPU来一单,就发车。那地址总线上就要跑4辆空车。
为了不浪费。
CPU决定一次发两单,每单都少装点货,拼到一起刚好20车,至于谁多谁少,程序员可以根据自己调配。
一单是段地址,一单是偏移地址。
CPU中有一个地址加法器,它用来计算最终的物理地址:
物理地址 = 段地址x 16 + 偏移地址
在这里插入图片描述

  • 如图 2.6所示,当8086CPU 要读写内存时:
  1. CPU中的相关部件提供两个16 位的地址,一个称为段地址,另一个称为偏移地址;
  2. 段地址和偏移地址通过内部总线送入一个称为地址加法器的部件;
  3. 地址加法器将两个 16 位地址合成为一个 20 位的物理地址;
  4. 地址加法器通过内部总线将 20 位物理地址送入输入输出控制电路;
  5. 输入输出控制电路将 20 位物理地址送上地址总线;
  6. 20 位物理地址被地址总线传送到存储器。

在这里插入图片描述
在这里插入图片描述

2.7 “段地址X16+偏移地址=物理地址”的本质含义

段地址x16+偏移地址=物理地址的本质含义是:CPU 在访问内存时,用一个基础地址(段地址X16)和一个相对于基础地址的偏移地址相加,得出内存单元的物理地址。
基础地址+偏移地址=物理地址这种寻址模式的一种实现方案。
例1:
在这里插入图片描述
这里如果应用 基础地址+偏移地址=物理地址的寻址模式。2000可视作基址,826可视作偏移地址。

例2:
在这里插入图片描述

2.8 段的概念

内存中没有的概念。是8086CPU使用 基础地址+偏移地址=物理地址方式寻址,来分段管理内存。
在这里插入图片描述

  1. 段地址是x16得来的。段起始地址一定是16的倍数。
  2. 偏移地址有16位,范围0000h~FFFFh。所以一个段最大为64KB
  3. 可以根据需要,将地址连续、起始地址为16的倍数的一组内存单元定义为一个段。

内存单元地址小结

  1. CPU可以用不同的段地址偏移地址组成同一个物理地址,也就是说同一个物理地址可以有很多种组合方式获得。
  2. 数据在21F60H内存单元中。对于8086PC机一般表达为:
    2.1. 数据存在内存2000:1F60单元中;
    2.2. 数据存在内存的2000H段中的1F60H单元中。

检测点 2.2

《汇编语言》- 读书笔记 - 检测点 2.2

2.9 段寄存器

8086CPU 有4 个段存器:CS、DS、SS、ES。用来存放内存单元的段地址。
见:8086CPU 寄存器

2.10 CS和IP

CS:代码段寄存器。存放当前执行指令的代码段的基地址。
IP:指令指针寄存器。保存着将要执行的指令在段中的偏移量。
CS:IP:指向接下来要执行的指令的物理地址。

在8086CPU加电启动或复位后(即CPU刚开始工作时)CS和IP被设置为CS=FFFFH,P=0000H,
即在 8086PC 机刚启动时,CPU 从内存 FFFFOH 单元中读取指令执行,
FFFFOH单元中的指令是8086PC机开机后执行的第一条指令。

8086机中,任意时刻,CPU将 CS:IP 指向的内容当作指令执行。.
执行过的一段信息对应的内存单元必然被 CS:IP 指向过。

图 2.10 展示了 8086CPU 读取、执行指的工作原理(图中只包括了和所要说明的问题密切相关的部件,图中数字都为十六进制)。
在这里插入图片描述
图2.10说明如下。

  1. 8086CPU当前状态:CS 中的内容为 2000HIP 中的内容为 0000H;
  2. 内存20000H~20009H单元存放着可执行的机器码;
  3. 内存20000H~20009H单元中存放的机器码对应的汇编指令如下。
地址内容长度对应汇编指令
20000H~20002HB8 23 013Bytemov ax,0123H
20003H~20005HBB 03 003Bytemov bx, 0003H
20006H~20007H89 D82Bytemov ax,bx
20008H~20009H01 D82Byteadd ax,bx

下面的一组图(图2.11~图 2.19),以图 2.10 描述的情况为初始状态,展示了8086CPU读取、执行一条指令的过程。注意每幅图中发生的变化(下面对 8086CPU 的描述,是在逻辑结构、宏观过程的层面上进行的,目的是使读者对 CPU 工作原理有一个清晰、直观的认识,为汇编语言的学习打下基础。其中隐蔽了 CPU 的物理结构以及具体的工作细节)。

在这里插入图片描述

总结 8086CPU的工作过程可以简要描述如下:

  • 首先:
    CSIP 送入地址加法器,得到CS:IP
    例:CS = 2000h, IP = 0000h
CS:IP =     CS * 16 + IP
CS:IP =  2000h * 16 + 0000h  ;16进制数 *16 等于左移1位。(进位了嘛)
CS:IP = 20000h      + 0000h
CS:IP = 20000h
  • 然后
    1、 从 CS:IP 指向的内存单元读取指令,读取的指令进入指令缓冲器;
    2、 IP=IP+本条指令的长度,从而指向下一条指令;
    3、 执行指令。转到步骤(1),重复这个过程:
  1. 20003H~20005H 获取 mov bx, 0003H 执行, IP=IP+3
  2. 20006H~20007H 获取 mov ax,bx 执行, IP=IP+2
  3. 20008H~20009H 获取 add ax,bx 执行, IP=IP+2

2.11 修改 CS、IP 的指令

在 CPU 中,程序员能够用指令读写的部件只有寄存器,通过改变寄存器中的内容实现对 CPU 的控制。程序员改变CS、IP 就实现了控制 CPU执行目标指令。

mov 不能修改 CSIP 它有专用的指令如:jmp

指令说明
jmp 2AE3:3用给定的地址修改CSIP
执行后:CS=2AE3HIP=0003H
jmp ax用寄存器ax中的值修改IP
执行前:ax=1000HCS=2000HIP=0003H
执行后:ax=1000HCS=2000HIP=1000H

CPU将从修改后的地址读取指令。

问题 2.3

内存中存放的机器码和对应的汇编指令情况如图 2.27 所示,设 CPU 初始状态:CS=2000H,IP=0000H,请写出指令执行序列。思考后看分析。
在这里插入图片描述
分析:

执行步骤内存地址
CS:IP
机器码汇编指令IP指向下一条指令执行后
寄存器变化
12000:0000B8 22 66mov ax, 6622hIP=IP+3AX = 6622h
22000:0003EA 03 00 00 10jmp 1000:3IP=IP+5CS = 1000h
IP = 0003h
31000:0003B8 00 00mov ax, 0000IP=IP+3AX = 0000h
41000:00068B D8mov bx, axIP=IP+2BX = 0000h
51000:0008FF E3jmp bxIP=IP+2IP = 0000h
61000:0000B8 23 01mov ax, 0123hIP=IP+3AX = 0123h
71000:0003转到第3步,循环了

2.12 代码段

在2.8 段的概念中我们知道了什么是段。
那么这段内存中如果存放的是指令,我们认为代是个代码段。
但它本质还只是内存中的一堆01,当CS:IP指向它,CPU就会把它当指令来执行。
例:

mov ax, 0000	(B8 00 00)
add ax, 0123H	(05 23 01)
mov bx, ax		(8B D8)
jmp bx			(FF E3)

这段长度为 10个字节的指令,存放在 123B0H~123B9H 的一组内存单元中。
假如(使用 jmp)将CS:IP设置为123B:0000 (指向了代码段中的第一条指令的首地址)。CPU就会执行它了。

2.9~2.12 小结

  1. 段地址在8086CPU的段寄存器中存放。当8086PU要访问内存时,由段寄存器提供内存单元的段地址。8086CPU有4个段寄存器,其中CS用来存放指令的段地址
  2. CS存放指令的段地址,IP存放指的偏移地址。8086机中,任意时刻,CPU将CS:IP指向的内容当作指令执行
  3. 8086CPU的工作过程:
    1. CS:IP指向的内存单元读取指令,读取的指令进入指令缓冲器
    2. IP指向下一条指令;
    3. 执行指令。(转到步骤1,重复这个过程。)
  4. 8086CPU提供转移指令修改CS、IP的内容。

检测点 2.3

《汇编语言》- 读书笔记 - 检测点 2.3

相关文章:

《汇编语言》- 读书笔记 - 第2章-寄存器

《汇编语言》- 读书笔记 - 第2章-寄存器 2.0 8086CPU 寄存器段地址:偏移地址 2.1 通用寄存器2.2 字在寄存器中的存储2.3 几条汇编指令表2.1汇编指令举例表2.2 程序段中指令的执行情况之一问题 2.1表2.3 程序段中指令的执行情况之二问题 2.2 检测点 2.12.4 物理地址2.5 16位结构…...

English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三

English Learning - L3 综合练习 1 VOA-Color 2023.04.26 周三 主题整体听一遍精听句子 1扩展 way of doing | way to do sth 句子 2扩展 Expression扩展 base 句子 3句子 4扩展 red-hot 句子 5句子 6扩展 fiery 句子 7句子 8句子 9句子 10句子 11扩展 born 句子 12句子 13句子…...

50道web前端工程师面试题及答案解析,你学会了吗

简介:本文包含了50个实用的前端面试题及答案解析,涵盖了HTML、CSS、JavaScript、DOM、Ajax、MVC、模块化、ES6、SPA、Webpack、Babel、Virtual DOM、响应式设计、移动优先设计、响应式图片、CSS 预处理器、后处理器、模块化、布局、盒模型、浮动、定位、…...

【链表OJ题 1】反转链表

目录 题目来源: 代码实现 1、方法一 1.1分析 2、方法二 2.1 分析 题目来源: 力扣 题目描述: 代码实现 1、方法一 struct ListNode* reverseList(struct ListNode* head) {struct ListNode* prev NULL, * cur head;while (cur){st…...

【华为OD机试真题】计算网络信号 (javaC++python)100%通过率 超详细代码注释

计算网络信号 知识点广搜数组 时间限制:1s 空间限制:256MB 限定语言:不限 题目描述: 网络信号经过传递会逐层衰减,且遇到阻隔物无法直接穿透,在此情况下需要计算某个位置的网络信号值,注意:网络信号可以绕过阴隔物array[m][n]的一维数组代表网格地图,array[i][j]=0代表i…...

Tomcat8和Tomcat9乱码问题

今天新开了一个小项目,我丢,乱码了,咋回事,好久没遇到过了,都忘了咋回事。今天必须记录下来,避免继续踩坑 Tomcat 8 不需要进行任何配置即可,它默认的是GBK,而win10 win7 默认的也是…...

Lesson13 IP协议

IP: 提供一种能力,将数据从A主机送到B主机的能力,但不一定会成功 主机 : 配有 IP 地址 , 但是不进行路由控制的设备 ; 路由器: 即配有 IP 地址 , 又能进行路由控制 ; 节点 : 主机和路由器的统称; 协议头格式 如何封装和解包: 定长报头 自描述字段 如何交付(分用) : 8…...

【每日一题Day192】LC1033移动石子直到连续 | 分类讨论 贪心

移动石子直到连续【LC1033】 三枚石子放置在数轴上,位置分别为 a,b,c。 每一回合,你可以从两端之一拿起一枚石子(位置最大或最小),并将其放入两端之间的任一空闲位置。形式上,假设这…...

2023年软件测试常见面试题100%问必背全套教程

随着数字化时代的到来,软件测试越来越受到重视。在未来的几年里,软件测试将继续成为信息技术领域中的热门职业之一。如果你是一名正在寻找或准备进入软件测试行业的人,那么这套常见面试题全套教程对你来说会非常有用。 这套教程旨在帮助你了…...

TypeScript 基本概念

TypeScript 是什么? 目标:能够说出什么是 TypeScript TS 官方文档 TS 中文参考 - 不再维护 TypeScript 简称:TS,是 JavaScript 的超集,JS 有的 TS 都有 TypeScript Type JavaScript(在 JS 基础之上…...

libfacedetection 人脸检测库 检测速度慢的问题

目录 一、libfacedetection 性能介绍 英特尔CPU 使用AVX2指令集 使用AVX512指令集 嵌入式设备 二、加速检测速度 libfacedetetion的前向推理速度很快的原因 使用axv2加速指令 一、libfacedetection 性能介绍 在上一篇文章中,我发现使用摄像头检测,构…...

项目骨架搭建

CSS样式补充 精灵图 CSS精灵图(CSS Sprites)是一种网页优化技术,通过将多个小图像合并成一个大图像,然后通过CSS的背景定位(background-position)属性来显示对应的图像部分。这种技术可以减少HTTP请求次数…...

“火灾不分昼夜,安全在我心中”——五一前厂房消防检查纪实

检查人员: Scott, Jason, Willson, Hanson 检查时间: 2023年4月28日 检查地点: 1厂房、2厂房室内外 检查内容: 一、室内外消火栓: 室内栓外观正常; 室外栓: 栓体防冻防尘套破损、遗失,消防栓缺少防撞保护; 按规定距离厂房外墙不宜小于5…...

UNIX环境高级编程——进程关系

9.1 引言 本章详细说明进程组以及会话的概念,还将介绍登录shell(登录时所调用的)和所有从登录shell启动的进程之间的关系。 9.2 终端登录 9.3 网络登录 9.4 进程组 每个进程除了有一进程ID之外,还属于一个进程组,进…...

C# ref和out用法和区别

首先:两者都是按地址传递的,使用后都将改变原来参数的数值。 其次:ref可以把参数的数值传递进函数,但是out是要把参数清空,就是说你无法把一个数值从out传递进去的,out进去后,参数的数值为空&am…...

信息复制的革命:印刷术【提高信噪比】

文章目录 引言I 保证信息不被噪音所影响1.1 校对抄写错误的方法1.2 印刷术II 雕版印刷和活字印刷2.1 雕版印刷术2.2 毕昇的胶泥活字印刷2.3 古腾堡的铅活字印刷引言 科学的诞生,丰富了信息产生的源头。文字和纸张,加速了信息的传播和文明的进步。I 保证信息不被噪音所影响 复…...

【MySQL】事务

事务是一组操作的集合,我们将一组操作视为一个整体,所以事务里面的操作的时候要么同时成功,要么同时失败,之所以会有事务也是因为我们在实际生活中会用到 最典型的例子就是转账操作:A向B进行转账,A这边扣款成功的同时B那边一定是收款成功的,如果没有事务的话就会出现A扣款成功但…...

学习HCIP的day.03

目录 OSPF:开放式最短路径优先协议 OSPF的数据包 -- 5种 OSPF的状态机 OSPF的工作过程 OSPF的基础配置 关于OSPF协议从邻居建立成为邻接的条件 OSPF的接口网络类型 OSPF:开放式最短路径优先协议 无类别链路状态型IGP协议;由于其基于拓…...

Maven项目的配置

Maven是什么?它的作用是什么? Maven是一种开源的构建工具,它可以自动化构建、测试、部署和管理Java项目。它提供了一个中心化的构建过程,包括依赖管理、项目结构管理、插件管理等,使得开发人员更方便地维护和协作应用…...

Spring Boot使用(基础)

目录 1.Spring Boot是什么? 2.Spring Boot使用 2.1Spring目录介绍 2.2SpringBoot的使用 1.Spring Boot是什么? Spring Boot就是Spring脚手架,就是为了简化Spring开发而诞生的 Spring Boot的优点: 1.快速集成框架,提供了秒级继承各种框架,提供了启动添加依赖的功能 2.内…...

6WINDGate-overview

6WINDGate Overview Author:Once Day Date:2023年4月29日 本文是对6WIND官网文档的整理和翻译,仅供学习和研究之用,原始文章可参考下面文档: 6WINDGate Documentation - 6WIND6WINDGate Modules — 6WINDGate Modul…...

Java8新特性-流式操作

在Java8中提供了新特性—流式操作,通过流式操作可以帮助我们对数据更快速的进行一些过滤、排序、去重、最大、最小等等操作并且内置了并行流将流划分成多个线程进行并行执行,提供更高效、快速的执行能力。接下来我们一起看看Java8为我们新增了哪些便捷呢…...

Nautilus Chain Layer 3 圆桌会议圆满举办,超4.8K用户观看

在 4 月 21 日,Nautilus Chain 举办了以 “Layer 3 区块链的意义和发展以及Crypto的演变”为主题的线上圆桌会议,我们邀请了众多行业嘉宾包括 GitcoinDAO社区管理者Bob jiang、Whalers Community 发起者崔棉大师、Chatpuppy 联合创始人 古千峰、Whalers …...

本地elasticsearch中文分词器 ik分词器安装及使用

ElasticSearch 内置了分词器,如标准分词器、简单分词器、空白词器等。但这些分词器对我们最常使用的中文并不友好,不能按我们的语言习惯进行分词。 ik分词器就是一个标准的中文分词器。它可以根据定义的字典对域进行分词,并且支持用户配置自…...

Java 中的异常处理机制是什么?如何使用它来处理程序中的异常?(七)

Java 中的异常处理机制是一种重要的编程技术,它能够帮助程序员更好地管理程序中出现的异常情况。本文将详细介绍 Java 中的异常处理机制,并提供示例来说明如何使用异常处理机制来捕获和处理程序中的异常。 什么是异常? 在程序运行过程中&am…...

基于UDQ的并网单相逆变器控制【同步参考系下单相并网全桥正弦PWM逆变器闭环控制】(Simulink)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…...

JAVA开发——常用的注解

目录 spring spring MVC Spring Boot AOP MyBatis MyBatis-Plus JavaWeb开发 spring Autowired:自动安装,通过类匹配自动注册相应的Bean。 Component:将一个通用的 Java 类标记为 Bean,由 Spring 容器管理。 Controller&…...

【Java笔试强训 24】

🎉🎉🎉点进来你就是我的人了博主主页:🙈🙈🙈戳一戳,欢迎大佬指点! 欢迎志同道合的朋友一起加油喔🤺🤺🤺 目录 一、选择题 二、编程题 🔥年终奖 …...

SpringCloud详解

SpringCloud是一个基于SpringBoot的分布式系统开发框架,它能够帮助我们快速、稳定地构建分布式系统。本篇博客将对SpringCloud进行详细解析,介绍SpringCloud的主要组件和相关应用场景,同时提供代码示例以帮助读者更好地掌握SpringCloud的实际…...

如何保障网络安全

网络安全是一个涵盖范围广、深入浅出的话题。随着互联网在现代社会中扮演的重要角色日益突出,网络安全问题成为各个领域所关注的焦点。在此,我们将从以下几个方面来阐述网络安全的重要性,并讨论几种保障网络安全的方式。 一、网络安全的重要性…...

大学生做家教比较好的网站/最全bt搜索引擎入口

一、定义 桥接模式(Bridge Pattern),将抽象部分与它的实现部分分离,使的抽象和实现都可以独立地变化。 主要解决:在多维可能会变化的情况下,用继承会造成类爆炸问题,扩展起来不灵活。 何时使用&…...

好享管家安卓下载/广州seo代理

欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 微信公众号:慕容千语的架构笔记。欢迎关注一起进步。 Spring Cloud微服务架构介绍 Spring Cloud的目标是为Spring开发人员提…...

常州做网站/预测2025年网络营销的发展

本文章著作权归Pushy所有,如需转载请联系作者,并注明出处:pushy.site 1. Protobuf 1.1 介绍 Google Protocol Buffer( 简称 Protobuf) 是 Google公司研发的一种灵活高效的可序列化的数据协议。什么是序列化呢? 序列化(Serializati…...

网站改版Excel怎么做/宁波seo排名优化哪家好

Android手机的USB转串口开发Android手机的USB接口在各个领域都得到了广泛的应用和推广。笔者前几天接手一个项目,主要就是解决工业现场数据采集的问题,该项目是由深圳宏进科技委托笔者开发的。现场的总线是RS485和RS232总线,需要用电脑和手机…...

最安全的网站语言/活动策划方案

ZooKeeper CAP定理: 一个分布式系统不可能同时满足以下三种,一致性(C:Consistency),可用性(A:Available),分区容错性(P:Partition Tolerance).在此ZooKeeper保证的是CP,ZooKeeper不…...

网站建设淄博/如何免费创建自己的网站平台

AQS即队列同步器AbstractQueuedSynchronizer(以下简称同步器),是用来构建锁或者其他同步组件的基础框架。 AQS使用了一个int成员变量表示同步状态。 AQS通过内置的FIFO双向队列来完成获取锁线程的排队工作 同步器包含两个节点类型的应用&…...