当前位置:编程学习 > 汇编语言 >>

新手汇编里关于4个段寄存器的问题

cs是存放程序段首地址的寄存器,这个程序段是什么意思呢?比如MOV AX,267,这里的267是属于程序段里的吗?DS,ES,SS这些放数据段的地址,所谓的数据段里的数据又是哪来的呢,267是在数据段里吗?求大神解释一下4个段寄存器的具体作用,比如每个段里的内容到底是哪来的?
追问:还有个问题在C里面局部变量是放在栈里面,malloc系列是在堆里开辟空间,在汇编里的栈和堆也是这个意思吗
答案:嘿嘿   还是俺来帮你解答吧
1  cs是存放程序段首地址的寄存器   该段地址从CS*16开始  有64K空间可以存放用户的程序代码
比如  MOV AX,267   这条指令 就是存在从CS*16开始的代码段中的。
267是指令中的操作数   和指令是一体的   都存在代码段中。
   不可当作独立的数据而进行单独存储的。
2  DS是数据段的段寄存器、ES是附加段的段寄存器、SS是堆栈段的段寄存器。
3  数据段可以用来存放用户的数据   包括各种表格数据   堆栈段用来存放用户子程序调用和中断程序产生的断点地址和临时数据的。附加段是存放用户的备用数据等的。 
4 数据段里的数据是用户自己 定义的 
  如          sum          dw     1234H   
                a              db      67
 
      呵呵      别往给俺加分哦     有问题可以继续问
其他:微机原理中的存储空间地址,有 1M 个单元,管理起来,不方便。
分成一段一段的,就方便了。
每一个段,最大可以是 64K 个单元,这就至少可以分成 16 个段。

在 CS、DS、ES、SS 里面,你可以存放一个段的起始地址,(当然,也可以是操作系统为你分配地址。)
每个段里面的内容,你可以用 DB、DW 等伪指令,写入数据。
程序段里面,你应该写入各种指令,然后由编译软件,帮你编译成机器码,再存放到程序段。

到我的百度空间看看吧,有许多 80x86 的汇编程序。 

上一个:fjewoijfowj的意思????
下一个:汇编语言中的20000转16进制是65536杂是4E20

CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,