汇编笔记二

Zemax实战录——非序列模式下的微透镜阵列仿真与优化 本文详细介绍了在Zemax非序列模式下进行微透镜阵列仿真的完整流程与优化技巧。文章重点阐述了从序列模式切换到非序列模式的必要性,并逐步指导如何搭建光源、阵列与探测器的仿真环境。核心在于通过调整圆锥系数等关键参数优化像差,并增加光线数以提升仿真精度与均匀性,为光学设计提供可靠依据。 阅读详情

汇编笔记二

汇编笔记一

内存访问

关于计算机内存访问,不能不说到计算机的内存分段,分页(学了操作系统的小伙伴应该都知道)。计算机的内存寻址和访问都要通过段表和页表的转换,将逻辑地址转换成物理地址,再进行磁盘读写,它的一个重要的转换原则就是“段基址*16+偏移地址=目的地址”。

在计算机中,内存被分为四个区,代码区,数据区,堆区,栈区。各自的作用就不细说。在汇编语言中,区又可以被称为段,前面讲寄存器的时候讲到了它有段寄存器,它用于段基址的存储,指针寄存器则用于偏移地址的存储,计算机利用上面的转换原则和两类寄存器对内存进行访问。

#小例子,汇编语言的内存访问
mov ax,0000;
mov ds,ax;
mov [1],ax;
#表示将ds(内存基址)设置为0000,并将0000送到0000:1-0000:2处,ax为16位寄存器,而一个内存单元为1byte(8位)
#[adderss]表示以ds为段基址,第address个内存单元的位置

内存寻址访问(分享转载)

字和字节

在计算机中,数据的大小用字(word)和字节(byte )来表示,分别表示16位(在16位环境下)和8位数据,在汇编语言定义数据时,通常用db,dw,dd来分别表示定义了8位,16位,32位的数据。
来自汇编语言第三版 王爽

代码段

对于8086PC机,在编程时,可以根据需要,将一组内存单元定义为一个段。我们可以将长度为N(N≤64KB)的一组代码,存在一组地址连续、起始地址为16的倍数的内存单元中,我们可以认为,这段内存是用来存放代码的,从而定义了一个代码段。
比如下例:

mov ax,0000
add ax,0123H
mov bx,ax
jmp bx

这样就定义了一个代码段。
来自汇编语言第三版 王爽
cs:ip即刚刚说的段基址:偏移地址的内存访问方法。

栈段

栈是一种广泛应用的数据结构
来自汇编语言第三版 王爽

来自汇编语言第三版 王爽
栈段的基址寄存器是ss寄存器,指针寄存器是sp。
通常用的指令有pop和push,分别代表出栈和入栈。

#小例子,对栈里的数据进行操作
mov ax,1000H
mov ss,ax   #设置栈段地址,它不能直接传入数据,所以用ax寄存器做中转
mov sp,0010H    #设置栈顶的偏移地址,在栈为空时,栈指针指向栈底下一个内存单元
#下面这一段程序实现ax寄存器和bx寄存器内容的交换
push ax  #压入ax
push bx  #压入bx
pop ax	#弹出栈顶,即bx的数据到ax中
pop bx	#同上

小结

计算机通过一系列相关的机制来进行对内存的访问,让我们稍稍理解了计算机的基操原理(读写访问)。汇编语言相比以往的高级语言带给我们的是更接近底层的编程体验,能直接对机器进行操作(真正cpu运行还是要编译成二进制代码,这里只是说能操纵寄存器等底层物件)。

VSCode+PlatformIO新建工程卡成狗?3步提速大法实测有效(附镜像源配置) 针对VSCode+PlatformIO新建工程时因依赖下载缓慢导致的加载慢问题,本文提供了三步核心提速方案。通过配置Python环境变量、修改PlatformIO插件设置以使用国内镜像源,并优化pip配置文件,实测可大幅缩短工程创建时间,有效解决创建工程卡顿的痛点。 阅读详情

相关推荐

QtWebApp的使用【在Qt中搭建HTTP服务器】(一)

