本文目录一览

1,设堆栈指针SP的初值为2000HAX4589H执行

PUSH BX后,SP=1996HPUSH AX后,SP=1992H,AX=4589H,BX=9988H,CX=5522HPOP CX后,SP=1996H,AX=4589H,BX=9988H,CX=4589H

设堆栈指针SP的初值为2000HAX4589H执行

2,关于ARM的堆栈指针设置

随意的,哪都没所谓,但是定义较大的地址,以免与程序代码的地址冲突

关于ARM的堆栈指针设置

3,创建一个空栈的时候栈底指针的值

printf("%d ", *p); p是一个结构体指针,*p 是整个结构体,而整个结构体是不能直接输出的,不能这样直接用,要看他里边有什么成员才能输出,如果结构体有个data成员的话,应该这样写 p->data;

创建一个空栈的时候栈底指针的值

4,51单片机堆栈指针一般设置多少

51单片机堆栈指针一般设置80H。单片机复位后,堆栈指针SP为07H,指向了工作寄存器组0中的R7,用户初始化程序都应对SP设置初值,一般设置在80H以后的单元为宜。

5,设堆栈指针SP的初始值为1000HAX2000HBX3000H试问

刚开始是先压入AX,SP的值为AX-2:1FFEH,然后执行PUSH BX后,压入BX,SP的值为BX-2:2FFEH,至于之后在执行POP AX的话……什么变化都没有……因为题目有问题……
push ax 使sp-2 也就是说1000h-2=0ffeh

6,关于ARM编程中堆栈设置的问题

汇编和C不同。前者执行的时候并非要求一定要有个堆栈来帮忙,因为它可以直接访问寄存器,所以假如寄存器够用的话,它可以在需要使用堆栈的地方用寄存器来代替;C就不一样了,它的执行必须要求有一个堆栈。你知道的,每次C函数的调用,都会在堆栈里,产生一个stack frame。假如你觉得一个人学习比较痛苦,那你可以去逛逛网上的各大专业论坛。当然,也可以参与我们JulianTec为大家学习准备好的 Mail list。你可以搜一下,我们觉得这个比论坛更有效率。

7,对栈的指针参数的写法方式求助急急急

这个是栈的数组表示法。你要出栈,当然是先把元素输出,然后再把数组缩小,即就是top减1。所以,出栈是x=v[top];top--;进栈就反过来呗。你要先把数组扩大,才有数组空间存数据嘛。所以是top++;v[top]=x;如果是指针表示的,那要稍微麻烦一点。但道理都是一样的.如果对你有帮助,请及时采纳。如果有疑问,请随时追问。谢谢!
改成如下这样:试试,应该是VC的问题,VC可能对C++标准支持不太好,我没用过VC,猜测的。void InitStack(SqStack * *s) *s=(SqStack *)malloc(sizeof(SqStack)); (*s)->top=-1;}

8,arm堆栈设置

汇编和c不同。前者执行的时候并非要求一定要有个堆栈来帮忙,因为它可以直接访问寄存器,所以假如寄存器够用的话,它可以在需要使用堆栈的地方用寄存器来代替;c就不一样了,它的执行必须要求有一个堆栈。你知道的,每次c函数的调用,都会在堆栈里,产生一个stack frame。假如你觉得一个人学习比较痛苦,那你可以去逛逛网上的各大专业论坛。当然,也可以参与我们juliantec为大家学习准备好的 mail list。你可以搜一下,我们觉得这个比论坛更有效率。
两个的区别是SP指针指向的位置不一样。SP指针要指到RAM的地址。查查你用的控制器,片内RAM的映射地址是多少,一般片内RAM的最高地址作为SP指针的初始地址。

文章TAG:armarm  各个  模式  
下一篇