簡體   English   中英

子例程,使用easy68K添加一系列整數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM