該文僅供參考...編程
實驗一:監控程序與彙編實驗spa
實驗控制開關:00110code
實驗要求:從鍵盤輸入一個數字,則計算該值到10的累加。blog
>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
實驗三:存儲器擴展實驗ci
實驗控制開關:00110class
實驗要求:從鍵盤上輸入一個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的機械碼