使用 easy68K 添加一系列整数的子例程
Subroutine to add a series of integers using easy68K
我在这个问题上纠结了一段时间,需要一些帮助。
本题基于EASY68K模拟器处理器。使用EASY68K模拟器的T121处理器指令集回答下列问题。
重写图 Q3 中的程序以包含一个子例程来添加一系列整数。子程序应执行循环的功能。子程序占用内存 space 就在主程序之下。使用 SUM 作为子程序地址标签。
图 Q3
ORG 00
START MOVE #00,A0
MOVE.B #,D0
MOVE.L #[=10=],D1
LOOP ADD.B (A0)+,D1
SUB.B #,D0
BNE LOOP
LSR #,D1 ; Logical Shift Right by 3 places
MOVE.B D1, 50
STOP #00
初始化并使用测试数据:1、2、3、……直到问题 3(b) 中推导出的循环计数器。假设在程序开始之前所有数据寄存器的内容都设置为零。
这是我的作品。我不确定我是否做对了,因为我不明白如何解决这个问题。
ORG 00
START MOVE #00,A0
MOVE.B #,D0
MOVE.L #[=11=],D1
BSR SUM ;BRANCH SUMBROUTINE
STOP #00
SUM ADD.B (A0)+,D1
SUB.B #,D0
BNE SUM
LSR #,D1 ; Logical Shift Right by 3 places
MOVE.B D1, 50
RTS
ORG 00
DATA DC.B ,,,,,,, ; Define constant.
END START
一些改进
- 使用标签而不是固定的内存地址
将结果的移位和存储移到例程之外
ORG 00
START MOVE #DATA,A0
MOVE.B #,D0
MOVE.L #[=10=],D1
BSR SUM ; sum values in subroutine
LSR #,D1 ; Logical Shift Right by 3 places
MOVE.B D1, RESULT
STOP #00
SUM ADD.B (A0)+,D1
SUB.B #,D0
BNE SUM
RTS
ORG 00
DATA DC.B ,,,,,,, ; Define constant.
ORG 50
RESULT DS.B 1
END START
我在这个问题上纠结了一段时间,需要一些帮助。
本题基于EASY68K模拟器处理器。使用EASY68K模拟器的T121处理器指令集回答下列问题。
重写图 Q3 中的程序以包含一个子例程来添加一系列整数。子程序应执行循环的功能。子程序占用内存 space 就在主程序之下。使用 SUM 作为子程序地址标签。
图 Q3
ORG 00
START MOVE #00,A0
MOVE.B #,D0
MOVE.L #[=10=],D1
LOOP ADD.B (A0)+,D1
SUB.B #,D0
BNE LOOP
LSR #,D1 ; Logical Shift Right by 3 places
MOVE.B D1, 50
STOP #00
初始化并使用测试数据:1、2、3、……直到问题 3(b) 中推导出的循环计数器。假设在程序开始之前所有数据寄存器的内容都设置为零。
这是我的作品。我不确定我是否做对了,因为我不明白如何解决这个问题。
ORG 00
START MOVE #00,A0
MOVE.B #,D0
MOVE.L #[=11=],D1
BSR SUM ;BRANCH SUMBROUTINE
STOP #00
SUM ADD.B (A0)+,D1
SUB.B #,D0
BNE SUM
LSR #,D1 ; Logical Shift Right by 3 places
MOVE.B D1, 50
RTS
ORG 00
DATA DC.B ,,,,,,, ; Define constant.
END START
一些改进
- 使用标签而不是固定的内存地址
将结果的移位和存储移到例程之外
ORG 00 START MOVE #DATA,A0 MOVE.B #,D0 MOVE.L #[=10=],D1 BSR SUM ; sum values in subroutine LSR #,D1 ; Logical Shift Right by 3 places MOVE.B D1, RESULT STOP #00 SUM ADD.B (A0)+,D1 SUB.B #,D0 BNE SUM RTS ORG 00 DATA DC.B ,,,,,,, ; Define constant. ORG 50 RESULT DS.B 1 END START