我的老师希望我们对装配有基本的了解,因为在以后的道路上,这可能会有所帮助。我很好,但是我的大学除了提供4个小例子外,并没有提供关于这个主题的文档。我试图找出什么是在这其中发生了什么:这在装配中有什么作用
.DEVICE ATmega32
.CSEG
main:
ldi ZL,low(varclist<<1)
ldi ZH,high(varclist<<1)
.CSEG
varclist:
.db 1, 2
.db 3, 4
.db 5, 6
.db 7, 8
.db 9, 0
我感到在AVR Studio的5个工作,看着“处理器”选项卡。我似乎无法找到'varclist'中的值与寄存器显示的十六进制值之间的任何关系。我如何看待这个?
我期望Z寄存器包含0x0100,因为我可以想象'最重要'位是第一个声明的,而最后一个声明是最不重要的。然而,我看到0x0070。不过,我不确定这种转变的效果。
因为它是你的家庭作业,我认为你应该添加该标签。出于同样的原因,告诉你到底什么代码可能不是最好的方式来帮助你。你能说出你认为应该出现在你的登记册上吗?你得到的价值是什么?一旦你这样做了,我们当然可以解释你的推理有什么问题:) – 2012-01-17 21:02:42
这很公平,我不想找到答案,我想了解。我会添加更多信息。 – Lg102 2012-01-17 21:05:57
我建议组装,然后拆解代码。然后查看avr指令集手册了解每条指令的信息。您应该能够在avr指令集文档和atmega32数据手册/手册中的核心/ cpu章节之间找出z寄存器是什么,它如何映射到gprs以及指令实际上是如何编码的。从那里开始向后汇编到汇编语言 – 2012-01-17 21:36:00