我無法理解以下用於使用寄存器添加兩個整數的彙編代碼。這不是一個非常麻煩的問題,只是我缺乏學習語法的很好的參考。如果你能一行一行地向我提供見解。我會非常感激。彙編代碼添加兩個整數
MOV R1, #100
MOV R2, #100
MOV (R1), #50
ADD R2,(R1)
我拿到這將號碼100存儲在給定的寄存器中的前兩行,我只是不明白在接下來的兩行使用支架的目的。 這不是家庭作業,只是一個問題來澄清它背後的理論。
問題是指令執行後R1,R2的值是多少。
我無法理解以下用於使用寄存器添加兩個整數的彙編代碼。這不是一個非常麻煩的問題,只是我缺乏學習語法的很好的參考。如果你能一行一行地向我提供見解。我會非常感激。彙編代碼添加兩個整數
MOV R1, #100
MOV R2, #100
MOV (R1), #50
ADD R2,(R1)
我拿到這將號碼100存儲在給定的寄存器中的前兩行,我只是不明白在接下來的兩行使用支架的目的。 這不是家庭作業,只是一個問題來澄清它背後的理論。
問題是指令執行後R1,R2的值是多少。
我在另一個網站上發現了以下解釋,這幫助我理解了括號的使用。我相信它會爲其他人也非常明確,所以我會發布它下面:
讓我們分析一下這個程序:
MOV AX,47104 MOV DS,AX MOV [3998] 36 INT 32
...第一條指令MOV AX 47104告訴計算機將數字47104複製到位置AX。下一條指令MOV DS,AX告訴計算機將AX中的數字複製到DS位置。下一條指令MOV [3998],36告訴計算機將數字36放入內存位置3998.最後,INT 32通過返回操作系統退出程序。
在我們繼續之前,我想解釋一下這個程序是如何工作的。在CPU內部有很多位置,稱爲寄存器,可以存儲一個數字。有些寄存器,如AX,是通用的,不做任何特殊的事情。其他寄存器(如DS)控制着CPU的工作方式。
DS恰好是一個段寄存器,用於選擇CPU可以寫入的內存區域。在我們的程序中,我們將數字47104放入DS,它告訴CPU訪問顯卡上的內存。
我們程序的下一件事就是將數字36放入視頻卡內存的位置3998。由於36是美元符號的代碼,並且3998是屏幕右下角的存儲位置,所以美元符號在數微秒後顯示在屏幕上。
最後,我們的程序告訴CPU執行所謂的中斷。中斷用於停止一個程序並在其位置執行另一個程序。在我們的例子中,我們需要中斷32,它結束我們的程序並返回到MS-DOS,或其他任何程序用於啓動我們的程序。
我們可以從這個例子中看出括號的使用導致將值輸入到存儲器位置而不是寄存器中。最近,該值被顯卡讀取以在屏幕上顯示符號。
*你認爲答案是什麼,爲什麼?我們不是來做你的功課(畢竟,我們沒有得分) –
其實,@Damien_The_Unbeliever學術誠信要求給予信用。否則,這將是剽竊,大多數學校認爲這是嚴重的罪行。 –
@Damien_The_Unbeliever:這不是一個家庭作業問題,我不是大學生,我自學ISA。 (v.putha) – chamara