第八十天学习记录:计算机硬件技术基础:80486微处理器的指令系统

news2024/11/27 18:00:28

80486微处理器的寻址方式

要使微处理器能够完成指令规定的操作,则指令中须包含2种信息,一是执行什么操作;二是该操作所涉及的数据在哪里;三是结果存于何处,故指令通常操作由操作码字段和操作数字组成,其书写格式如下:
标号:操作码助记符 操作数助记符;注释

寻找操作数所在地址的方式即为寻址方式。80486的寻址方式可分为两类:操作数的寻址方式和转移地址的寻址方式。

操作数寻址方式

由于操作数作为指令的操作对象,可以存储在存储器中(称为存储器操作数)、存储在寄存器中(称为寄存器操作数)或直接包含在指令中(称为立即数),因此,与之对应有多种寻址方式。80486粗略地划分可有3类10种寻址方式,其中访问存储器操作数有8种寻址方式。
1、立即寻址 操作数直接存放在指令中的寻址方式即为立即寻址方式
例如:MOV AX ,1234H
如下图所示,这条指令的机器码为:B8H,34H,12H,占3个字节。它的含义是将立即数1234H送到寄存器AX中。机器码在内存单元中是由上至下按从低到高的地址顺序排列的,这也是一般CPU取指令的顺序。操作码部分在前,操作数部分在后。其中16位立即数的低字节在前,高字节在后。
在这里插入图片描述
汇编语音规定:立即数必须以数字开头,以字母开头的十六进制数前面必须以数字0做前缀;数制用后缀表示:B表示二进制数,H表示十六进制数,D或者缺省表示十进制数,Q表示八进制数。

2、寄存器寻址:在这种寻址方式下,操作数存放在CPU的某个8位、16位或32位的通用寄存器中。
例如:MOV AH,CL;将CL的内容送AH。

3、存储器操作数的寻址方式 当操作数存放在某内存单元中时,用该类寻址方式。在该类寻址方式中,指令中出现的是操作数所在内存单元的地址表达式,完整的地址表达式如下:
段寄存器:[基址寄存器+变址寄存器X比例因子+位移量]
冒号之前的部分称为段超越前缀,它通知CPU指令要访问的是哪一个逻辑段,冒号之后的部分为有效地址表达式。
在这里插入图片描述
根据指令中出现的操作数所在内存单元的地址表达式的不同,该类寻址方式共有8种,下面将详细介绍这8种存储器寻址方式。
1、直接寻址
直接寻址是指操作数所在内存单元的EA直接出现在指令中。EA可以是8位,16位或32位。例如:
MOV AX,DS:[1000H];将DS数据段中有效地址为1000H字单元中的内容送给AX。
若(DS)=2000H,则物理地址=20000H+1000H=21000H,执行情况如下图所示。执行结果为(AX)=1234H。应注意的是,指令中的DS不能省略。又如:
MOV CX,DS:COUNT;将DS数据段中以COUNT为有效地址的字单元中的内容;送给CX或MOVCX,COUNT。

在这里插入图片描述
2、寄存器间接寻址
这种寻址方式下,操作数所在内存单元的EA由规定的寄存器指出。在该寻址方式中,80486微处理器规定:
·16位寻址时,EA可以由SI,DI,BP或BX提供。
若以SI,DI,BX间接寻址,则默认操作数在DS段中。
MOV AX,[SI]
设(DS)=4200H,(SI)=5000H,则物理地址=42000H+5000H=47000H,执行情况如下图所示。执行结果:(AX)=3525H
若以BP间接寻址,则默认操作数在SS段中。
MOV CH,[BP]
设(SS)=3000H,(DS)=3500H,(BP)=1340H,则该指令执行后,将31340H单元的内容送给CH。
在这里插入图片描述
·32位寻址时,8个32位通用寄存器均可作间址寄存器。除ESP,EBP默认段寄存器为SS外,其余6个通用寄存器均默认段寄存器为DS。例如:
MOV EDX,[EBX]