用Qt和QtWebApp能够实现在C++中开发HTTP Web服务器应用程序。 首先,需要先安装Qt的软件开发工具包。点此下载 其次,下载最新的QtWebApp库。点此下载 下载并解压缩QtWebApp ZIP文件。你将会看到: 如何使用QtWebApp 1)将QtWebApp.zip文件解压到文件夹中,并创建一个名为“ MyFirstWebApp”的新Qt控制台项目。然后,建立如下文件结构: 2)将以下行添加到MyFirstWebApp项目的项目文件中: QT += network include(

饭的笔记本 2万+

8086汇编语言——交换寄存器中的内容

;交换ax和bx中的值 assume cs:code ;假设cs的值是code code segment ;定义一个段的开始 mov ax,2000h mov ss,ax mov sp,0 add sp,10 ;在Debug中跟踪执行,可以看到mov ss,ax和mov sp,0是必须一起执行的,不能打断。 mov ax,1 ;初始化ax和bx mov bx,2 push ax .

zy010101博客 5538

vmware虚机Debian10磁盘空间无损扩容

该方法不适和LVM的磁盘管理 备份 一定要先做备份,虚机中直接创建一个快照备份 vm上增加空间 初始给的40G空间不够需要扩容,vm那给系统添加到100G 重新分区 查看当前分区情况 sudo fdisk -l

lms99251的博客 7455

汇编语言中利用堆栈对于两个寄存器的值进行交换

汇编语言中利用堆栈对于两个寄存器的值进行交换。

qq_54186956的博客 5498

基于Halium 9为小米平板4移植Ubuntu Touch:内核适配与驱动调试实战

在移动设备生态中,Linux内核作为核心,通过硬件抽象层(HAL)管理底层硬件驱动,为上层系统提供统一接口。其模块化设计允许深度定制,是实现跨平台移植的技术基础。Halium项目正是利用这一原理,构建了一个中间层,将安卓内核的硬件支持能力“翻译”成标准Linux发行版能识别的格式,从而在手机、平板等移动设备上运行Ubuntu Touch、postmarketOS等移动Linux系统,极大地拓展了老旧设备的再利用价值。这一技术为开发者提供了在常见安卓硬件上进行Linux系统开发与定制的可能,尤其在嵌入式与物联

weixin_42639246的博客 371

深入剖析STM32F103 I2C总线死锁问题及高效应对策略

本文深入剖析了STM32F103硬件I2C总线在轮询模式下发生死锁的根本原因,即硬件状态机的预取机制与软件响应速度不匹配。文章提供了高效的解决方案,包括在轮询模式下提前发送NACK/STOP信号、降低总线速度,以及治本的中断与DMA应用策略,帮助开发者根据项目需求选择最合适的方案,彻底解决这一经典硬件缺陷问题。

weixin_29184371的博客 206

汇编-通过子程序交换两个内存变量

交换两个内存变量相信大家都不陌生,核心的代码就是:;交换[esi],[edi]两个内存变量 mov eax, [esi] xchg eax, [edi] mov [esi],eax然而现在我们要通过用汇编编写一段子程序来调用这个子程序来实现交换两个数,我们定义主函数给子函数传递的参数是以地址的形式(指针),传递需要交换的两个内存变量。 源程序如下:;功能:使用子程序交换两个内存变量 ;作者:王文堃

wenkun_wang 3305

别再乱删文件了!修复Print Spooler服务自动停止的3个关键检查点(附Win10/Win11实测)

本文深入解析Windows系统中Print Spooler服务自动停止的常见原因及修复方法。从第三方驱动冲突、权限与服务依赖关系到打印队列积压,提供3个关键检查点的详细排查步骤,帮助用户彻底解决打印服务异常问题,适用于Win10/Win11系统。

weixin_31569671的博客 672

汇编语言:编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)

代码】汇编语言编写一程序,将内存中某一区域的数据传送到另一个区域中(要求用循结构,不考虑数据块重叠问题)

aa543928678的博客 3175

YOLOv11改进策略【卷积层】| CVPR2025 GBConv轻量门控瓶颈卷积 低秩瓶颈降参 + 门控聚焦形态,强效捕捉纤细目标

裂缝形态不规则、纹理纤细,传统卷积参数大、计算冗余,且无法动态聚焦裂缝形态;背景噪声强易干扰特征提取,需要轻量且能自适应聚焦裂缝形态的卷积单元,因此提出轻量门控瓶颈卷积 GBC。

Limiiiing的博客 851

论文复现《基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方案》

电力系统暂态电压稳定评估方案 摘要 本研究提出了一种基于最大李雅普诺夫指数的电力系统暂态电压稳定评估方法。通过分析相空间中相邻轨迹的收敛或发散特性,该方法能够提前判别系统稳定性。论文首先阐述了暂态电压稳定机理,详细介绍了最大李雅普诺夫指数的计算方法。针对IEEE-39节点系统,建立了仿真模型并获取不同故障场景下的数据。研究开发了完整的评估程序,包括数据预处理、相空间重构、指数计算等模块,并通过与时域仿真结果的对比验证了方法的准确性。实验结果表明,该方法能够快速有效地评估电力系统的暂态电压稳定性,为系统安全运

max500600的博客 187

汇编语言(一)

