Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.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 使用Z寄存器从数据空间加载值?_Assembly_Avr_Atmega - Fatal编程技术网

Assembly 使用Z寄存器从数据空间加载值?

Assembly 使用Z寄存器从数据空间加载值?,assembly,avr,atmega,Assembly,Avr,Atmega,我是AVR汇编编程新手,理解以下代码有困难 .include "m328Pdef.inc" main: ldi r22, 0x20 sts 0x0100, r22 ldi zh, 0x01 ldi zl, 0x00 ldi r20, 0x05 clr r22 ld r22, z clr r16 ser r16 out DDRB, r16 out DDRC, r16 out PortB, r30

我是AVR汇编编程新手,理解以下代码有困难

.include "m328Pdef.inc" 
main: ldi r22, 0x20
    sts 0x0100, r22
    ldi zh, 0x01
    ldi zl, 0x00
    ldi r20, 0x05
    clr r22
    ld r22, z
    clr r16
    ser r16 
    out DDRB, r16 
    out DDRC, r16 
    out PortB, r30 
    out PortC, r31 
    ret
该计划的目标如下:

编写一个汇编语言程序,从数据中获取数字 内存地址为0x0100的空间。输出结果的低位字节 将结果的高位字节发送到端口B和端口C。(使用寄存器z 获取数字)

具体地说,在第9行(ld r22,z),寄存器z指向的值(即32)是否加载到r22中,或者指针本身的内存地址是否加载到r22中

此外,在第6行(ldi r20,0x05),该寄存器的意义是什么?它似乎没有在程序中的其他任何地方使用

如能对该计划的细节作一般性解释,将不胜感激。谢谢

具体地说,第9行(ld r22,z)是寄存器z的值 指向正在加载到r22中的32,或者是内存 正在加载到r22中的指针本身的地址

与往常一样,请参考指令集参考。 此外,一点思考也会引导你找到正确的答案。显然,如果它是地址,那么它只是从
z
r22
的简单转换,这没有什么意义。此外,目标描述清楚地说明从数据空间加载值

此外,在第6行(ldi r20,0x05),该寄存器的意义是什么? 它似乎没有在程序中的其他任何地方使用


事实上,这是毫无意义的。正如
ldr r22
之前的
clr 22
ser 16
之前的
clr 16
一样。此外,该任务从未要求先写入内存。

FYI,我确实查阅了指令集参考。谢谢你的信息,但是否决票是不必要的。