【发布时间】:2016-01-13 16:29:02
【问题描述】:
我正在尝试创建一个微程序函数,给定堆栈中的 4 个值,交换第 3 个和第 4 个值。我称之为“mswap”,这是目前为止的微码:
mswap1 SP = SP - 1
mswap2 SP = SP - 1
mswap3 MAR = SP - 1
mswap4 rd
mswap5 MAR = H
mswap6 wr
mswap7 MAR = SP
mswap8 rd
mswap9 MAR = SP - 1
mswap10 wr
mswap11 MAR = H
mswap12 rd
mswap13 MAR = SP
mswap14 wr
mswap15 SP = SP + 1
mswap16 SP = SP + 1; goto Main1
这是一个示例程序:
.main 开始:BIPUSH 0x39 BIPUSH 0x30 BIPUSH 0x36 BIPUSH 0x35 MSWAP 出去 出去 出去 出去 停止 .end-main
它应该给出 5690 的输出 可悲的事实,输出只有 56 就像我“错过”了两个桩元素..这是由于过度使用 SP = SP -1 造成的吗?在编写类似的函数来交换第二个和第三个元素时它工作得很好
【问题讨论】: