第三章——寄存器(内存访问)

为什么第三章还是寄存器?
很明显这一章和上一章并不相同,因为后面多了四个字。
很显然上一章,还有一些东西还没有讲完。
所以我们再来看一看第三章讲了些啥。

字单元:即存放一个字型数据(word,16位)的内存单元,由两个地址连续的内存单元(8位)组成。
DS(data segment)是数据寄存器,用于存储需要访问的数据。
[address]:这个是用于定位DS中的数据的,其中address为偏移地址,那么段地址呢?命令执行时,CPU会自动取DS中的数据,作为段地址。
如:

mov al, [0]

8086CPU不支持将数据直接送入DS,什么意思?也就是说,我们要想把数据送入DS,我们需要先将数据送入寄存器,再送入DS,如:

mov bx, 1000H
mov ds, bx

这里送入DS,不是指将数据送入数据栈,而是将地址送入ds指针。
如果是送入数据,需要这样做:

mov bx,1000H
mov ds,bx
mov [0],al

这里[]内只放了一个0,这里表示偏移地址,那么段地址呢?
此时CPU会将ds中的内容作为段地址,从而实现寻址。

刚刚只是进行字节型数据的传送(8bit),但是我们8086CPU是16位的,也就是说我们可以一次传送一个字,所以这里做个示范:(通过传入寄存器来实现字的传送)

mov bx,1000H
mov ds,bx
mox ax,[0]
moc [0],cx

这里提示一下,add和sub是不能对cs和ds操作的。

汇编指令补充:

sub A,B     //指将A中的值减去B的值

还有一个数据段的额概念,和前面的代码段类似,就不再赘述。
接下来是栈,栈的基本定义没有什么好讲的。
我们来看一下CPU提供的栈机制。
首先,我们对于栈有两个操作:

push A      //将A的数据放入栈中,A是寄存器或者[address]
pop A       //将栈顶的数据放入A中,A的含义同上

(注:push和pop的操作是对字的操作,以字为单位)
这也是两个非常简单的操作(基本上学过编程的人都知道)。
那么同样的问题来了,那么这个栈在哪呢?
CPU会将栈的数据放在内存的哪个位置呢?
所以这就涉及到另外两个寄存器了SS和SP
SS(stack segment),即栈寄存器。
和CS类似,SS中存放的是段地址,而SP存放的是偏移地址。
所以SS:SP指向的就是我们所使用的栈的栈顶元素
(栈顶字的低地址)
还有一点,栈底是一个栈空间的高位,也就是说该栈的指针随着数据的压入,是由高位指向低位。
比如:SS:SP指向1000EH,再压入数据时,SS:SP指向1000CH.
下面是一个非常重要的问题,就是栈空间只是我们自己YY的一个东西,CPU永远不知道我们究竟把哪一段看作是栈,也就是说,CPU不会报告给我们栈溢出的问题
栈满时,如果再次放入数据,就会覆盖与之相邻的其他内存
同样,栈空时,如果再次取数据,也会去到与之相邻的内存的数据。
所以,这个栈空间的问题只能由我们程序员自己注意了。
还有一个概念,栈段,应该都知道啥意思(仿照代码段和数据段),我就不讲了。
这样的话,第三章就这些了。

补充:debug时d命令的使用。
示例:d 1000:0 3
前面1000是段地址,后面则是偏移地址的范围。

在使用Python来安装geopandas包时,由于geopandas依赖于几个其他的Python库(如GDAL, Fiona, Pyproj, Shapely等),因此安装过程可能需要一些额外的步骤。以下是一个基本的安装指南,适用于大多数用户: 使用pip安装 确保Python和pip已安装: 首先,确保你的计算机上已安装了Python和pip。pip是Python的包管理工具,用于安装和管理Python包。 安装依赖库: 由于geopandas依赖于GDAL, Fiona, Pyproj, Shapely等库,你可能需要先安装这些库。通常,你可以通过pip直接安装这些库,但有时候可能需要从其他源下载预编译的二进制包(wheel文件),特别是GDAL和Fiona,因为它们可能包含一些系统级的依赖。 bash pip install GDAL Fiona Pyproj Shapely 注意:在某些系统上,直接使用pip安装GDAL和Fiona可能会遇到问题,因为它们需要编译一些C/C++代码。如果遇到问题,你可以考虑使用conda(一个Python包、依赖和环境管理器)来安装这些库,或者从Unofficial Windows Binaries for Python Extension Packages这样的网站下载预编译的wheel文件。 安装geopandas: 在安装了所有依赖库之后,你可以使用pip来安装geopandas。 bash pip install geopandas 使用conda安装 如果你正在使用conda作为你的Python包管理器,那么安装geopandas和它的依赖可能会更简单一些。 创建一个新的conda环境(可选,但推荐): bash conda create -n geoenv python=3.x anaconda conda activate geoenv 其3.x是你希望使用的Python版本。 安装geopandas: 使用conda-forge频道来安装geopandas,因为它提供了许多地理空间相关的包。 bash conda install -c conda-forge geopandas 这条命令会自动安装geopandas及其所有依赖。 注意事项 如果你在安装过程遇到任何问题,比如编译错误或依赖问题,请检查你的Python版本和pip/conda的版本是否是最新的,或者尝试在不同的环境安装。 某些库(如GDAL)可能需要额外的系统级依赖,如地理空间库(如PROJ和GEOS)。这些依赖可能需要单独安装,具体取决于你的操作系统。 如果你在Windows上遇到问题,并且pip安装失败,尝试从Unofficial Windows Binaries for Python Extension Packages网站下载相应的wheel文件,并使用pip进行安装。 脚本示例 虽然你的问题主要是关于如何安装geopandas,但如果你想要一个Python脚本来重命名文件夹下的文件,在原始名字前面加上字符串"geopandas",以下是一个简单的示例: python import os # 指定文件夹路径 folder_path = 'path/to/your/folder' # 遍历文件夹的文件 for filename in os.listdir(folder_path): # 构造原始文件路径 old_file_path = os.path.join(folder_path, filename) # 构造新文件名 new_filename = 'geopandas_' + filename # 构造新文件路径 new_file_path = os.path.join(folder_path, new_filename) # 重命名文件 os.rename(old_file_path, new_file_path) print(f'Renamed "{filename}" to "{new_filename}"') 请确保将'path/to/your/folder'替换为你想要重命名文件的实际文件夹路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值