51单片机的汇编伪指令
目录
一、ORG 汇编起始地址命令
1、功能
2、语法格式
3、使用示例
4、注意事项
二、END 汇编终止命令
1、功能
2、语法格式
3、使用示例
4、注意事项
三、EQU 赋值命令
1、功能
2、语法格式
3、使用示例
4、注意事项
四、BIT 位定义命令
1、功能
2、语法格式
3、使用示例
4、注意事项
五、DB 定义数据字节命令
1、功能
2、语法格式
3、使用示例
4、注意事项
六、DW 定义数据字节命令
1、功能
2、语法格式
3、使用示例
4、注意事项
七、DS 定义存储区命令
1、功能
2、语法格式
3、使用示例
4、注意事项
在 51 单片机的汇编语言编程中,伪指令起着重要的作用。
伪指令并非真正的指令,不会生成机器码,不像真正的指令那样在程序运行时被执行。而是在汇编过程中,被汇编程序用来指导汇编工作的进行。
下面将详细介绍一些常用的 51 单片机汇编伪指令。
一、ORG 汇编起始地址命令
1、功能
ORG 指令的作用是规定后续程序或数据块在存储器里的起始地址。在汇编时,汇编程序会依据 ORG 指令所指定的地址,将程序和数据存于对应的存储单元。
如果不使用ORG,则汇编得到的目标程序将从0000H地址开始。
2、语法格式
ORG 表达式
这里的“表达式”是一个16位的地址值,能够是具体的数值,也可以是已经定义的符号地址。
3、使用示例
ORG 0000HLJMP MAIN ; 跳转到主程序ORG 0030H
MAIN:MOV SP, #60H ; 设置堆栈指针; 主程序代码SJMP $ ; 程序暂停
END
在这个例子中:
① ORG 0000H 规定了后续的指令 LJMP MAIN 会从地址 0000H 开始存放。0000H 是 51 单片机复位后的起始地址,通常会在此处放置一条跳转指令,从而跳转到主程序。
② ORG 0030H 表明后续的主程序代码从地址 0030H 开始存放。0030H 之后是用户程序的起始地址,因为 0000H - 002FH 被中断服务程序的入口地址占用了。
4、注意事项
① 一个源程序里可以多次使用 ORG 指令,从而指定不同程序段或数据块的起始地址。不过,地址值必须是从小到大依次排列,且不能有重叠。
② ORG 指令通常处于程序或数据块的起始位置,用于确定它们在存储器中的起始存放地址。
二、END 汇编终止命令
1、功能
END 指令用于告知汇编程序,源程序已经结束,整个源程序中只能有一条END命令。
汇编程序在对源文件进行汇编处理时,一旦遇到 END 指令,就会停止对后续内容的汇编操作。也就是说,END 指令标志着整个汇编程序的结束点,其后的代码将不会被汇编成机器码。
2、语法格式
END [表达式]
其中,“表达式” 是可选的。在 51 单片机汇编中,这个表达式通常是主程序的起始地址。不过在实际应用里,很多时候会省略这个表达式。
3、使用示例
ORG 0000HLJMP MAIN ; 跳转到主程序ORG 0030H
MAIN:MOV SP, #60H ; 设置堆栈指针; 主程序代码SJMP $ ; 程序暂停END MAIN
在上述示例中:
① 程序开头的 ORG 0000H 让 LJMP MAIN 从地址 0000H 开始存放,0000H 是 51 单片机复位后的起始地址。
② ORG 0030H 使后续的主程序代码从地址 0030H 开始存放。
③ 最后的 END MAIN 表明汇编程序到此结束,并且指定了主程序的起始地址为 MAIN。如果省略 MAIN,写成 END 也是可行的,这在实际编程中更为常见。
4、注意事项
① 唯一性:在一个汇编源程序里,END指令只能出现一次,并且位于程序的末尾。若程序中存在多个END指令,汇编程序在遇到第一个END指令时就会停止汇编,其后的代码将被忽略。
② 位置准确性:要保证 END 指令处于所有有效代码之后,不然其后的代码将不会被汇编成机器码,也就无法在单片机上运行。
三、EQU 赋值命令
1、功能
EQU 指令的作用是给一个符号名赋予特定的值或者表达式,也就是将一个符号名定义为一个常量,类似于C语言中的宏定义常量。
这样在后续的程序中,就可以使用这个符号名来代替所定义的值,提高代码的可读性和可维护性。一旦使用 EQU 定义了符号名,在整个程序中该符号名的值就不能再被重新定义。
2、语法格式
符号名 EQU 表达式
其中,“符号名” 是自定义的标识符,遵循汇编语言标识符的命名规则;“表达式” 可以是一个具体的数值、地址、寄存器名或者由它们组成的合法表达式。
3、使用示例
① 为数值常量定义符号名
COUNT EQU 10
ORG 0000H
START:MOV R0, #COUNT ; 将COUNT的值10传送到寄存器R0; 其他代码SJMP $
END
在这个例子中,COUNT 被 EQU 定义为 10,在后续代码里,MOV R0, #COUNT 就相当于 MOV R0, #10,这使得代码的含义更加清晰。
② 为地址常量定义符号名
DATA_ADDR EQU 30H
ORG 0000H
START:MOV A, DATA_ADDR ; 将地址30H中的内容传送到累加器A; 其他代码SJMP $
END
这里,DATA_ADDR 被定义为地址 30H,在程序里使用 DATA_ADDR 就等同于使用 30H。
③ 为寄存器定义符号名
TEMP EQU R1
ORG 0000H
START:MOV TEMP, #20H ; 将立即数20H传送到寄存器R1; 其他代码SJMP $
END
在这个示例中,TEMP 被定义为寄存器 R1,使用 TEMP 就相当于使用 R1。
4、注意事项
① 不可重复定义:使用 EQU 定义的符号名在整个程序中不能被重新定义。如果尝试重新定义,汇编程序会报错。
② 先定义后使用:必须先使用 EQU 定义符号名,然后才能在程序中使用该符号名。如果在定义之前就使用,汇编程序无法识别该符号名。
四、BIT 位定义命令
1、功能
BIT 指令的主要功能是为一个位地址赋予一个符号名。类似于C语言中的宏定义常量。
在 51 单片机里,存在可位寻址的区域,通过 BIT 指令可以使用自定义的符号名来表示这些位地址,这样能增强程序的可读性和可维护性,让程序员在编写程序时可以使用更具含义的符号来操作位。
2、语法格式
符号名 BIT 位地址
其中,“符号名” 是用户自定义的标识符,要遵循汇编语言标识符的命名规则;“位地址” 可以是直接的位地址,也可以是可位寻址的寄存器或存储器单元的位名称。
3、使用示例
① 为直接位地址定义符号名
FLAG BIT 20H.0
ORG 0000H
START:SETB FLAG ; 将位地址20H.0置1; 其他代码SJMP $
END
在这个例子中,FLAG 被 BIT 指令定义为位地址 20H.0。在后续的程序中,SETB FLAG 就相当于 SETB 20H.0,将位地址 20H.0 置为 1。
② 为寄存器的位定义符号名
CY_FLAG BIT PSW.7
ORG 0000H
START:MOV A, #0FFHADD A, #1 ; 执行加法操作,产生进位JB CY_FLAG, OVERFLOW ; 如果进位标志位PSW.7为1,跳转到OVERFLOW处; 其他代码SJMP $
OVERFLOW:; 处理溢出情况SJMP $
END
这里,CY_FLAG 被定义为程序状态字寄存器 PSW 的第 7 位(即进位标志位 CY)。在程序中,使用 CY_FLAG 来判断是否产生进位,提高了代码的可读性。
4、注意事项
① 符号名的唯一性:使用 BIT 指令定义的符号名在整个程序中必须是唯一的,不能重复定义,否则汇编程序会报错。
② 位地址的有效性:指定的位地址必须是可位寻址的。在 51 单片机中,可位寻址的区域包括内部数据存储器的 20H - 2FH 单元(共 128 位)以及部分特殊功能寄存器。如果使用了不可位寻址的地址,汇编程序会报错。
③ 先定义后使用:必须先使用 BIT 指令定义符号名,然后才能在程序中使用该符号名。如果在定义前就使用,汇编程序无法识别该符号名。
五、DB 定义数据字节命令
1、功能
DB 指令的全称为 “Define Byte”,即定义字节。它的主要功能是在程序存储器中定义一个或多个字节的数据,这些数据可以是常数、字符或者表达式的值。
DB指令所定义的数据会按照顺序依次存放在指定的存储单元中。
2、语法格式
[标号:] DB 表达式1 [, 表达式2, ...]
“标号” 是可选的,它代表了 DB 指令所定义的第一个数据字节的存储地址。
“表达式” 可以是十进制或十六进制的常数、字符(用单引号括起来)、ASCII 码值或者由它们组成的表达式。多个表达式之间用逗号分隔。
3、使用示例
① 定义常数数据
ORG 1000H
DATA: DB 10H, 20H, 30H
在这个例子中,ORG 1000H 规定了后续数据从地址 1000H 开始存放。DB 指令定义了三个字节的数据,分别是 10H、20H 和 30H。存储情况如下:
地址 1000H 存储 10H;
地址 1001H 存储 20H;
地址 1002H 存储 30H。
② 定义字符数据
ORG 2000H
STRING: DB 'HELLO'
这里定义了一个字符串 “HELLO”。每个字符会以其对应的 ASCII 码值存放在存储器中。存储情况如下:
地址 2000H 存储字符 H 的 ASCII 码值 48H;
地址 2001H 存储字符 E 的 ASCII 码值 45H;
地址 2002H 存储字符 L 的 ASCII 码值 4CH;
地址 2003H 存储字符 L 的 ASCII 码值 4CH;
地址 2004H 存储字符 O 的 ASCII 码值 4FH。
③ 定义表达式数据
ORG 3000H
VALUES: DB 10+5, 2*8
此例中,DB 指令定义的数据是表达式的值。10+5 的结果是15 (十六进制为 0FH),2 * 8 的结果是16 (十六进制为 10H)。存储情况如下:
地址 3000H 存储 0FH;
地址 3001H 存储 10H。
4、注意事项
① 数据类型:DB 指令定义的数据为字节类型,每个表达式的值必须在一个字节(0 - 255)的范围内。
② 存储顺序:数据按照表达式在 DB 指令中出现的顺序依次存储在连续的存储单元中。
③ 标号使用:如果使用了标号,它可以在程序的其他地方引用,方便对这些数据进行访问。
六、DW 定义数据字节命令
1、功能
DW 的指令全程为“Define Word”,即定义字 ,其作用是在程序存储器里定义一个或多个16位的字数据。这些数据可以是常数、地址或者表达式的值,并且会按顺序存于指定的存储单元。
1个数据字要两个存储单元,存放时,高位在前,低位在后。
2、语法格式
[标号:] DW 表达式1 [, 表达式2, ...]
“标号” 是可选的,它代表 DW 指令所定义的第一个字数据的起始存储地址。
“表达式” 可以是十进制或十六进制的常数、地址或者由它们组成的合法表达式,多个表达式之间用逗号分隔。
3、使用示例
① 定义常数数据
ORG 1000H
DATA: DW 1234H, 5678H
此例中,ORG 1000H 让后续数据从地址 1000H 开始存放。DW 指令定义了两个 16 位的字数据,存储情况如下:
地址 1000H 存储 1234H 的高字节 12H;
地址 1001H 存储 1234H 的低字节 34H;
地址 1002H 存储 5678H 的高字节 56H;
地址 1003H 存储 5678H 的低字节 78H;
② 定义地址数据
ORG 2000H
ADDR: DW 3000H, 4000H
这里定义了两个地址数据。存储情况如下:
地址 2000H 存储 3000H 的高字节 30H;
地址 2001H 存储 3000H 的低字节 00H;
地址 2002H 存储 4000H 的高字节 40H;
地址 2003H 存储 4000H 的低字节 00H。
③ 定义表达式数据
ORG 3000H
VALUES: DW 1000 + 2000, 3000 * 2
在这个例子中,DW 指令定义的数据是表达式的值。1000 + 2000 结果为 3000 (十六进制 0BB8H),3000 * 2 结果为 6000 (十六进制 1770H)。存储情况如下:
地址 3000H 存储 0BB8H 的高字节 0BH;
地址 3001H 存储 0BB8H 的低字节 B8H;
地址 3002H 存储 1770H 的高字节 17H;
地址 3003H 存储 1770H 的低字节 70H。
4、注意事项
① 数据类型:DW 指令定义的是 16 位的字数据,每个表达式的值要在 16 位(0 - 65535)的范围内。
② 存储顺序:每个 16 位数据的高字节存于低地址单元,低字节存于高地址单元。
③ 标号使用:若使用了标号,可在程序其他地方引用,便于对这些数据进行访问。
七、DS 定义存储区命令
1、功能
DS 指令的全称为 “Define Storage”,也就是定义存储空间。
它的主要作用是在程序存储器中预留出指定数量的连续存储单元,这些预留的存储单元不会被赋予具体的数据值,只是作为空白区域等待后续程序使用,比如用于存储临时数据、数组等。
2、语法格式
[标号:] DS 表达式
“标号” 是可选的,它表示预留存储空间的起始地址。如果使用了标号,在后续程序中可以通过该标号来引用这个预留空间。
“表达式” 是一个数值,代表要预留的存储单元的数量。这个表达式可以是一个具体的常数,也可以是一个合法的计算表达式,其计算结果必须是一个正整数。
3、使用示例
① 预留固定数量的存储单元
ORG 1000H
BUFFER: DS 10
在这个例子中,ORG 1000H 规定了后续操作从地址 1000H 开始。
DS 10 表示从地址 1000H 开始预留 10 个连续的存储单元。也就是说,地址范围从 1000H 到 1009H 的这 10 个存储单元被预留出来,后续程序可以使用这些单元来存储数据。
这里的 BUFFER 标号代表预留空间的起始地址 1000H。
② 结合表达式预留存储单元
ORG 2000H
TEMP: DS 5 + 3
此例中,DS 5 + 3 先计算表达式 5 + 3 的值为 8,所以从地址 2000H 开始预留 8 个连续的存储单元,地址范围是从 2000H 到 2007H。
这里的 TEMP 标号代表预留空间的起始地址为2000H。
4、注意事项
① 存储单元的用途:使用 DS 指令预留的存储单元在汇编时不会被初始化,其初始值是不确定的。在使用这些预留单元之前,通常需要在程序中对其进行初始化操作。
② 地址连续性:预留的存储单元是连续的,在程序设计时要确保后续对这些单元的使用不会超出预留的范围,避免出现数据覆盖或越界访问的问题。
③ 与其他指令的区别:要注意 DS 指令和 DB、DW 指令的区别。DB 和 DW 指令是用于定义具体的数据并存储在存储器中,而 DS 指令只是预留空间,不存储具体数据。
以上即为 51单片机的汇编伪指令 的全部内容,创作不易,麻烦三连支持一下呗~
相关文章:
51单片机的汇编伪指令
目录 一、ORG 汇编起始地址命令 1、功能 2、语法格式 3、使用示例 4、注意事项 二、END 汇编终止命令 1、功能 2、语法格式 3、使用示例 4、注意事项 三、EQU 赋值命令 1、功能 2、语法格式 3、使用示例 4、注意事项 四、BIT 位定义命令 1、功能 2、语法格式…...
深入探究Python的re模块及其在爬虫中的应用
深入探究Python的re模块及其在爬虫中的应用 一、引言 在Python的强大生态系统中,re模块作为处理正则表达式的核心工具,发挥着举足轻重的作用。正则表达式是一种描述文本模式的强大语言,能够高效地进行字符串的匹配、查找、替换等操作。无论…...
aosp13增加摄像头控制功能实现
A13中,可以要求做一个开关来控制摄像头是否可用,约束所有使用摄像头的应用。思路:设置中增加开关设置一个属性值,在摄像头调用实现层增该值判断即可 一 开关的开发: 设置-安全中增加开关选项 代码部分&#x…...
Kotlin 之 vararg 参数向下传递的几种方式
在 Kotlin 中,vararg 参数是一种特殊的参数类型,用于表示可变数量的参数。vararg 参数是否可以向下传递,需要根据目标方法的参数类型来决定。 1、目标方法参数也是vararg类型,可直接向下传递 在 method 方法中,通过 …...
Kotlin学习
kotlin android 开源,Kotlin开源项目集合_晚安 呼-华为开发者空间 干货来袭,推荐几款开源的Kotlin的Android项目...
AI写程序:图片批量重命名工具 - 自动化整理您的图片库
图片批量重命名工具 - 自动化整理您的图片库 GitHub项目地址: https://github.com/dependon/renameImage 项目介绍 这是一个基于Python开发的图形界面工具,用于批量重命名文件夹中的图片文件。它能够递归处理选定文件夹及其所有子文件夹中的图片,按照…...
git命令自动拉去远程分支到本地
是的,可以通过 Git 命令自动拉取远程分支并在本地创建同名分支。以下是几种方法: 方法 1:直接拉取远程分支并创建同名本地分支 git fetch origin <远程分支名> # 拉取远程分支 git checkout -b <本地分支名> origin/<远程分…...
[创业之路-364]:穿透表象:企业投资的深层逻辑与误区规避
前言: 透过现象看本质 企业一生与人生相似 看企业如同看人 三岁看大,七岁看老 三十年河东,三十年河西 企业也有品行、文化、气质、性格、赚钱、生命周期与赚钱曲线 投资公司的目的是未来赚钱,赚未来赚钱。投资创业中的企业主要看…...
UE5 蓝图里的声音
文章目录 支持的格式设置循环播放在场景中放置音频设置音频的衰减与不衰减在UI动画中播放声音使用蓝图节点播放声音按钮本身就可以播放声音 支持的格式 支持:WAV 不支持:MP3 设置循环播放 双击音频,打开音频设置,勾选Looping …...
Spring Boot 邮件发送配置遇到的坑:解决 JavaMailSenderImpl 未找到的错误
在使用 Spring Boot 开发时,我们经常需要通过邮件发送功能来实现某些业务逻辑。为了方便快速集成,Spring Boot 提供了一个非常好用的 spring-boot-starter-mail 模块,帮助我们轻松发送邮件。但是,在配置过程中可能会遇到一些问题&…...
路由表的最终地址 root 路由跟踪,最终到哪里去
在路由跟踪(如tranceroute或trancert命令)中,最终地址是目标主机或服务器的IP地址或域名所对应的实际网络地址; 路由跟踪的目的是显示数据包从本地主机到目标主机所经过的每一跳路由器或网络节点,而最终地址是数据包要到达的目标设备。 1.路由跟踪的最终地址 目标主机:路…...
Docker面试全攻略(一):镜像打包、容器运行与高频问题解析
引言 在云原生和微服务架构盛行的今天,Docker 已成为后端开发的必备技能。本文从 面试高频考点 出发,系统梳理 Docker 镜像构建、容器运行的核心知识点,助你轻松应对 Docker 相关的技术面试! 一、Docker 镜像构建核心(面试必问) 1. Dockerfile 核心命令与参数 FROM:基…...
方法的重写
目录 1、重写的概念2、方法重写的规则3、重写 VS 重载 1、重写的概念 重写,也称为覆盖,是子类对父类的非构造、非静态、非 final 修饰、非 private 修饰的方法的实现过程的重新编写。重写可以让子类根据需要来实现父类的方法。方法重写是子类与父类的一…...
搭建hadoop集群模式并运行
3.1 Hadoop的运行模式 先去官方看一看Apache Hadoop 3.3.6 – Hadoop: Setting up a Single Node Cluster. 本地模式:数据直接存放在Linux的磁盘上,测试时偶尔用一下 伪分布式:数据存放在HDFS,公司资金不足的时候用 完全分布式&a…...
【学Rust写CAD】39 over_in_in 函数(alpha256补充方法)
源码 // Similar to over_in but includes an additional clip alpha value#[inline]pub fn over_in_in(self,src: Argb, dst: Argb, clip: Alpha) -> Argb {let src_alpha self * clip;let dst_alpha !(src_alpha*src.alpha_t());// we sum src and dst before reducing…...
Visual Studio 2022 UI机器学习训练模块
VS你还是太超标了,现在机器学习都不用写代码了吗!! 右键项目解决方案,选择机器学习模型...
c# 企业级ADB通信示例
using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Text; using System.Threading.Tasks;namespace ADB_Demo {/// <summary>/// ADB管理器,提供与Android设备的通信功能/// </summary>publ…...
linux上todesk无法使用问题
安装 x11 查看是否已安装 X11 dpkg -l | grep xserver-xorg-core 安装 X11,大概需要 17 - 222 MB(前者是在服务器上装,后者在自己的 WSL 装,具体视情况而定) sudo apt-get install xorg sudo apt-get install xauth s…...
数字IC后端项目典型问题之后端实战项目问题记录
Q1:为了更高效过掉Calibre LVS,我们要求学员在chipfinish阶段需要先做Online LVS检查。该学员在做verifyConnectivity检查发现设计中存在大量的M1 VDD_CORE Un-Connect Pin的violation,具体violation如下图所示。 数字后端培训实战项目六大典型后端实现…...
【机器学习】决策树
一、什么是决策树? 想象一下你玩“二十个问题”游戏的场景,你通过问一系列“是”或“否”的问题来猜测对方心中的物体。决策树的工作方式与此非常相似。它本质上是一个流程图结构,其中: 每个内部节点(Internal Node&…...
大模型格式化输出的几种方法
大模型格式化输出的几种方法 在开发一些和LLM相关的应用的时候,如何从大模型的反馈中拿到结构化的输出数据是非常重要的,那么本文就记录几种常用的方法。 OpenAI提供的新方法 在 OpenAI 的 Python 库中,client.beta.chat.completions.parse 是一个用于生成结构化输出的方法…...
250408_解决加载大量数据集速度过慢,耗时过长的问题
250408_解决加载Cifar10等大量数据集速度过慢,耗时过长的问题(加载数据时多线程的坑) 在做Cifar10图像分类任务时,发现每个step时间过长,且在资源管理器中查看显卡资源调用异常,主要表现为,显卡…...
Linux网络多进程并发服务器和多线程并发服务器
多进程 还是以大小写转换为例子 #include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <pthread.h> #include <sys/socket.h> #include <arpa/inet.h> #include "wrap.h" #include…...
LLMs基础学习(五)模型微调专题(中)
文章目录 LLMs基础学习(五)模型微调专题(中)Adapter 类的微调1 背景2 技术原理3 具体细节4 Adapter 类其他方法的微调 Prefix 类的微调1 Prefix Tuning2 Prompt Tuning3 P - tuning4 P - Tuning v25 总结 LoRA 篇a. 什么是 LoRA?…...
不同路由器网段之间的组建
实现PC1到PC7之间的通信 先将基础的ip都配置好 在AR6中将跳板配置好,ip route-static 192.168.5.0 24 64.1.1.2 在AR3中将跳板配置好,ip route-static 192.168.1.0 24 64.1.1.1 如此我们将可以实现通信了 还有第二种,实现PC1到…...
java设计模式-建造者模式
建造者模式(build) 建造者模式的四个角色 1、Product(产品角色): 一个具体的产品对象。 2、Builder(抽象建造者): 创建一个Product对象的各个部件指定的 接口或者抽象类。 3、ConcreteBuild(具体建造者):实现接口,构建和装配各个部…...
【泛函分析】
E.Kreyszig, Introductory functional analysis with applications, Wiley, 1989 1.1 Metric space 满足下面四个性质的映射称为度量:正定、0、对称性和三角不等式 推论:广义的三角不等式 度量可以看成一个映射,验证欧式距离&am…...
【NLP 面经 6】
当上帝赐予你荒野时,就意味着,他要你成为高飞的鹰 —— 25.4.3 一、机器翻译任务,Transformer结构模型改进 在自然语言处理的机器翻译任务中,你采用基于 Transformer 架构的模型。在翻译一些具有丰富文化内涵、习语或隐喻的句子时…...
地质科研智能革命:当大语言模型“扎根”地质现场、大语言模型本地化部署与AI智能体协同创新实践
在地质学迈向“深时数字地球”(Deep-time Digital Earth)的进程中,传统研究方法正面临海量异构数据(地质图件、遥感影像、地震波谱等)的解析挑战。大语言模型(LLM)与AI智能体的本地化部署技术&a…...
蓝桥王国(Dijkstra优先队列)
问题描述 小明是蓝桥王国的王子,今天是他登基之日。 在即将成为国王之前,老国王给他出了道题,他想要考验小明是否有能力管理国家。 题目的内容如下: 蓝桥王国一共有 N 个建筑和 M 条单向道路,每条道路都连接着两个…...
美团mtgsig1.1 分析 mtgsig
声明 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向过程 mtgsig有问题的请求3次左右…...
基于STM32、HAL库的CH224Q快充协议芯片简介及驱动程序设计
一、简介: CH224Q是一款USB Type-C快充协议芯片,支持多种快充协议,包括: USB PD 3.0 QC4 QC3.0/2.0 AFC FCP SCP APPLE 2.4A BC1.2 该芯片通过I2C接口与主控MCU通信,可以灵活配置输出电压和获取充电状态信息…...
SvelteKit 最新中文文档教程(18)—— 浅层路由和 Packaging
前言 Svelte,一个语法简洁、入门容易,面向未来的前端框架。 从 Svelte 诞生之初,就备受开发者的喜爱,根据统计,从 2019 年到 2024 年,连续 6 年一直是开发者最感兴趣的前端框架 No.1: Svelte …...
蓝桥杯-数字诗意
问题描述 在诗人的眼中,数字是生活的韵律,也是诗意的表达。 小蓝,当代顶级诗人与数学家,被赋予了"数学诗人"的美誉。他擅长将冰冷的数字与抽象的诗意相融合,并用优雅的文字将数学之美展现于纸上。 某日&a…...
深入探索 Node.js 文件监听机制:从前端工程化到原理剖析
在现代化前端开发中,文件监听(File Watching)是实现高效开发体验的核心技术之一。从 webpack 的热模块替换到 Vite 的即时刷新,从 CSS 预处理到静态资源打包,背后都依赖于稳健的文件监听机制。本文将深入探讨基于 Node…...
2025 年河北交安安全员考试:巧用行业报告丰富知识储备
河北交通行业发展迅速,各类行业报告蕴含大量有价值信息。考生可从河北省交通运输行业发展报告、安全专项检查报告等资料入手。在行业发展报告中,了解本省交通建设规模、重点项目规划等内容,这些信息与交安安全员工作紧密相关。比如࿰…...
Java9新特性
新的Jshell Java9引入了交互式编程工具jshell,可用于快速测试和学习Java。 特性 该工具可用于快速测试代码片段,无需创建java文件。支持自动补全和历史命令支持保存和加载会话 不可变集合工厂方法 Java9新增了List.of()、Set.of()、Map.of()和Map.o…...
CS内网渗透 - 如何通过冰蝎 Webshell 上线 Weblogic 服务器到 Cobalt Strike 并绕过杀软检测(360、火绒)?
目录 1. 冰蝎连接上 Weblogic 服务器如何上线到 Cobalt Strike 2. 服务器安装杀毒工具如何绕过杀软上线到 Cobalt Strike 2.1 杀软对 Webshell 命令执行的检测及绕过 2.2 杀软对 Cobalt Strike 上线木马的检测及绕过 2.3 杀软对这两方面的限制及综合绕过 3. 如何生成免杀…...
Linux开发过程中常用命令整理
docker ps -a查看所有(包括已经停止的) systemctl 功能:控制系统服务的启动关闭等 语法:systemctl start | stop | restart | disable | enable | status 服务名 start,启动stop,停止status,查看状态disable…...
触想工业一体机助力打造安全智能的数字化配电系统
一、项目开发背景 现代社会运行依赖稳定的电力供应,尤其在工业生产、城市基础设施、商业建筑等关键领域,即便是0.1秒的电力中断也可能导致严重后果。同时,随着全球用电负荷加剧及能源结构转型,对电力系统的运维效率、能源利用和数…...
从代码学习深度学习 - 序列到序列学习 GRU编解码器 PyTorch 版
文章目录 前言一、数据加载与预处理1.1 读取数据1.2 预处理数据1.3 词元化1.4 词频统计1.5 构建词汇表1.6 截断与填充1.7 转换为张量1.8 创建数据迭代器1.9 整合数据加载二、训练辅助工具2.1 时间记录器2.2 累加器2.3 准确率计算2.4 GPU 上的准确率评估2.5 GPU 设备选择2.6 梯度…...
华为AI-agent新作:使用自然语言生成工作流
论文标题 WorkTeam: Constructing Workflows from Natural Language with Multi-Agents 论文地址 https://arxiv.org/pdf/2503.22473 作者背景 华为,北京大学 动机 当下AI-agent产品百花齐放,尽管有ReAct、MCP等框架帮助大模型调用工具࿰…...
基于PyTorch 实现一个基于 Transformer 架构的字符级语言模型
这篇教程将带你一步步在 JupyterLab 中实现一个简单的语言模型。我们将从零开始,使用 PyTorch 实现一个基于 Transformer 架构的字符级语言模型。尽管在实际应用中,大多数人更倾向于使用 Hugging Face 的预训练模型,但本文的目的是让你了解语…...
苹果签名的工具有哪些
嗯,用户问的是关于苹果企业签名的工具有哪些。首先,我需要确认用户的需求。苹果企业签名通常指的是使用苹果的企业开发者账号(Apple Developer Enterprise Program)来对应用进行签名,这样应用可以不通过App Store直接分…...
解决.net接口防暴力调用问题
在 .NET 中,为解决接口防暴力调用问题,可通过限制请求频率实现。下面给出几种不同实现方式。 基于内存的简单速率限制 此方法适用于单服务器环境,它借助内存字典来记录每个客户端的请求次数和时间。 MemoryRateLimitMiddleware.cs using …...
java设计模式-桥接模式
桥接模式(Bridge) 基本介绍 1、桥接模式(Bridge)是指:将实现与抽象放在两个不同的类层次中,是两个层次可以独立改变。 2、是一种结构设计模 3、Bridge模式给予类的最小单元设计原则,通过使用封装,聚合及继承等行为让不同的类承担不…...
cdw2: TypeScript
一、javascript的问题 二、初识typescript https://mp.weixin.qq.com/s/wnL1l-ERjTDykWM76l4Ajw 三、类型 二进制:ob开头,八进制:0o开头,十六进制:0x开头 开发中不这样写 这样写 匿名函数的参数最好不要…...
Linux驱动开发:SPI驱动开发原理
前言 本文章是根据韦东山老师的教学视频整理的学习笔记https://video.100ask.net/page/1712503 SPI 通信协议采用同步全双工传输机制,拓扑架构支持一主多从连接模式,这种模式在实际应用场景中颇为高效。其有效传输距离大致为 10m ,传输速率…...
Java 通过 JNI 调用 C++ 动态库的完整流程
介绍使用 JNI 调用 C 编写的动态链接库的全过程。 示例环境 项目说明JDK8C 编译器Visual Studio 2019Java 开发工具IntelliJ IDEA 2021.3操作系统Windows 10 Java 项目结构概览 编写 Java 类 在 org.jni.nativejni 包下创建类 HelloWorldJni.java: package org…...
oracle 11g密码长度和复杂度查看与设置
一 查看当前的密码复杂度设置 SELECT * FROM dba_profiles WHERE resource_name PASSWORD_VERIFY_FUNCTION; LIMIT表示分配给该 PROFILE 的密码验证函数名称。如果为 NULL,表示未设置密码验证函数。 #查看是否有相关密码验证函数 select object_name from dba…...