汇编小段存储
‘壹’ 关于汇编语言存储器的分段 一小段的首地址是啥段起始地址怎么看出来16个字节是一小段
8086CPU的内存寻址方式是段地址*16+偏移地址的方式的方式 比如说00000H这个地址,他的段地址是0000H偏移地址是0000H。段地址0000h*16(10H)也就是00000H 加上偏移地址也是0000H就是00000H。一个段的空间最大是64KB 也就是偏移地址从0000H-FFFFH。有一点要注意:段地址*16必然是16的整数倍所以一个段的起始地址也应该是16的整数倍。但是好像并没有一个小段 的说法,段的提出只是我们在编程中的一种安排,比如我要在一个段中存放10个字节的数据,我们可以把123B0H-123B9H当作一个数据段,段地址为123BH,长度为10字节。
‘贰’ 急急急!!!汇编语言里面,代码段里面存储的是什么
代码段里面存储的确实是指令
但是要告诉你的是,无论数据段,代码段还是什么段,用的都是同一个存储空间,这个存储空间由基址和偏移地址确定位置,每个位置存储一个字节,也就是2位16进制数。机器会给代码段一个对应的首位置,然后你写的代码都会转成2位16进制数存入其中。
比如说我有1到50的存储空间,也就是50个字节,你的数据段对应首址是5,那么你在数据段中定义的数据会挨个存在5,6,7....中。如果你的代码段对应首址是30,那么你在代码段中写的一句指令“mov ax,bx”会转成16进制码(具体是什么我就不知道了,我曾经试过,好像没有十分准确的对应关系)存到30,31,32...的存储空间中。
不知道这样说你名不明白
‘叁’ 在ARM汇编编程中如何指定某段程序的存储地址
在要指定代码的存储空间不是一件特别简单的事情,尤其是你想为某个或某几个函数指定具体的地址。
1,编译器只有在最终的Link阶段才会为代码和数据分配内存地址,因此指定代码段的地址一般是通过写一个link脚本来进行的。Link阶段时,编译器的Linker会读取你写的Link脚本,并且按照脚本的规定给代码分配地址。
2,根据ARM开发工具的不同,link脚本的语法和形式也有所不同。ARM MDK,ARM ADS,Eclips+GCC,Linux GCC, ARM Realview等开发工具都支持Link脚本。
如果你英文还可以,建议你直接找到开发工具的Help手册去研究。如果你英语实在不行,也可以把开发工具名称和你代码的具体情况告诉我,我帮你看看。