HC12,存储数据并对数据执行OR

时间:2013-04-19 00:01:43

标签: assembly

问题是

编写一个汇编程序,它在存储器中的变量中存储可执行文件的第一个字节 程序本身的一部分(用机器语言表示)或者用11110000(2。这个程序 应该独立于加载的位置给出正确的结果。

解决方法是

; Prepared for Metrowerks Codewarrior v3.

    include preamble.inc    ; Do not change this line.

;******************************************************************
;* Your main program instructions must immediately follow the     *
;* label "ENTRY".  This label must not be changed.                *
;******************************************************************

; Data Declarations Follow:
      org   $0000

; Main Program :
      org   $0800       
ENTRY:
START     ldaa     START       ; A <== (M[START])    

      oraa    #%11110000  ; A <== (A) OR %11110000


; Halt execution
    swi
    nop

; Subroutine Area Follows:
    org $0A00

; Physical end of the program:
    end

现在我的问题是,我不明白这是做什么的。例如,

START ldaa START

什么是加载到累加器a?是加载数据START并用数据START调用地址START?那么,START如何加载到累加器a?你可以在那里加载角色吗?

也不明白OR的目的。可能有一个重要的概念我应该选择这个,但我不知道那是什么

HC12手册:http://www.eng.uwo.ca/electrical/e-shop/micros/HC12%20CPU12%20Reference%20Manual.pdf

1 个答案:

答案 0 :(得分:1)

这一行有几个部分:

START ldaa START

START是一个标签。然后是指令ldaa及其操作数,即对刚刚声明的START标签的引用。

ldaa指令在累加器A中加载在操作数中指定的地址处找到的字节。在这种情况下,这意味着加载START标签后的第一个字节。

oraa只是执行问题陈述指定的OR操作。