(3)寄存器相对寻址方式 在这种方式中,操作数所在内存单元的有效地址为规定的基址寄存器或变址寄存器的内容与一个常量(即位移量)之和。在指令格式中,地址表达式写成:
段寄存器:[基址寄存器/变址寄存器+位移量]
或 段寄存器:位移量[基址寄存器/变址寄存器]
如果是访问约定的逻辑段,则段前缀可以省略。80486微处理器规定:
·16位寻址时,BX和BP作为基址寄存器,BX默认DS为段寄存器,BP默认SS为段寄存器;SI和DI作为变址寄存器。位移量可以为8位或16位。
·32位寻址时,8个32位通用寄存器均可作基址/变址寄存器,其中ESP、EBP以SS为默认段寄存器,其余6个通用寄存器均以DS为默认段寄存器。位移量可以为8位或32位。例如:
MOV EBX,[EDX+24]

(4)基址寻址方式
操作数的有效地址是一个基址寄存器和一个变址寄存器的内容之和。在指令格式中,地址表达式写成:
段寄存器:[基址寄存器+变址寄存器]

(5)相对基址变址寻址方式
该方式中,操作数所在的内存单元的有效地址是一个基址寄存器与一个变址寄存器的内容和一个常量(即位移量)之和。在指令格式中,完整的地址表达式为:
段寄存器:[基址寄存器+变址寄存器+位移量]
或 段寄存器:位移量[基址寄存器+变址寄存器]
或 段寄存器:位移量[基址寄存器][变址寄存器]

(6)比例变址寻址方式
操作数的EA是变址寄存器的内容乘以指令中指定比例因子再加上位移量之和,所以EA由三种成份组成。在指令格式中,完整的地址表达式为:
段寄存器:[变址寄存器X比例因子+位移量]
或 段寄存器:位移量[变址寄存器X比例因子]

(7)基址比例变址寻址方式
操作数的EA是变址寄存器的内容乘以比例因子再加上基址寄存器的内容之和,所以有效地址由三部分组成。在指令格式中,完整的地址表达式为:
段寄存器:[变址寄存器X比例因子+基址寄存器]
或 段寄存器:[基址寄存器][变址寄存器X比例因子]

(8)相对基址比例变址寻址方式
操作数的EA是变址寄存器的内容乘以比例因子,加上基址寄存器的内容,再加上位移量之和,所以有效地址由4部分组成。在指令格式中,完整的地址表达式为如下格式:
段寄存器:[基址寄存器+比例因子X变址寄存器+位移量]
或 段寄存器:位移量[基址寄存器+比例因子X变址寄存器]
或 段寄存器:位移量[基址寄存器][比例因子X变址寄存器]

转移地址寻址方式

在指令系统中,有一组指令被用来控制程序的执行顺序,即按需要修改IP或修改IP和CS的内容,这组指令被称为程序转移指令。
在这里插入图片描述
(1)段内直接寻址
转移的目标地址是当前IP寄存器的内容和一个8位或16位位移量之和。位移量为8位时,称为短程转移;位移量为16位时,称为近程转移。这种寻址方式适用于条件转移及无条件转移指令,但是当它用于条件转移指令时,位移量只允许8位(386及其后继机型条件转移指令的位移量可为8位或32位)。
指令的汇编语言格式表示为:
JMP NEAR PTR PROGRM
JMP SHORT OUTSET

(2)段内间接寻址
该方式中,转移的目标地址是寄存器或存储单元的内容。寄存器或存储单元的内容可以用数据寻址方式中除立即数以为的任何一种寻址方式取得,所得到的内容将用来取代IP寄存器的值。
段内间接寻址转移指令的汇编格式可以表示为:
JMP CX
JMP WORD PTR[BX+TAB1]

(3)段间直接寻址
这种寻址方式用于段间转移,指令中直接提供了目标地址的段基址和偏移地址,所以,只要用指令中指定的偏移地址取代IP寄存器的内容,用指令中指定的段基址取代CS寄存器的内容就完成了从一个段到另一个段的转移操作。
指令的汇编语音格式可表示为:
JMP FAR PTR NEXT

(4)段间间接寻址
该方式下,用存储器中两个相继字的内容来取代IP和CS寄存器中的原始内容,以达到段间转移的目的。这里,存储单元的地址是由指令指定除立即数方式和寄存器方式以外的任何一种数据寻址方式取得。这种指令的汇编语言格式可表示为:
JMP DWORD PTR [REL+BX]

80486微处理器的指令系统