汇编语言介绍 可以说计算机是一堆由二进制数组成的在计算机刚出世的时候使用二进制写程序 打孔卡 原理就是一张纸你提前知道要在那打孔 通过打没打孔来表示数字(详细的自行百度)然后由于打孔机很麻烦 如果一个东西很繁琐那么就不会有人去做因为门槛太高就赚不了钱所以就出现了硬编码 硬编码就是把打孔卡封装了一层 把二进制数封装为十六进制(目前默认十六进制)比如1000 使用打孔卡就要写1010封装了一层就变成了8这样的一个效果 然后这样还是很麻烦就出现了汇编 汇编就是把十六进制数据封装成了英语单词比如add eax,

计算机王的博客 584

42、Windows Server Update Services(WSUS)全面指南

本文全面介绍了Windows Server Update Services(WSUS)的安装、配置、管理与优化策略。内容涵盖WSUS基础认知、客户端更新问题解决、多服务器架构设计、计算机分组策略、更新审批与报告查看,并深入探讨了SSL加密配置、性能优化、与其他系统(如AD和SCCM)集成以及常见故障排查方法。通过本指南,IT管理员可高效部署和管理企业级软件更新,提升安全性和运维效率。

cicd6pipeline的博客 98

汇编学习笔记(二)

一起学汇编汇编学习笔记(二)机器语言与汇编语言存储器总线地址总线数据总线控制总线汇编语言的组成汇编语言到机器语言(二进制代码) 汇编学习笔记(二) 机器语言与汇编语言 早期的程序使用纸带上打孔来表示01序列这种方式编写, 这种方式编写的二进制序列就是机器语言. 后来出现了汇编语言,汇编语言使用助记符来代替二进制编码,降低了程序编写的难度。 如使用 mov ax, bx代替1000100111011000这样的二进制串。所以汇编语言本质上式机器语言的一种助记。 存储器 前面说了冯氏机器中指令(程序)和数据均存

weixin_41572011的博客 461

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

STM32F407中文手册

STM32f407中文手册 本参考手册面向应用开发人员,提供有关使用 STM32F405xx/07xx、STM32F415xx/17xx、 STM32F42xxx 和 STM32F43xxx 微控制器存储器与外设的完整信息。STM32F405xx/07xx、STM32F415xx/17xx、STM32F42xxx 和 STM32F43xxx 构成一个微 控制器系列,各产品具有不同的存储器大小、封装和外设。有关订购信息以及器件的机械与电气特性,请参见数据手册。有关 ARM Cortex™-M4F 内核的信息,请参见《Cortex™-M4F 技术参考手册》。

汇编笔记 二

