首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用easy68K添加一系列整数的子例程

使用easy68K添加一系列整数的子例程
EN

Stack Overflow用户
提问于 2018-08-27 16:52:45
回答 1查看 1.2K关注 0票数 0

我在这个问题上挣扎了一段时间,需要一些帮助。

这个问题是基于EASY68K模拟器处理器的。使用T121模拟器的EASY68K处理器指令集回答以下问题。

在图Q3中重写程序以包含一个子例程以添加一系列整数。子例程应该执行循环的功能。子例程占用主程序下方的内存空间。使用SUM作为子例程地址标签。

图Q3

代码语言:javascript
复制
        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)中推导的回路计数器为止。假设所有数据寄存器的内容在程序开始前设置为零。

这是我的工作。我不知道我是否做得对,因为我不知道如何解决这个问题。

代码语言:javascript
复制
     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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-08-28 07:03:45

一些改进

  • 使用标签而不是固定的内存地址
  • 在例程外移动移位和存储结果 ORG $1000开始移动#数据,A0 MOVE.B #08美元,D0 MOVE.L #0美元,D1 BSR和;SUM值在子程序LSR #03,D1;MOVE.B D1,结果停止#2700和ADD.B (A0)+,D1 SUB.B #01,D0 BNE SUM RTS ORG $2000 DATA DC.B $1,2,3,4,$5,6,7,8;定义常数。ORG $2050 DS.B 1结束启动
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52043791

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档