Assembly 在.data和堆栈上声明变量-ASM

Assembly 在.data和堆栈上声明变量-ASM,assembly,Assembly,我试图了解在哪些情况下,您希望在汇编程序的.data部分声明变量,并将其用于所需的过程,在堆栈上过度实例化局部变量,反之亦然。只是在.data部分声明变量只适用于较小的程序吗?在其他地方更改变量是否太容易,或者以随机值结束?在.data部分创建的变量可以从每个过程直接访问。局部变量只存在于特定的过程中,并且在过程结束时从堆栈中弹出。 “以随机值结束”的确切含义是什么?数据段变量是全局变量,堆栈变量是局部变量。数据段变量速度更快,因为您已经有了它们的偏移量。堆栈变量速度较慢,因为需要手动获取它们的

我试图了解在哪些情况下,您希望在汇编程序的.data部分声明变量,并将其用于所需的过程,在堆栈上过度实例化局部变量,反之亦然。只是在.data部分声明变量只适用于较小的程序吗?在其他地方更改变量是否太容易,或者以随机值结束?

在.data部分创建的变量可以从每个过程直接访问。局部变量只存在于特定的过程中,并且在过程结束时从堆栈中弹出。
“以随机值结束”的确切含义是什么?

数据段变量是全局变量,堆栈变量是局部变量。数据段变量速度更快,因为您已经有了它们的偏移量。堆栈变量速度较慢,因为需要手动获取它们的偏移量。当您使用寄存器(如SI、DI、BX(用于数据段)和SP、BP(用于堆栈)访问它们时,这两个变量都有被覆盖或随机化的风险。我的意思是,更容易在不同的部分意外使用它并破坏结果。当你声明变量时,你应该注意不要以错误的方式使用它。我有时会创建一些类似“前缀”的东西,例如,您的文件名为:memory.asm,然后我会将变量命名为memory\u VariableName或类似的名称。