新手汇编里关于4个段寄存器的问题
发布网友
发布时间:2022-08-20 19:19
我来回答
共2个回答
热心网友
时间:2023-11-09 05:24
嘿嘿 还是俺来帮你解答吧
1 cs是存放程序段首地址的寄存器 该段地址从CS*16开始 有64K空间可以存放用户的程序代码
比如 MOV AX,267 这条指令 就是存在从CS*16开始的代码段中的。
267是指令中的操作数 和指令是一体的 都存在代码段中。
不可当作独立的数据而进行单独存储的。
2 DS是数据段的段寄存器、ES是附加段的段寄存器、SS是堆栈段的段寄存器。
3 数据段可以用来存放用户的数据 包括各种表格数据 堆栈段用来存放用户子程序调用和中断程序产生的断点地址和临时数据的。附加段是存放用户的备用数据等的。
4 数据段里的数据是用户自己 定义的
如 sum dw 1234H
a db 67
呵呵 别往给俺加分哦 有问题可以继续问追问还有个问题在C里面局部变量是放在栈里面,malloc系列是在堆里开辟空间,在汇编里的栈和堆也是这个意思吗
追答是的
热心网友
时间:2023-11-09 05:25
微机原理中的存储空间地址,有 1M 个单元,管理起来,不方便。
分成一段一段的,就方便了。
每一个段,最大可以是 64K 个单元,这就至少可以分成 16 个段。
在 CS、DS、ES、SS 里面,你可以存放一个段的起始地址,(当然,也可以是操作系统为你分配地址。)
每个段里面的内容,你可以用 DB、DW 等伪指令,写入数据。
程序段里面,你应该写入各种指令,然后由编译软件,帮你编译成机器码,再存放到程序段。
到我的百度空间看看吧,有许多 80x86 的汇编程序。