80X86的指令系统向上兼容,都是在8086指令的基础上发展形成的。与80286相比,增加了32位操作和访问存储器的32位寻址方式。
80486可以工作在实模式、保护模式和虚拟86模式,为了支持系统工作模式,指令系统中设计了系统管理指令、保护模式控制指令以及高级语言支持指令等等。
80486的基本指令按功能可分为7类:
1、数据传送指令
2、算术运算指令
3、逻辑运算指令
4、字符串操作指令
5、控制转移指令
6、处理器控制指令
7、条件设置字节指令
在这里插入图片描述

数据传送指令

1、通用数据传送指令

(1)基本传送指令MOV
格式:MOV 目标操作数,源操作数
功能:把源操作数的内容复制到目标操作数中。源操作数不变,不影响状态标志。
说明:
①、源操作数可以是8位、16位或32位的立即数、寄存器、段寄存器或存储器操作数,目标操作数是与源操作数等长的寄存器、段寄存器(CS除外)或存储器操作数。
②、源操作数和目标操作数不能同时为存储器操作数。
③、源操作数和目标操作数不能同时在段寄存器中。
④、立即数不能作为目标操作数。
⑤、不能将立即数直接传送到段寄存器。
⑥、当目标操作数为非直接寻址的存储器操作数时,如源操作数是单字节的立即数,则应用PTR运算符说明目标操作数的属性,否则将被默认为字型操作数。例如:
MOV BYTE PTR[X],55H;55H送给数据段BX间址的字节型单元
MOV [BX],55H ;0055H送给数据段BX间址的字型单元

(2)符号扩展传送指令MOVSX
格式:MOVSX 目标操作数,源操作数
功能:将源操作数的符号位向高位扩展,使其与目标操作数字长相同,然后再传送到目标操作数,而源操作数不变。
MOV DL,-16 ;DL=F0H
MOVSX BX,DL ;BX=FFF0H,而DH,DL不变

(3)零扩展传送指令MOVZX
格式:MOVZX 目标操作数,源操作数
功能:将源操作数高位用0补足16或32位,然后再传送到目标操作数。

MOVZX EAX,CX; 将CX中16位数高位加0扩展为32位送入EAX
MOVSX和MOVZX 这两条指令常被用于作除法时对被除数位数的扩展。

(4)交换指令XCHG
格式:XCHG 目标操作数,源操作数
功能:将源操作数和目标操作数的内容交换

(5)地址传送指令
1、EA传送指令。
格式:LEA 目标操作数,源操作数
功能:将源操作数的EA(即偏移地址)送到目标寄存器中。
说明:
a.目标操作数为16位或32位的寄存器,源操作数为存储器操作数。
b.LEA指令可以用MOV指令代替。例如:
TABLE DB 31H,32H,33H,34H
……
LEA DI,TABLE
等效于MOV DI,OFFSET TABLE
MOV指令用伪指令运算符OFFSET取得内存单元的EA,由汇编程序在汇编时赋值;LEA指令是在执行指令时赋值。
2、指针传送指令
格式:LDS/LES/LFS/LGS/LSS目标操作数,源操作数
功能:将源操作数数据的段基址和偏移量分别送入指定的段寄存器和目标操作数。

(6)查表转换指令XLAT
格式:XLAT
功能:完成一个字节的查表转换功能。将DS:[BX+AL]字节单元或DS:[EBX+AL]字节单元的内容送给AL。
说明:该指令执行前应做以下准备工作:
1、在数据段中建立一张表,该表的最大长度为256B。
2、BX(EBX)中存放该表的首地址,AL中存放表内偏移量。该指令执行后,AL中存放转换结果。
例如:利用查表转换功能实现一位十六进制数与ASCⅡ码的转换。
DATA SEGMENT
TAB DB ‘0123456789ABCDEF’
NUM DB ?;0~F中的任一数
DATA ENDS
代码段设置如下指令,即可查出与NUM单元中的数相对应的ASCⅡ编码:
MOV DS,DATA
MOV DS,AX
MOV BX,OFFSET TAB
MOV AL,NUM
XLAT

(7)字节交换指令BSWAP
格式:BSWAP 32位寄存器
功能:将32位寄存器的4个字节交换顺序,即将32位操作数的位31到位24与位7到位0交换、位23到位16与位15到位8交换。

