[英]Subroutine to add a series of integers using easy68K
我一直在這個問題上苦苦掙扎,需要幫助。
該問題基於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
一些改進
將移位和結果存儲在例行程序之外
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.