2011-12-13 62 views
0

我目前在如何在ARM程序集中使用負數的問題上苦苦掙扎。比方說,我有一個簡單的代碼是這樣的:ARM程序集中的負數

MOV R0, #0 
SUB R0, R0, #1 
SWI 4 

R0顯然將存儲值0xFFFFFFFF,但SWI似乎並沒有把它當作一個符號整數,並讓被顯示的號碼是4294967295哪有我打印出-1?

+0

爲什麼使用SWI?你在與SWI溝通的環境是什麼? –

+0

必須同意dwelch。爲什麼要使用SWI?如果您希望將其視爲有符號整數,請將其發送給希望接收有符號整數的函數。 – Leo

+1

加載-1到R0使用'MVN R0,#0'而不是像這樣的指令 –

回答

1

據我所知,SWI 4在OS或任何執行環境中調用一些數字顯示例程。如果有合適的SWI some other number用於顯示帶符號整數,請使用它。你應該真的提到你的操作系統。

如果沒有SWI 4的簽名對象,計算負數的絕對值(例如從0中減去),然後分別顯示減號和絕對值。負值的最高位設置爲1.

+0

謝謝你的答案。我使用Linux,並且從未聽說過任何用於顯示帶符號整數的「SWI」。 – sps