(8)标志寄存器传送指令LAHF/SAHF
格式:
LAHF
SAHF
功能:LAHF将EFLAGS的低字节传送到AH中,SAHF将AH的内容传送到EFLAGS的低字节中。

2、堆栈操作指令

(1)压栈指令PUSH
格式:PUSH源操作数
功能:SP(ESP)=SP(ESP) -2(16位操作数)或SP(ESP)=SP(ESP)-4(32位操作数),源操作数压入SS:[SP(ESP)]指向的2个字(或双字)单元。
说明:
①、源操作数可以是16位或32位的立即数、存储器操作数、寄存器或段寄存器操作数。
②、如果源操作数是SP或ESP,则将调整前的SP或ESP压栈。
(2)弹栈指令POP
格式:POP 目标操作数
功能:首先从SS:[SP(ESP)]所指的栈顶内弹出给16位或32位的目标操作数,SP(ESP)=SP(ESP)+2
说明:目标操作数可以是存储器操作数通用寄存器或除CS之外的段寄存器。
(3)16位标志寄存器压栈/弹栈指令PUSHF/POPF
格式:
PUSHF
POPF
功能:执行PUSHF时,首先,SP=SP-2,然后,标志寄存器低16位压入SS:[SP]的2个单元。执行POPF时,先从栈顶弹出2B给标志寄存器低16位,然后SP=SP+2.
(4)32位标志寄存器压栈/弹栈指令PUSHFD/POPFD
格式:
PUSHFD
POPFD
功能:执行PUSHFD时,首先,(ESP)=(ESP)-4,然后,32位标志寄存器压入SS:[ESP]的4个单元。执行POPFD时,先从栈顶弹出4B给32位标志寄存器,然后(ESP)=(ESP)+4
(5)全部16位通用寄存器压栈/弹栈指令PUSHA/POPA
(6)全部32位通用寄存器压栈/弹栈指令PUSHAD/POPAD

3、I/O指令

(1)、直接寻址的I/O指令
格式:
IN AL/AX,PORT
OUT PORT,AL/AX
功能:
IN指令从指定端口把字节、字或双字数据传送到AL,AX或EAX中;OUT指令把AL,AX或EAX中的字节或字数据传送到指定端口。
说明:
当端口地址<=255时,可以采用直接寻址方式。
(2)、DX间址的I/O指令
格式:
IN AL/AX/EAX,DX
OUT DX,AL/AX/EAX
功能:
IN指令从DX指定的端口把字节或字数据传送到AL,AX或EAX中;OUT指令把AL,AX或EAX中的字节或字数据传送到DX指定的端口。
说明:
用间接寻址方式,最大可寻址64KB个端口,即可访问0~64KB中的任一端口,端口的地址必须放在DX寄存器中。数据传送类指令中除SAHF和POPF指令外,其余均不影响标志。

算术运算指令

基本四则运算

(1)加法指令:ADD
格式:ADD 目标操作数,源操作数
功能:目标操作数=源操作数+目标操作数
(2)带进位加法指令ADC
格式:ADC 目标操作数,源操作数
功能:目标操作数=源操作数+目标操作数+进位标志CF
(3)减法指令SUB
格式:SUB 目标操作数,源操作数
功能:目标操作数=目标操作数-源操作数
(4)带借位减法指令SBB
格式:SBB 目标操作数,源操作数
功能:目标操作数=目标操作数-源操作数-借位标志CF
(5)加1指令INC和减1指令DEC
格式:
INC 目标操作数
DEC 目标操作数
功能:
执行INC指令后,目标操作数=目标操作数+1;
执行DEC指令后,目标操作数=目标操作数-1。
(6)求补指令NEG
格式:NEG 目标操作数
功能:目标操作数=0-目标操作数
(7)交换加法指令XADD
格式:XADD 目标操作数,源操作数
功能:将源操作数和目标操作数进行互换,然后将源操作数与目标操作数之和送给目标操作数。指令执行后的源操作数是指令执行前的目标操作数。
(8)比较指令CMP
格式:CMP 目标操作数,源操作数
功能:目标操作数-源操作数
(9)比较并交换指令CMPXCHG
格式:CMPXCHG 目标操作数,源操作数
(10)无符号数乘法指令MUL
格式:MUL 源操作数
(11)带符号乘法指令IMUL
格式:
IMUL 源操作数
IMUL 目标操作数,源操作数
IMUL 目标操作数,源操作数,立即数
(12)无符号数除法DIV/带符号数除法IDIV
格式:
DIV 源操作数
IDIV 源操作数
(13)符号位扩展(数据宽度变换)指令CBW,CWD,CWDE,CDQ
格式:CBW/CWD/CWDE/CDQ

