[英]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.