2010-07-28 20 views
5

我最近一直在重新審視摩托羅拉68000編程。無可否認,當我參加課程時,我只是做了必要的事情(並且有一位可怕的教授)......但現在我對這些東西感興趣。總之,通過我的舊課本The 68000 Microprocessor by James L. Antonakos看,他用下面的代碼:不同的68k模擬器有不同的TRAP任務嗎?

 ORG  $8000 
HMSG DC.B 'Hello!' 
     DC.B 0 
     ORG  #8100 
START MOVEA.L #HMSG,A3 
     TRAP #3 
     TRAP #9 
     END  START 

這不會在Easy68k編譯,但書中有ASM68K referenced。當我將代碼更改爲此時,它工作。

 ORG $1000 
HSMG DC.B 'Hello!',0 

START LEA HSMG,A1 
     MOVE #14,D0 
     TRAP #15 

END START 

這是否僅僅是由於編譯器之間的差異?或者我在這裏錯過了更大的東西?據我所知,模擬器TRAP #15當時執行寄存器D0中的任何任務,但是每個模擬器有不同的陷阱任務,還是所有68000處理器的標準?

謝謝!
Thomas

回答

8

TRAP指令只是調用內存中某個長字指向的例程。這部分行爲對所有68000 CPU都是通用的。那個長字指向哪裏,它指向的程序是什麼(因此如何傳遞它所需的數據等等)取決於特定的系統。 (例如,Atari ST使用TRAP來調用操作系統,並且你通常會在堆棧中傳遞所有相關信息,寄存器內容被忽略,我相信Mac OS「System」也以類似的方式使用TRAP ,並且Amiga完全沒有使用它。)

+0

+1提及Atari和Amiga OS呼叫方案之間的區別。 :) – 2010-10-18 15:18:59

+0

我似乎只記得在所有代碼的末尾使用TRAP#11,當天返回(flite ftl-68k代表...對不起)。我記得導師告訴我,「它只是將控制板返回給操作系統」 – 2012-12-11 13:04:04

3

68000提供16個用戶陷阱(軟件中斷/例外),但沒有指定他們做什麼。這取決於系統BIOS/OS,無論是模擬器還是Amiga,Atari ST等。您可以在本文底部的Easy36k中找到由TRAP 15執行的任務清單http://www.easy68k.com/files/EASy68KQuickRef.pdf

相關問題