十进制调整指令

格式:
DAA ;组合BCD码数的加法调整指令
DAS;组合BCD码数的减法调整指令
AAA;分离BCD码数的加法调整指令
AAS;分离BCD码数的减法调整指令
AAM;分离BCD码数的乘法调整指令
AAD;分离BCD码数的除法调整指令

逻辑运算指令和移位指令

1、逻辑运算指令

(1)逻辑与/或/异或指令AND/OR/XOR
格式:AND/OR/XOR 目标操作数,源操作数
功能:将目标操作数与源操作数按位进行逻辑与、或、异或操作,结果存入目标操作数中。
(2)测试指令TEST
格式:TEST目标操作数,源操作数
(3)逻辑非指令NOT
格式:NOT 操作数

2、移位指令

(1)算术/逻辑左移指令SAL/SHL
格式:SAL/SHL 操作数,移位次数
功能:将操作数逐位向左移动一位,把最高有效位MSB移进CF,最低有效位LSB处自动补0
在这里插入图片描述
(2)算术/逻辑右移指令SAR/SHR
格式:SAR/SHR操作数,移位次数
功能:将操作数向右移位,每右移一位,把最低有效位LSB移进CF。对于SAR,最高有效位MSB保持不变,对于SHR,MSB自动补0
在这里插入图片描述
(3)双精度左移/右移指令SHLD/SHRD
格式:SHLD/SHRD 目标操作数,源操作数,移位次数
在这里插入图片描述
(4)循环移位指令ROL/ROR/RCL/RCR
格式:ROL/ROR/RCL/RCR 操作数,移位次数
功能:ROL/ROR将操作数循环左移/右移;RCL/RC将操作数和CF一起循环左移/右移。
在这里插入图片描述

3、位测试指令与位扫描指令

(1)位测试指令
格式:
BT 目标操作数,源操作数;位测试
BTS 目标操作数,源操作数;位测试置1
BTR 目标操作数,源操作数;位测试清0
BTC 目标操作数,源操作数;位测试取反
(2)向前位扫描指令 BSF
格式:BSF 目标操作数,源操作数

字符串操作指令

1、串传送指令 MOVS/MOVSB/MOVSW/MOVSD

格式:MOVS 目标操作数,源操作数
功能:把由DS:SI指向的字节、字或双字存储单元的内容复制到由ES:[DI](或[EDI])指向的存储单元中去。

2、取串指令 LODS/LODSB/LODSW/LODSD

格式:LODS 源操作数

3、存串指令STOS/STOSB/STOSW/STOSD

格式:STOS 目标操作数

4、串比较指令CMPS/CMPSB/CMPSW/CMPSD

格式:CMPS 目标操作数,源操作数
功能:将DS[SI]指向的字节或存储单元的内容与由ES:[DI](或[EDI])指向的存储单元的内容相比较(相减),比较结果不保存。

5、串搜索指令SCAS/SCASB/SCASW/SCASD

格式:SCAS 目标操作数

6、从端口输入字符串指令INSB/INSW/INSD

格式:INSB

7、向端口输出字符串OUTSB/OUTSW/OUTSD

格式:OUTSB

8、重复前缀REP

格式:
REP MOVS
REP STOS
REP OUTS
REP INS

9、条件重复前缀REPE/REPZ/REPNE/REPNZ

格式:
REPE/ERPZ CMPS
REPE/ERPZ SCAS
REPNE/ERPNZ CMPS
REPNE/ERPNZ SCAS

控制转移指令

1、无条件转移指令JMP

格式:JMP 目标操作数

2、条件转移指令

格式:指令助记符 转移地址标号
在这里插入图片描述

3、循环控制转移指令

格式:
LOOP 转移地址标号
LOOPE/LOOPZ 转移地址标号
LOOPNE/LOOPNZ 转移地址标号
JCXZ 转移地址标号
在这里插入图片描述

