首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >摩托罗拉68000总成比较号码

摩托罗拉68000总成比较号码
EN

Stack Overflow用户
提问于 2017-10-18 19:39:11
回答 2查看 1.6K关注 0票数 1

我正在编写的程序以一个单数数字、一个空格和一个两位数字的形式输入。该程序将两个数字相加在一起,将数量减少7s直到小于7,并将该数字与一周中的一天相关联。以下是我所拥有的:

代码语言:javascript
复制
start:  initIO                  * Initialize (required for I/O)
    setEVT          * Error handling routines
*   initF           * For floating point macros only       

    linein  buffer          *reads in values
    cvta2   buffer,#1       *provided macro to convert ascii to num, read first digit only
    move.b  D0,D1           *Store value in D1
    cvta2   buffer+2,#2     *read the next two digits after space
    move.b  D0,D2           *store
    add.b   D1,D2           *add them together (I can probably use just one register here)

麻烦就在这里:

代码语言:javascript
复制
for:    cmp.w   week, D2 *<<<<< This is saying invalid syntax, I want to see if the number provided is greater than 7, if not branch out to the next section

/trouble

代码语言:javascript
复制
    ble done
    subq.w  #7,D2        *If num>7, sub 7

done:   

    lineout dmsg

        break                   * Terminate execution
*
*----------------------------------------------------------------------
*       Storage declarations

buffer: dc.b    80
dmsg:   dc.b    'Done',0
week:   dc.b    $7    *If combined value is greater than this, sub 7
*These are the values to check against to get correct reply
sun:    dc.b    $1
mon:    dc.b    $2
tues:   dc.b    $3
weds:   dc.b    $4
thurs:  dc.b    $5
fri:    dc.b    $6
sat:    dc.b    $7
*These are the responses for the output
sunr:   dc.b    'Sunday',0
monr:   dc.b    'Monday',0
tuesr:  dc.b    'Tueday',0
wedsr:  dc.b    'Wednesday',0
thursr: dc.b    'Thursday',0
frir:   dc.b    'Friday',0
satr:   dc.b    'Saturday',0

        end

当我知道如何进行上面的比较时,将会有更多的代码,但是它将是相同的比较,仅使用结果与星期的天数值,以便提供正确的响应。

我尝试过使用cmp的各种形式(cmpa、cmpi.w/l等),但我似乎找不到一种方法可以比较这两个值。在尝试比较它或类似的东西之前,我是否必须将标记为"week“的值加载到寄存器中?

I/O的例子:

输入:

1 10

输出:

“星期三”

任何洞察力都是值得赞赏的。耽误您时间,实在对不起。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-10-19 08:58:13

您正在尝试与不支持的寻址模式进行比较(在您的示例中,“week”操作数不是即时值,而是内存地址)。

要将D2与7进行比较,可以使用cmpi (比较立即):

代码语言:javascript
复制
cmpi.b #7,d2

如果需要操作数作为变量,则必须先将其加载到寄存器中:

代码语言:javascript
复制
lea week,a0
...
cmp.b (a0),d2

还要确保cmp指令中的操作数大小与数据大小相匹配。

票数 1
EN

Stack Overflow用户

发布于 2017-10-19 23:25:50

编辑(未优化问题的工作代码):

代码语言:javascript
复制
start:  initIO                  * Initialize (required for I/O)
    setEVT          * Error handling routines
*   initF           * For floating point macros only    

    linein  buffer
    cvta2   buffer,#1   
    move.l  D0,D1
    cvta2   buffer+2,#2
    move.l  D0,D2
    add.l   D1,D2    

    divu.w  #$0007,D2   

    lsr.l   #$08,D2 *Shift remainder
    lsr.l   #$08,D2    

    move.w  sun,A2
    cmp.w   A2,D2
    BNE monday
    lineout sunr
    BEQ end

monday: 
    move.w  mon,A2
    cmp.w   A2,D2
    BNE tuesda
    lineout monr
    BEQ end    

tuesda: 
    move.w  tues,A2
    cmp.w   A2,D2
    BNE wednes
    lineout tuesr
    BEQ end    

wednes: 
    move.w  weds,A2
    cmp.w   A2,D2
    BNE thursd
    lineout wedsr
    BEQ end    

thursd: 
    move.w  thurs,A2
    cmp.w   A2,D2
    BNE friday
    lineout thursr
    BEQ end    

friday: 
    move.w  fri,A2
    cmp.w   A2,D2
    BNE saturd
    lineout frir
    BEQ end    

saturd: 
    lineout satr
    BEQ end    

end:    
        break                   * Terminate execution
*
*----------------------------------------------------------------------
*       Storage declarations

buffer: dc.b    80
wkmsg:  dc.w    'The day of the week is '
week:   equ $7
sun:    dc.w    $1
mon:    dc.w    $2
tues:   dc.w    $3
weds:   dc.w    $4
thurs:  dc.w    $5
fri:    dc.w    $6
sat:    dc.w    $7
sunr:   dc.w    'Sunday',0
monr:   dc.w    'Monday',0
tuesr:  dc.w    'Tueday',0
wedsr:  dc.w    'Wednesday',0
thursr: dc.w    'Thursday',0
frir:   dc.w    'Friday',0
satr:   dc.w    'Saturday',0

        end
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46817967

复制
相关文章

相似问题

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