2015-06-14 26 views
0

我正在做lc3程序集編程的第一步,我注意到每當我嘗試在存儲器中存儲一個負值時(例如使用「ST」指令),都會有某種錯誤。在這個內存位置存儲「陷阱xFF」,而不是... 任何人都知道我怎麼能克服它?如何避免在lc3程序集中執行變量

+0

您能否將您的示例代碼與您收到的錯誤一起發佈?這將有助於給你的問題一些額外的背景。 –

+0

例如:(斜線代表線路的變化) .fill僞VAR1#5/ VAR2#.fill僞0/ LD \t R0,VAR1/ NOT \t R0,R0/ ADD \t R0,R0,#1/ ST \t R0,VAR2 – Sadis6

+0

lc3模擬器中的錯誤行是: VAR2 TRAP xFF – Sadis6

回答

0

因爲你的變量是運行時代碼的一部分,你會得到這個錯誤。通常最好的做法是在HALT命令之後將變量放在代碼的末尾。

.ORIG x3000 

MAIN  
LD R0, VAR1 
NOT R0, R0 
ADD R0, R0, #1 
ST R0, VAR2 

HALT 

VAR1 .FILL #5 
VAR2 .FILL #0 
.END 

你得到這些錯誤的原因是因爲當你存儲號碼到您的變量模擬器認爲他們的命令。陷阱命令具有1111的操作碼,其也是負數。當模擬器遇到你的變量時,它無法弄清楚它是什麼類型的TRAP命令,因此是錯誤。通過阻止模擬器運行你的變量,你不會得到那個錯誤。

+0

好吧,我改變了它,一切都在運行現在順利。 非常感謝! – Sadis6

+0

很高興我能幫到你。只要記住標記答案,如果它幫助解決。謝謝 –