4、过程调用指令CALL

格式:CALL 目标操作数

5、过程返回指令RET

格式:RET/RET n

6、中断调用与中断返回指令

(1)中断调用指令
格式:
INT N
INTO
(2)中断返回指令
格式:IRET

处理器控制指令

1、单个标志位操作指令

在这里插入图片描述

2、处理器暂停指令HLT

3、处理器脱离指令ESC

4、处理器等待指令WAIT

5、总线锁定前缀¯¯¯¯LOCK¯¯¯¯

6、空操作指令NOP

按条件设置字节指令

格式:SETxx 目标操作数
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/664920.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

chatgpt赋能python:Python的抹零功能介绍及使用方法

Python的抹零功能介绍及使用方法 Python是一种广泛使用的编程语言&#xff0c;而其抹零功能是在进行浮点数操作时非常有用的。在本文中&#xff0c;我们将介绍python中抹零的概念、使用方法以及注意事项&#xff0c;以帮助大家更好地使用python中的抹零功能。 什么是抹零&…

【MarkDown】CSDN Markdown之时间轴图timeline详解

文章目录 时间轴图一个关于时间轴图的例子语法分组长时间段或事件文本换行时间段和事件文本样式自定义颜色方案主题基础主题森林主题黑色主题默认主题中性主题 与库或网站集成 时间轴图 时间轴图&#xff1a;现在这是一个实验性的图表。语法和属性可能会在未来版本中更改。除了…

渣土车未苫盖识别系统 yolov8

渣土车未苫盖识别系统通过yolov8python&#xff0c;渣土车未苫盖识别系统对经过的渣土车进行实时监测&#xff0c;当检测到有渣土车未能及时苫盖时&#xff0c;将自动发出警报提示现场管理人员及时采取措施。Yolo模型采用预定义预测区域的方法来完成目标检测&#xff0c;具体而…

chatgpt赋能python:Python抽人代码:如何优化你的抽奖过程?

Python抽人代码&#xff1a;如何优化你的抽奖过程&#xff1f; 简介 抽奖是在网站上进行的一项非常常见的活动。随着技术的发展&#xff0c;抽奖活动的方式也越来越多样化。在这些活动中&#xff0c;人们喜欢使用抽人软件或代码来提高效率并确保随机性。这在Python中是相当简…

chatgpt赋能python:Python查找第二大的数——从入门到实战

Python查找第二大的数——从入门到实战 Python是一门非常强大的编程语言&#xff0c;不仅支持基本的编程技巧&#xff0c;也支持各种复杂的算法和数据结构。本篇文章将介绍如何通过Python编写一个程序&#xff0c;来实现查找数组中第二大的数。 环境准备 想要运行这个程序&a…

SQL 函数:concat函数、concat_ws()函数、group_concat()

SQL 函数&#xff1a;concat函数、concat_ws()函数、group_concat()函数(转载) concat()函数 功能&#xff1a;将多个字符串连接成一个字符串。 语法&#xff1a;concat(str1, str2,…) 返回结果为连接参数产生的字符串&#xff0c;如果有任何一个参数为null&#xff0c;则返…

java - 报错解决集合

ssm-java学习笔记 java.lang.NoSuchMethodException: org.cjh.bean.Dept.<init>()Invalid bound statement (not found)错误解决方法动态sql if java.lang.IndexOutOfBoundsException: Index: 5, Size: 5Failed to determine a suitable driver classjava.sql.SQLExcepti…

第十二章 sys模块

1. sys模块介绍 什么是Python 解释器 当编写Python 代码时&#xff0c;通常都会得到一个包含Python 代码的以.py 为扩展名的文件。要运行编写的代码&#xff0c;就需要使用Python 解释器去执行.py 文件。因此&#xff0c;Python 解释器就是用来执行Python 代码的一种工具。常…

Windows下Nacos的配置与使用

一、什么是 Nacos 以下引用来自 nacos.io Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service的首字母简称&#xff0c;一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。 Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用…

19使用MATLAB中的BP神经网络来做字母识别

1.简述 学习目标&#xff1a; 学习BP神经网络字母识别 字符识别应用非常广泛&#xff0c;比如车辆牌照自动识别和手写识别等。我们采用BP网络对26个英文字母进行识别&#xff0c;首先将26个字母中每一个字母都通过75的方格进行数字化处理&#xff0c;并用一个向量表示&#x…

