2013-10-23 66 views
0

我想创建一个程序,它使用ADD.B,ADD.W和ADD.L将两个十六进制值相加在一起,并查看它们之间的区别。我是汇编程序设计新手,所以我似乎无法完全理解它。没有错误,但是当我运行该程序时,不显示任何结果。在寄存器D3中似乎也没有任何值。谁能告诉我我做错了什么?非常感谢您的帮助。用汇编语言(EASy68K)添加两个十六进制值

START ORG  $1000  Program starts at loc $1000 
     MOVE $374D1FC4,D2  [D0] <- $374D1FC4 
     MOVE $F22C4663,D3 [D1] <- $F22C4663 
     ADD.B D2,D3   [D1] <- [D0] + [D1] 
*  ADD.W D2,D3   [D1] <- [D0] + [D1] 
*  ADD.L D2,D3   [D1] <- [D0] + [D1] 
     MOVE D3,R 
* The following three instructions will display [R] to Output Window 
* Task number 3 of trap #15 is to display D1.L as a signed decimal 
    MOVE R,D1 [D1] <- R 
    EXT.L D1 Extend sign bit to presreve the sign 
    MOVE #3,D0 Assign task number to [D0] 
    TRAP #15 Ask "OS" to perform the task 

    STOP #$2700 Stop execution 

* Data section 
R DS.W 1 int R; 
    END START 

回答

1

Easy68K为您提供了有关该问题的是什么,当你尝试运行程序提示:“地址错误:指令在1006访问地址f22c4663”

这些行:

MOVE $374D1FC4,D2  [D0] <- $374D1FC4 
    MOVE $F22C4663,D3  [D1] <- $F22C4663 

应改为:

MOVE #$374D1FC4,D2  [D0] <- $374D1FC4 
    MOVE #$F22C4663,D3  [D1] <- $F22C4663 

假设你想要加载立即值$374D1FC4$F22C4663

+0

也必须将其更改为MOVE.L,但现在可以使用。谢谢。 – Brett

相关问题