【发布时间】:2015-03-31 00:28:10
【问题描述】:
我正在尝试编写一小段汇编代码以通过 parwan 处理器测试台运行。汇编程序应使用循环将以下数字相加:8,6,4,19,24,7,2,12,1,3,9 并将结果存储在内存中的任意内存位置。
我对汇编没有太多经验,我相信这是 1993 年的语法。
--load 25 in 4:00
--load 10 in 4:01
--load 01 in 4:02
0:15 cla --clear accumulator
0:16 asl --clears carry
0:17 add , i 4:00 --add bytes
0:19 sta 4:03 --store partial sum
0:1B lda 4:00 --load pointer
0:1D add 4:02 --increment pointer
0:1F sta 4:00 --store pointer back
0:21 lda 4:01 --load count
0:23 sub 4:02 --decrement count
0:25 bra_z :2D --end if zero count
0:27 sta 4:01 --store count back
0:29 lda 4:03 --get partial sum
0:2B jmp 0:17 --go for next byte
0:2D nop --adding completed
我发现这是一个例子,但我不知道如何实现它。我如何编码要在某些内存位置加载的数字,就像我想说的那样 --load 8 in 4:00 并为我列表中的所有数字执行此操作?那么其余的代码会或多或少地满足任务,尽管可能会增加几行?
【问题讨论】:
-
从 Internet 复制/粘贴代码很少能奏效。梳理逻辑,自己编写一些代码,而不是尝试修改您已经不理解的某人的代码。
-
你是对的。但是可用的指令集不包括将值加载到内存中的功能,只是累加器?或者在我开始我的主要代码之前,我是否需要单独加载这些值然后存储它们?习惯用C
-
这是 x86 程序集吗?查找
mov指令。 -
不,它是编写一个非常简单的 16 位 parwan 处理器的 VHDL 描述。只有看似 17 条指令可用,加载累加器,添加子跳转分支清除等。非常基本,只是不知道某些东西的标准格式。
-
你能指点我一份规格表、操作码规格或类似的东西吗?