[英]Display Register in decimal - assembly language EASy68K
我试图以十进制显示D0,但是当我运行程序时,没有显示任何内容。 我没有得到任何错误,当我查看寄存器D0时,我看到十六进制的预期数字,但没有显示十进制等效值。 我试图使用TRAP这样做,我们在课堂上展示。 我究竟做错了什么? 有问题的代码行是代码开始的第17行。 它说“TRAP#15以十进制显示D0”。 谢谢你的帮助。
*-----------------------------------------------------------
* 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
根据文档,您需要将选择器放在D0中,将实际值放在D1中。
更改:
MOVE P,D0 Move P into D0
EXT.L D0
TRAP #15 Display D0 in decimal
至:
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
进一步澄清: TRAP #15
是执行easy68k环境支持的各种任务的一般机制。 要指定要执行的任务,请在D0中传递任务选择器 。 然后,根据您使用的选择器,还需要将其他参数加载到正确的寄存器中,通常为D1
或A1
。
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.