1

我想在 HCS12 微控制器汇编语言中插入二叉搜索树。我首先得到这些值,它们位于某些地址中。例如; 让我假设给出的数字分别是 5-3-8-9-1。让我假设我们从第 300 个地址开始。因此数字的地址是301,302,303,304,305;分别。根据这个二叉搜索树;我们可以理解,5 是根,3 是 5 的左孩子,8 是 5 的右孩子,9 是 9 的右孩子,1 是 1 的左孩子。这是结果对应的树。5 / \ 3 8 / \ 1 9

现在,我想编写一个汇编代码来存储其 eft 和 right 孩子的地址的值。我的程序的结果应该将以下输出写入内存:(第一个值)(其左孩子的地址)(其右孩子的地址)(第二个值)(其左孩子的地址)(其右孩子的地址) …………

因此,据此;程序应将以下输出写入内存中的某处:

05 03 02 03 03 03 03 04 00 00 08 00 00 03 05 09 00 00 00 00 01 00 00 00 00 ===> 00 00 表示没有左孩子或右孩子。

这是我第一次尝试编写它的汇编代码:

 ORG $300
  DC.B 05,03,08,09,01   ; Here we get the values and store them in memory adresses from       301 to 305

 Entry:
  LDS #$500
  LDX #$301
  LDAA 0,X
  STAA $401

 CreateTree:
  LDAA [0,X]
  LDAB [1,X]
  CBA
  BCS WriteLeftChild
  BSR writeRightChild

 writeLeftChild:
  CMPB #$00
  BEQ Exit
  LDAA [1,X]
  STAA 5,X

  Increment ??
  BSR CreateTree

writeRightChild:
  CMPB #$00
  BEQ Exit
  LDAA [1,X]
  STAA 10,X

  Increment ??
  BSR CreateTree

Exit:
  RTS

谁能帮我解决这个算法?谢谢

4

0 回答 0