Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 此汇编代码中r10和r20的地址是什么?_Assembly_Avr - Fatal编程技术网

Assembly 此汇编代码中r10和r20的地址是什么?

Assembly 此汇编代码中r10和r20的地址是什么?,assembly,avr,Assembly,Avr,当我查看这个AVR汇编代码及其等效(部分完成)地址和二进制文件时,我无法确定哪些寄存器应该是r10和r20。我能弄清楚的是,至少我相信,寄存器X和Y分别是$004A和$004B 在AVR体系结构中,寄存器位于数据存储器空间的前32个地址,如下图所示 寄存器的地址可以用指令操作码中的5位来表示。要准确知道操作码中的5位在哪里,您必须查看并查看每个指令二进制 例如,如果您查看手册中的第115页,您将看到LDi指令的二进制翻译,它限制您只能访问上16个寄存器(从r16到r31),16只在4位中表示,

当我查看这个AVR汇编代码及其等效(部分完成)地址和二进制文件时,我无法确定哪些寄存器应该是r10和r20。我能弄清楚的是,至少我相信,寄存器X和Y分别是$004A和$004B


在AVR体系结构中,寄存器位于数据存储器空间的前32个地址,如下图所示

寄存器的地址可以用指令操作码中的5位来表示。要准确知道操作码中的5位在哪里,您必须查看并查看每个指令二进制

例如,如果您查看手册中的第115页,您将看到
LDi
指令的二进制翻译,它限制您只能访问上16个寄存器(从r16到r31),16只在4位中表示,因此它在第三个半字节中显示为d(d的缩写)“目标寄存器”)注意:如果dddd位从0000到1111取一个值,这将从r16映射到r31


我无法确定哪些寄存器应该是r10和r20

让我们手动将此代码
ClR R10
转换为操作码,以找出答案

在手册(第71页)中,您会发现
ClR
只是
EOR
(异或),这意味着

clr R10
; is same opcode as 
EOR R10,R10
现在尝试查找
EOR
翻译,而不是
ClR
,在手册(第91页)中,您将发现以下内容

EOR Rd,Rr
;will translat to 
;0010 01rd dddd rrrr
现在将
Rd
Rr
替换为
r10
r10
二进制格式为01010) 因此,输出将是

;be carful in bits location
;the bits are mixed
0010 01rd dddd rrrr  
0010 0100 1010 1010
这是CLR R10的翻译

现在试着自己翻译
ROR r20
(提示:
ROR
,第145页)


我能弄清楚的是,至少我相信,寄存器X和Y分别是$004A和$004B

这是不正确的,X Y和Z寄存器实际上是成对的r27:r26、r29:r28和r31:r30寄存器

间接存储指令
ST
将根据选择的对(x、y、z作为这些对的别名)为不同的操作码进行翻译,您可以在手册的第173-177页中看到它们


在AVR体系结构中,寄存器位于数据存储器空间的前32个地址,如下图所示

寄存器的地址可以用指令操作码中的5位来表示。要准确知道操作码中的5位在哪里,您必须查看并查看每个指令二进制

例如,如果您查看手册中的第115页,您将看到
LDi
指令的二进制翻译,该翻译限制您只能访问上16寄存器(从r16到r31),16仅在4位中表示,因此它在第三个半字节中显示为d(d的缩写)目标寄存器”)注意:如果dddd位从0000到1111取一个值,这将从r16映射到r31


我无法确定哪些寄存器应该是r10和r20

让我们手动将此代码
ClR R10
转换为操作码,以找出答案

在手册(第71页)中,您会发现
ClR
只是
EOR
(异或),这意味着

clr R10
; is same opcode as 
EOR R10,R10
现在尝试查找
EOR
翻译,而不是
ClR
,在手册(第91页)中,您将发现以下内容

EOR Rd,Rr
;will translat to 
;0010 01rd dddd rrrr
现在将
Rd
Rr
替换为
r10
r10
二进制格式为01010) 因此,输出将是

;be carful in bits location
;the bits are mixed
0010 01rd dddd rrrr  
0010 0100 1010 1010
这是CLR R10的翻译

现在试着自己翻译
ROR r20
(提示:
ROR
,第145页)


我能弄清楚的是,至少我相信,寄存器X和Y分别是$004A和$004B

这是不正确的,X Y和Z寄存器实际上是成对的r27:r26、r29:r28和r31:r30寄存器

间接存储指令
ST
将根据选择的对(x、y、z作为这些对的别名)为不同的操作码进行翻译,您可以在手册的第173-177页中看到它们


请不要发布文本图片,而是复制文本并将其粘贴到问题中,在第一行上方和最后一行之后加上
`
(反勾号),以便将其格式化为固定文本(或者您可以将所有文本缩进4个空格)。您的文本大约需要300字节的存储空间。相反,图像需要
72.24 KB(73969字节)
存储。非常抱歉,感谢您通知我重申David的评论,您是否可以编辑您的问题以包含文本?这将有助于其他人给您一个有针对性的答案,并真实再现您的问题。在AVR微控制器上,寄存器r0-r31对应于地址0-31(十进制)。“X“是r26和r27的组合(16位值)。“Y”是r28和r29的组合,“Z”是r30和r31的组合。“X”可能包含值$4A,但是,“X”的地址是26和27位小数。请不要发布文本图片,而是复制文本并将其粘贴到问题中,在第一行上方和最后一行之后添加
``
(反勾号),以便将其格式化为固定文本(或者可以全部缩进4个空格)。您的文本大约需要300字节的存储空间。相反,您的图像需要
72.24KB(73969字节)
的存储空间。非常抱歉,感谢您通知我重申David的评论,您能编辑您的问题以包含文本吗?在AVR微控制器上,寄存器r0-r31对应于地址0-31(十进制)。“X”是r26和r27的组合(16位值)。“Y”是r28和r29的组合,“Z”是