简体   繁体   English

以十进制显示寄存器 - 汇编语言EASy68K

[英]Display Register in decimal - assembly language EASy68K

I am trying to display D0 in decimal, but when I run the program, nothing is displayed. 我试图以十进制显示D0,但是当我运行程序时,没有显示任何内容。 I don't get any errors, and when I look in register D0 I see the expected number in hex, but the decimal equivalent isn't being displayed. 我没有得到任何错误,当我查看寄存器D0时,我看到十六进制的预期数字,但没有显示十进制等效值。 I am trying to use TRAP to do so, which we were shown in class. 我试图使用TRAP这样做,我们在课堂上展示。 What am I doing wrong? 我究竟做错了什么? The line of code in question is the 17th line down from where the code starts. 有问题的代码行是代码开始的第17行。 It says "TRAP #15 Display D0 in decimal." 它说“TRAP#15以十进制显示D0”。 Thanks for any help. 谢谢你的帮助。

*-----------------------------------------------------------
* Program Number: 0
* Written by    : Bryan Kriss
* Date Created  : 10/06/2013
* Description   : This program performs If-then-else statement.
*
*-----------------------------------------------------------
START   ORG $1000   Program starts at loc $1000
IF  CMP     #12,P   Is P > 12? 
    BLE     ENDIF   If P < 12, go to ENDIF
    ASL     P       Shift left
    ASL     P       Shift left
    ASL     P       Shift left
    ADD     #4,P    P + 4
    MOVE    P,D0    Move P into D0
    EXT.L   D0
    TRAP    #15     Display D0 in decimal
    STOP    #$2700   Stop execution

ENDIF   MOVE    Q,D1     Move the value of Q into D1
        SUB     D1,D0    P - D1 (P-Q)
        MOVE    D0,D1    Move P into D1

        STOP    #$2700    Stop execution
* Data section
    ORG $2000   Data starts at loc 2000
P   DC.W    15  int P = 15;
Q   DC.W    7   int Q = 7;
    END START

According to the documentation you need to put the selector in D0 and the actual value in D1. 根据文档,您需要将选择器放在D0中,将实际值放在D1中。

Change: 更改:

MOVE    P,D0    Move P into D0
EXT.L   D0
TRAP    #15     Display D0 in decimal

to: 至:

MOVE    P,D1    Move P into D1
EXT.L   D1
MOVE.B  #3,D0   Put required TRAP #15 selector (3) in D0
TRAP    #15     Display D0 in decimal

Some further clarification: TRAP #15 is a general mechanism for performing various tasks supported by the easy68k environment. 进一步澄清: TRAP #15是执行easy68k环境支持的各种任务的一般机制。 In order to specify which task to perform you pass the task selector in D0. 要指定要执行的任务,请在D0中传递任务选择器 Then, depending on which selector you are using, the other parameters also need to be loaded into the correct register(s), typically D1 or A1 . 然后,根据您使用的选择器,还需要将其他参数加载到正确的寄存器中,通常为D1A1

There's a comprehensive list of selectors on the easy68k web site - the first few selectors are: easy68k网站上有一个全面的选择器列表 - 前几个选择器是:

TRAP #15 is used for I/O.  Put the task number in D0.

 Task
  0  Display string at (A1), D1.W bytes long (max 255) with carriage return and line feed (CR, LF). (see task 13)
  1  Display string at (A1), D1.W bytes long (max 255) without CR, LF. (see task 14)
  2  Read string from keyboard and store at (A1), NULL terminated, length retuned in D1.W (max 80)
  3  Display signed number in D1.L in decimal in smallest field. (see task 15 & 20)
  ...

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM