问题问
编写一个汇编程序,它将程序本身的可执行部分的第一个字节存储在内存中的变量中(用机器语言表示)或用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?它是否加载数据开始,并调用地址开始与数据开始?此外,如何开始加载到累加器a?你能在上面加载字符吗?
也不明白OR的目的。也许有一个重要的概念,我应该从中挑出来,但我不知道那是什么。
HC12手册:http://www.eng.uwo.ca/electrical/e-shop/micros/HC12%20CPU12%20Reference%20Manual.pdf
发布于 2013-04-19 00:26:22
这一行有几个部分:
START ldaa START左边的START是一个标签。然后是指令ldaa及其操作数,这是对刚刚声明的START标签的引用。
ldaa指令用在操作数中指定的地址处找到的字节加载累加器A。在这种情况下,这意味着加载在START标签之后找到的第一个字节。
oraa只是在执行问题语句指定的OR操作。
https://stackoverflow.com/questions/16095074
复制相似问题