内存地址空间(概述 #) 主板 在每一台PC机中,都有一个主板,主板上有核心器件和一些主要器件,这些器件通过总线(地址总线、数据总线、控制总线)相连。这些器件有CPU、存储器、外围芯片组、扩展插槽等。扩展插槽上一般插有RAM内存条和各类接口卡。 接口卡 计算机系统中, 所有可用程序控制其工作的设备, 必须受到CPU的控制。CPU对外部设备都不能直接控制, 如显示器、 音箱、 打印机等。 直接控制这些设备进行工作的是插 在扩展插槽上的接口卡。扩展插槽通过总线和CPU相连,所以接口卡也通过总线同CPU 相连。C

weixin_46546499的博客 210

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

GO 汇编学习笔记(二)

GO 汇编学习笔记(二) ​ GO 汇编学习笔记(一) ​ GO 汇编学习笔记(二) ​ GO 汇编学习笔记(三) 常量 程序中一切变量的初始化都直接或间接的依赖常量或者常量表达式生成,GO中很多是默认0初始化的,但是GO汇编中定义的变量最好还是手工通过常量初始化,有了常量就可以全局变量,并且使用常量组成的表达式初始化其它变量。 Go中常量通过$符号为前缀,常量的类型有整数、浮点、字符、字符串集中类型 $1 // 十进制 $0xf4f8fcff // 十六进制 $1.5

ysf465639310的专栏 845

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

汇编语言学习笔记二

汇编语言从源程序到可执行程序需要经历的过程有编译、连接。编译是通过编译器将源文件转化为,连接是将转化为这里解释一下源文件中除了汇编指令外,还包含着很多,这些伪指令是为了让编译器对汇编指令的处理,起到一个辅助的作用,所以当汇编器对源代码编译之后,所剩下的序。而则是要对程序进行再一次包装,使其包含更多的信息,以便能够使得CPU能将其写入内存中执行。

qq_49438230的博客 1117

ARM汇编学习笔记二

二、ARM的寻址方式 1.立即寻址  含义: 操作数包含在指令的32位机器编码中;  例如: ADD R0, R0, #5 ;R0 = R0 + 5 AND R1, R2, #0x01 ;R1 = R2 AND 0x01  注意: 立即数所占位数是12位(不明白请看上一节笔记)所以0x2345是不能作为立即数放入ARM指令中。  问题: 这个操作数2和寄存器里面的数据在ARM的CPU逻辑运算单元进行计算的时候这些数据都要转换成32位的数据,那么12位的立即数是如何在ARM硬件当中被转换成32的立即

qq_42791443的博客 525

汇编语言笔记(二)

1  完整表示内存单元需要两个信息:内存单元地址+内存单元长度.2 (ax)=((ds)*16+2)====>mov ax,[2]3 ((ds)*16+2)=(ax)====>mov [2],ax 4 (ax)=(ax)+2====>add ax,25 ax与[ax]的区别?mov bx,ax(bx)=(ax)   mov bx,[ax](bx)=((ds)*16+(ax)) 

贺新征的专栏 985

[汇编语言笔记篇]二:数据的表示

数据表示 常量的表达 常数 字符和字符串 符号常量 数值表达式 数据表达程序: 变量定义 变量定义结构: 变量定义伪指令: 变量定义的初值表 总结: 字节变量程序一(8位 byte): 字节变量程序二(16位 word): 字节变量程序三(32位 dword): 变量的应用 多字节变量存储顺序 变量属性 变量地址属性 变量类型属性

安全知识学习-该平台为唯一原作者平台,其他平台属冒名顶替,请勿相信上当受骗 2597

【OS学习笔记】二 汇编语言和汇编软件

上一篇文章讲解了处理器,内存,和指令。学习了Intel 8086处理器的相关知识,如Intel通用寄存器的作用,程序重定位问题,以及内存分段结构。点击链接查看上一篇文章:处理器 内存 指令 本片文章学习以下内容: 了解汇编语言的作用 下载NASM编译器,并学会使用它来编译汇编语言源程序 处理器依靠机器指令工作,但机器指令从形式上看是一堆没有规律的数字,难以书写、阅读和理解,这样就发明了汇编语言...

厚积薄发 2894

16位汇编学习笔记(二)——汇编语言的语句

语句的类型 指令语句:具有对应的机器码 伪指令语句:无对应的机器码 指示汇编程序如何汇编源程序,包括括号,变量,段的定义 宏指令语句:宏汇编中的宏指令语句,暂不介绍 语句的格式 指令语句:【标号:】 指令助记符 【操作数【, 操作数】】 ;注释 操作数:常数(数值表达式), 寄存器(寄存器名), 储存器操作数(地址表达式) 伪指令: 【名字】 伪指令定义符号 【参数【,参数】】 ;注释 伪指令定义...

qq_45554268的博客 1119

汇编寻址与消除歧义 -- 汇编学习笔记(二)

学完了C语言来学汇编,有一个容易困惑的地方,那就是如何去访问一个变量,怎么对其进行修改,运算。 在C语言中,我们有两种方式,取值和取值,可以直接 a+b,也可以用*a+*b 但在汇编中,更底层的认识让我们明白所谓的取值只是C语言的一个解释,想访问一个非立即数的元素,唯一的方法就是寻址,我们多种方式的目的就是为了找到我们需要变量的物理地址。 直接寻址:存储器 名字容易让人

加油哈 641

Windows 32 汇编笔记(二):使用 MASM

386把上面的 Win32 的 Hello World 源程序中的语句归纳精简一下,再列在下面:.386.data.codeend 开始标号start:;程序的入口点标号;...在宏定义中,可以使用local指令声明局部变量,以便在宏展开时为特定的数据或计算提供临时存储空间。局部变量在宏展开时被分配和使用,其生命周期与宏展开的时间段相同。;使用局部变量;使用局部变量ENDM子程序的定义(入口点)。

Flag少侠的博客 1万+

MASM汇编语言笔记(二)汇编语言基础

回车换行符 CR/LF 0dh,0ah 字符串以空字符0结尾 greetings BYTE "Good Morning",0 不初始化的值用?表示,例如 value BYTE ? DUP初始化多个字节,例如 array WORD 20 DUP(?) 遗留初始化伪指令DB,

zifei123的专栏 1176

汇编笔记(二)

2012/3/14 12-14栈:主要漏洞(1)内存中字的存储如在0地址处开始存放20000(4e20H)0 20H 低地址单元1 4eH 高地址单元 0 20H1 4eH2 12H则1地址存放的字型数据是124eH故有任何两个地址N和N+1将它们看成两个地址单元也可以看成一个字型数据 (2)mov al,[0] al存放一个字节8位 即为把一个内存单元的数据读到al中ds为段地址[0]中...

weixin_30488313的博客 72
上一篇: 汇编笔记一
下一篇: c++11多线程(1)
binary str
博客等级 码龄8年 18粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值