累加器中的值是多少?
What is the value in the Accumulator?
这是一道单片机汇编语言考试的练习题,要求在执行完最后一行后,求出累加器中的内容。我不明白答案怎么是 $5C 如果有人对汇编有任何了解请帮助我!
START: LDA # ; load accumulator
STA 23 ; store accumulator to a memory address
CLRA
LDA # ; load accumulator
LDHX #20 ; load index register
SUB , X ;subtract accumulator using index register
ADD # ; add accumulator
START: LDA # ; load accumulator
- A=
STA 23 ; store accumulator to a memory address
- memory[23] =
CLRA
- A=[=10=] (redundant, as next instruction will load A again)
LDA # ; load accumulator
- A=
LDHX #20 ; load index register
- H:X=20
SUB , X ;subtract accumulator using index register
- this is addressing mode "Indexed, 8-Bit Offset" (indexed by H:X)
- target memory address is calculated as H:X+ = 23
- finally subtraction is done on A: A=A-memory[23] (-=)
ADD # ; add accumulator
- A=A+ (+=C)
注意 #$
与 $
(立即数十六进制值与内存 address/offset 十六进制值)以及汇编程序的整体语法(我实际上主要是在猜测哪个 CPU 和你正在使用的汇编器,看起来像 Freescale HCS08,但你应该知道得更多,我从来没有为类似的汇编器编写过代码),因为每个汇编器都可以有微妙的(不同的)细节如何编写某些机器指令,并且每个CPU 有不同的指令集(哪些指令可用以及如何使用它们有效地解决某些编程问题)。
因此您应该了解足够好的语法以正确评估特定行产生的指令,然后您可以查看指令集手册,了解该指令(及其变体)的确切作用。它也有助于练习调试器,实际编写一些小任务并在调试器中单步执行每条指令,将实际结果与您的假设进行比较。
这是一道单片机汇编语言考试的练习题,要求在执行完最后一行后,求出累加器中的内容。我不明白答案怎么是 $5C 如果有人对汇编有任何了解请帮助我!
START: LDA # ; load accumulator
STA 23 ; store accumulator to a memory address
CLRA
LDA # ; load accumulator
LDHX #20 ; load index register
SUB , X ;subtract accumulator using index register
ADD # ; add accumulator
START: LDA # ; load accumulator
- A=
STA 23 ; store accumulator to a memory address
- memory[23] =
CLRA
- A=[=10=] (redundant, as next instruction will load A again)
LDA # ; load accumulator
- A=
LDHX #20 ; load index register
- H:X=20
SUB , X ;subtract accumulator using index register
- this is addressing mode "Indexed, 8-Bit Offset" (indexed by H:X)
- target memory address is calculated as H:X+ = 23
- finally subtraction is done on A: A=A-memory[23] (-=)
ADD # ; add accumulator
- A=A+ (+=C)
注意 #$
与 $
(立即数十六进制值与内存 address/offset 十六进制值)以及汇编程序的整体语法(我实际上主要是在猜测哪个 CPU 和你正在使用的汇编器,看起来像 Freescale HCS08,但你应该知道得更多,我从来没有为类似的汇编器编写过代码),因为每个汇编器都可以有微妙的(不同的)细节如何编写某些机器指令,并且每个CPU 有不同的指令集(哪些指令可用以及如何使用它们有效地解决某些编程问题)。
因此您应该了解足够好的语法以正确评估特定行产生的指令,然后您可以查看指令集手册,了解该指令(及其变体)的确切作用。它也有助于练习调试器,实际编写一些小任务并在调试器中单步执行每条指令,将实际结果与您的假设进行比较。