中间件 -zookeeper

三连支持 一起鼓励 一起进步 zookeeper 文章目录 一、概述1.Leader 角色2.Follower 角色3.数据同步4. 2PC提交5. Observer 角色6. leader 选举7. 集群组成6. 惊群效应 二、Curator三、应用场景总结 一、概述 首先&#xff0c;在分布式架构中&#xff0c;任何的节点都不能以单点…

支持记录和审计上传/下载的文件内容,支持控制用户连接资产的方式,JumpServer堡垒机v3.4.0发布

2023年6月19日&#xff0c;JumpServer开源堡垒机正式发布v3.4.0版本。在这一版本中&#xff0c;JumpServer新增支持多种资源选择策略&#xff0c;包括用户登录、命令过滤、资产登录和连接方式&#xff1b;支持记录和审计上传/下载的文件内容&#xff0c;进一步提升系统的安全性…

linux(线程同步和互斥)

目录&#xff1a; 1.为什么需要同步和互斥 2.明确一些概念 3.实现一个抢票程序 4.理解加锁和解锁是原子的呢&#xff1f;&#xff1f; ------------------------------------------------------------------------------------------------------------------------- 1.为什么…

哈工大计算机网络传输层详解之:流水线机制与滑动窗口协议

哈工大计算机网络传输层详解之&#xff1a;流水线机制与滑动窗口协议 在上一节中我们逐步分析了可靠传输协议的设计过程&#xff0c;最后讲到rdt3.0的设计和实现机制。但是rdt3.0为了实现可靠性&#xff0c;牺牲了很大一部分性能&#xff0c;其中最主要的原因就在于停止等待协…

23.ELman神经网络预测数据

1.简述 学习目标&#xff1a;ELman神经网络预测数据 Elman网络介绍 神经网络是一个庞大的体系和概念&#xff0c;根据处理信息的不同方式来区分不同的network。比如根据处理信息结果的传递方向&#xff0c;分前馈型与反馈型。前馈型网络会根据输出数值来调整网络的参数&#xf…

LangChain 中文入门教程

为了便于阅读&#xff0c;已生成gitbook&#xff1a;LangChain 中文入门教程 - LangChain 的中文入门教程 github地址&#xff1a;https://github.com/liaokongVFX/LangChain-Chinese-Getting-Started-Guide 加了个 CHANGELOG,更新了新的内容我会写在这里&#xff0c;方便之前看…

2023-06-19 Untiy进阶 C#知识补充2——C#版本与Unity的关系

文章目录 一、Unity 与 C# 版本二、Unity 的 .Net API 兼容级别 一、Unity 与 C# 版本 Unity 版本C# 版本Unity 2021.2C# 9Unity 2020.3C# 8Unity 2019.4C# 7.3Unity 2017C# 6Unity 5.5C# 4 ​ 更多信息可以在 Unity 官网说明查看&#xff1a;Unity - Manual: C# compiler (u…

Git的使用方法

文章目录 Git简介Git用法上传到gitee上 Git简介 简单来说&#xff0c;Git就像一个日志一样&#xff0c;可以帮你记录你对文本文件的修改&#xff0c;但他的功能又强于日志&#xff0c;不仅可以记录&#xff0c;还可以帮你存储那些你对文本文件的修改&#xff0c;当你想要找回之…

C++基础入门教程(1)

1 C初识 1.1 第一个C程序 编写一个C程序总共分为4个步骤 创建项目 创建文件 编写代码 运行程序 1.1.1 创建项目 ​ Visual Studio是我们用来编写C程序的主要工具&#xff0c;我们先将它打开 1.1.2 创建文件 右键源文件&#xff0c;选择添加->新建项 给C文件起个名称&am…

亲测有效:自定义下拉头部刷新控件,任何子View都可以下拉

对于一个主Activity&#xff0c;里面进行多个fragment切换&#xff0c;不知其fragment包裹的是什么控件&#xff0c;但是都要进行下拉刷新&#xff0c;比如下拉切换语言、切换主题等场景。常见的方法&#xff0c;每个fragment里面都单独加下拉刷新&#xff1b;现在是自定义下拉…