計算機組成原理實驗

該文僅供參考...編程

實驗一:監控程序與彙編實驗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的機械碼        
相關文章
相關標籤/搜索