汇编语言中可以定义变量吗?怎么定义?有局部变量和全局变量之分吗?作用域是什么?
1个回答
展开全部
汇编语言定义变量的格式为 【变量名】【变量类型】【数值列表】
其中 变量类型有 DB DW DD等,分别表示变量占有的内存空间(依次为1,2,4个字节)
如:A DB 1,2,3,4 就定义了名称为A的4个占1个字节的变量,分别是1,2,3,4(严格来说是0001,0010,0011,0100) 保存在系统分配的内存空间中
如果是A DW 1,2,3,4则保存的值为(00000001,00000010,00000011,00000100)
由于汇编语言是面向机器的语言,没有对函数的定义,函数的实现是通过中断调用的,(一个代码段跳到另外一个代码段) 所以对全局变量和局部变量的体现是通过栈来实现的,即:
全局变量保存在数据段中,即伪代码中声明的DATA SEGMENT,任何时刻都能调用。
而局部变量则保存在栈段中,是伪代码中声明的STACK SEGMENT,平时不调用,调用中断时把局部变量从栈里取出来...
有疑问请追问,望采纳
其中 变量类型有 DB DW DD等,分别表示变量占有的内存空间(依次为1,2,4个字节)
如:A DB 1,2,3,4 就定义了名称为A的4个占1个字节的变量,分别是1,2,3,4(严格来说是0001,0010,0011,0100) 保存在系统分配的内存空间中
如果是A DW 1,2,3,4则保存的值为(00000001,00000010,00000011,00000100)
由于汇编语言是面向机器的语言,没有对函数的定义,函数的实现是通过中断调用的,(一个代码段跳到另外一个代码段) 所以对全局变量和局部变量的体现是通过栈来实现的,即:
全局变量保存在数据段中,即伪代码中声明的DATA SEGMENT,任何时刻都能调用。
而局部变量则保存在栈段中,是伪代码中声明的STACK SEGMENT,平时不调用,调用中断时把局部变量从栈里取出来...
有疑问请追问,望采纳
追问
DB DW 不是定义一块内存区吗?用他们定义的变量A可以重新赋值吗?
追答
是定义一块内存区域,并且数量可以任意 例子就是上面给的 A是这一系列数据的起始地址
重新赋值只要把通用寄存器内的数据赋值给变量所在的对应内存地址就可以了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询