标签:
该文仅供参考...
实验一:监控程序与汇编实验
实验控制开关: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的机械码
标签:
原文地址:http://www.cnblogs.com/darkframemaster/p/4513281.html