0

需要帮助调试,当汇编代码进入我的子程序时,它会打印出寄存器 B 的值而不是寄存器 A 的值。非常感谢任何帮助。

            dc.b    "Type a character"
            dc.b    0    ; using zero terminated strings

         LDS   #ROMStart         ; load stack pointer
         JSR   TermInit         ; needed for Simulator only
LOOP
         LDD   #PROMPT          ; pass the adr of the string
         JSR     printf     ; print the string         
         JSR     getchar     ; call getchar function -result is: character in B
         JSR    putchar
         CMPB           ‘W’     ;COMPARE USER INPUT TO W
         BNE     LOOP       ;
         JSR    WFCN
-------------------------------------------------------------------------------------------------------
  WFCN  PSHA
        LDAA    #$3D
        EORA     #$6F
        JSR     out2hex
        PULA
        RTS```

4

1 回答 1

0

这些 C 函数的名称一直具有误导性。getchar返回一个intnot char, 16 位。同样,putchar采用 16 位int参数。因此,您的特定调用约定很可能使用双累加器 D(Codewarrior 调用约定就是这样工作的)。

由于 D = A + B(和大端),您期望的结果最终会出现在 ls 字节,累加器 B 中。

于 2020-09-07T09:33:14.120 回答