[英]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
. 然后,根据您使用的选择器,还需要将其他参数加载到正确的寄存器中,通常为
D1
或A1
。
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.