问题是
编写一个汇编程序,它在存储器中的变量中存储可执行文件的第一个字节 程序本身的一部分(用机器语言表示)或者用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
答案 0 :(得分:1)
这一行有几个部分:
START ldaa START
左START
是一个标签。然后是指令ldaa
及其操作数,即对刚刚声明的START
标签的引用。
ldaa
指令在累加器A中加载在操作数中指定的地址处找到的字节。在这种情况下,这意味着加载START
标签后的第一个字节。
oraa
只是执行问题陈述指定的OR
操作。