該文僅供參考...
實驗一:監控程序與匯編實驗
實驗控制開關:00110
實驗要求:從鍵盤輸入一個數字,則計算該值到10的累加。
>a 2000 in 81 shr r0 shr r0 jrnc 2000 in 80 mvrd r1,ff30 mvrd r2,000a sub r0,r1 //將r0中存儲的數字的ascii碼轉化為數字 mvrr r3,r0 inc r0 //r0自加一 add r3,r0 //將r0累加到r3 cmp r0,r2 jrnz 200B ret
實驗三:存儲器擴展實驗
實驗控制開關:00110
實驗要求:從鍵盤上輸入一個0-9的數字,將從該數字開始到F的所有數據存儲到擴展之后的5000開始的EEPROM存儲單元中。
>a 2000 in 81 shr r0 shr r0 jrnc 2000 in 80 mvrd r1,ff30 mvrd r2,5000 mvrd r3,000f sub r0,r1 strr [r2],r0 //將r0中的數據存入地址為r2的存儲單元中 mvrd r9,0000 //由於EEROM芯片存儲速度慢,所以設置以下的循環以確保數據能夠寫入EEROM中 mvrd r10,0fff inc r9 cmp r9,r10 jrnz (inc r9) //(inc r9)為上面的inc r9語句對應的地址 inc r0 inc r2 strr [r2],r0 cmp r0,r3 jrnz (mvrd r9,0000) //(mvrd r9,0000)為上面對應語句的位置
基於上面的問題,完成輸入數字到F的累加,並將累加和存儲在存儲‘F’的后續單元中
>a 2000 in 81 shr r0 shr r0 jrnc 2000 in 80 out 80 mvrd r1,ff30 mvrd r2,5000 mvrd r3,000f sub r0,r1 mvrr r1,r0 //將r0存入r1中,r1將作為累加的結果 strr [r2],r0 mvrd r9,0000 mvrd r10,0fff inc r9 cmp r9,r10 jrnz (inc r9) //(inc r9)為上面對應語句的地址 inc r0 inc r2 add r1,r0 //將累加的結果存入r1中 strr [r2],r0 cmp r0,r3 jrnz (mvrd r9,0000) //(mvrd r9,0000)為上面對應語句的地址 inc r2 strr [r2],r1 ret
實驗四:中斷實驗
實驗控制開關:00010
實驗要求:
a.主程序循環顯示字母‘M‘,如果捕捉到中斷源1的時候在屏幕循環顯示數字1;捕捉到中斷源2的時候在屏幕上循環顯示數字‘2’;捕捉到中斷源3的時候在屏幕上循環顯示數字‘3‘;
b.需要實現在中斷顯示的過程中,如果按下任意按鍵則中斷返回上一級程序繼續運行;
c.實驗以優先級為主要依據的嵌套;
>e 2000 6e00 //6e00為EI的機械碼,表示開中斷 >a 2001 mvrd r0,004D cala 2200 //執行在2200的子程序 該子程序用於輸出字符 mvrd r0,4000 dec r0 jrnz (dec r0) //(dec r0)為上面對應語句的地址 jr 2001 //跳到2001循環執行主程序 ret >a 2404 //右邊的中斷開關的編程地址2404 jr 2420 //跳轉到2420 我們將在其中寫入中斷代碼 >a 2420 push r0 push r3 mvrd r3,0031 jr 2450 >a 2408 //中間的中斷開關的編程地址2408 jr 2430 >a 2430 push r0 push r3 mvrd r3,0032 jr 2450 >a 240c //左邊的中斷開關的編程地址240c jr 2440 >a 2440 push r0 push r3 mvrd r3,0033 jr 2450 >a 2450 //三個子程序共用代碼段 mvrr r0,r3 cala 2200 out 80 mvrd r0,4000 in 81 shr r0 shr r0 jrnc (mvrr r0,r3) //(mvrr r0,r3)為上面對應語句的地址 pop r0 >e (pop r0) //(pop r0)為上面對應語句的地址 EF00 //EF00為關中斷IRET的機械碼