我想创建一个程序,使用ADD.B,ADD.W和ADD.L将两个十六进制值一起添加,看看有什么不同。我是汇编编程的新手,所以我似乎无法将它完全正确。没有错误,但是当我运行程序时,没有显示任何结果。寄存器D3中似乎也没有存储任何值。谁能告诉我我做错了什么?非常感谢您的帮助。
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
答案 0 :(得分: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
。