I am trying to display D0 in decimal, but when I run the program, nothing is displayed. 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. I am trying to use TRAP to do so, which we were shown in class. What am I doing wrong? The line of code in question is the 17th line down from where the code starts. It says "TRAP #15 Display D0 in decimal." 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.
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. In order to specify which task to perform you pass the task selector in 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
.
There's a comprehensive list of selectors on the easy68k web site - the first few selectors are:
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)
...