2013-11-22 174 views
-1

我对汇编语言很陌生,这基本上是我第一次接触它。我试图了解这些代码如何像Pre-Execution Mapped Memory和Post-Execution Mapped Memory一样工作。我知道格式化在装配中很重要,我已经在asmIDE中格式化了代码,但当我粘贴它时,它变得混乱了。万一你们想知道它是编译和调试,我能得到 https://db.tt/rudh5oBZ (image)有人可以向我解释这个汇编代码吗?

为执行前的调试,但我不知道它是如何工作。我需要一些清晰度。

也可以有人澄清这些关键字:dw,区别$和no $,staa,swi,std?谢谢。我正在为Dragon12微控制器写这篇文章。

  org  $1000 ;start at ram 

    Val1 dw  $1234 
    Val2 db  16 
    Val3 dw  1234 

    Val4 equ  $06 


      org  $1020 

    Res0 ds  1 
    Res1 ds  1 
    Res2 ds  2 
    Res3 ds  1 
    Res4 ds  2 

    org  $2000 ;start at rom 

    ldaa Val2 

    staa Res0 
    ldab #Val4 
    stab Res1 
    ldd  Val3 
    stab Res2 
    ldaa $1001 
    std  Res2 
    staa Val3+1 
    swi 

    end 
+1

明确需要 - 首先告诉我们你正在写的处理器。 – 2013-11-22 02:19:49

+0

dragon 12 hcs12 – answerSeeker

回答

0

$是一个前缀,表示后面的数字是十六进制形式。否则,该数字是十进制形式。

dw“define word”是定义一个两字节内存块的指令。 dw后面的数字是程序启动时该内存的初始值。

db“define byte”与dw类似,但指定一个字节。

我不知道“龙”汇编语言,但这些对许多汇编程序来说是很常见的指令。但实际的汇编指令是特定于CPU。我可以猜到staa,swi,std是什么意思,但不会。你应该能够很容易地看到它们。

+0

'ldab#Val4'和'ldab Val4'有什么区别? – answerSeeker

+0

ldab#Val4表示将数字6(记住Val4由equ定义为$ 06的同义词)加载到累加器B寄存器中。 ldab Val4表示将地址为6的内存内容加载到该寄存器中。 –

相关问题