我正在学习汇编语言并且对程序的语法有疑问。 (我正在使用VS 2012)。
对于主程序,如果线路主要PROC'在' .data'之前插入,会发生错误。
.data
.code
main Proc
;some code
main ENDP
local1 Proc
.data
.code
ret
.local1 ENDP
END main
但对于主要的其他本地程序,它适用于' .data'宣布程序后。
有人可以向我解释原因吗?
P.S。也是装配lanaugage不受欢迎?我已经学会了很少的java和c ++并与它们进行比较,谷歌上的讨论和搜索次数要少得多。
答案 0 :(得分:1)
将汇编程序想象成一个读取输入源并将(发出)写入两个输出通道的机器:一个用于可执行代码,另一个用于数据。 段开关指令 .data 和 .code 告诉汇编器应该在哪里写入发出的信息。 使用指令 .data 实际命令你的汇编程序:停止向当前的当前输出段发出,切换到段.data并继续在下一个空闲空间(原点)写入该段,你最后一次活动时离开它的地方。
源文本中的.code和.data段之间的交替有利于程序的可读性,它允许使代码过程接近其操作的全局数据。另一方面,当编译的程序被加载到存储器中时,所有过程必须在一个代码段中链接在一起,并且所有数据在数据段中保持在一起。操作系统通常不允许执行标记为" data"的段的任何指令,并将任何数据写入标记为" code"的段。这就是程序员在发出任何可执行语句之前切换到 .code 的责任。