一段时间以来,我一直在努力解决这个问题,需要帮助。
此问题基于EASY68K仿真器处理器。使用EASY68K模拟器的T121处理器指令集来回答以下问题。
重写图Q3中的程序,以包括一个添加一系列整数的子例程。该子例程应执行循环功能。子例程占用的内存空间仅在主程序下方。使用SUM作为子例程地址标签。
图Q3
ORG $1000
START MOVE #$2000,A0
MOVE.B #$08,D0
MOVE.L #$0,D1
LOOP ADD.B (A0)+,D1
SUB.B #$01,D0
BNE LOOP
LSR #$03,D1 ; Logical Shift Right by 3 places
MOVE.B D1, $2050
STOP #$2700
初始化并使用测试数据:1、2、3,...,直至问题3(b)中得出的循环计数器。假定在程序启动之前所有数据寄存器的内容都设置为零。
这是我的工作。我不确定自己是否做对了,因为我不知道如何解决这个问题。
ORG $1000
START MOVE #$2000,A0
MOVE.B #$08,D0
MOVE.L #$0,D1
BSR SUM ;BRANCH SUMBROUTINE
STOP #$2700
SUM ADD.B (A0)+,D1
SUB.B #$01,D0
BNE SUM
LSR #$03,D1 ; Logical Shift Right by 3 places
MOVE.B D1, $2050
RTS
ORG $2000
DATA DC.B $1,$2,$3,$4,$5,$6,$7,$8 ; Define constant.
END START
答案 0 :(得分:0)
一些改进
将结果移动并存储到例程之外
ORG $1000
START MOVE #DATA,A0
MOVE.B #$08,D0
MOVE.L #$0,D1
BSR SUM ; sum values in subroutine
LSR #$03,D1 ; Logical Shift Right by 3 places
MOVE.B D1, RESULT
STOP #$2700
SUM ADD.B (A0)+,D1
SUB.B #$01,D0
BNE SUM
RTS
ORG $2000
DATA DC.B $1,$2,$3,$4,$5,$6,$7,$8 ; Define constant.
ORG $2050
RESULT DS.B 1
END START