注释2100: MVRD R1,FF2F 2102: MVRD R2,FF3A ;9的Asc码是0039,加1是003A,设置成FF3A 2104: IN 81 ;控制与状态口的地址 2105: SHR R0 2106: SHR R0 2107: JRNC 2104 2108: IN 80 2109: CMP R1,R0 210A: JRC 210F 210B: CMP R0,R2 210C: JRC 210F 210D: OUT 80 210E: JR 2104 ;判断是否为0,如果是0的话就代表Cpu没有准备好接受字符、所以就需要跳到2104 210F: RET
时间: 2024-03-30 10:33:59 浏览: 61
计算机组成原理课程设计--基于TEC-2000平台的2(a2-b).doc
这段代码是汇编代码,大致功能是从串口读取一个字符,并判断是否为数字9,如果是则将字符通过串口输出。下面是详细的注释:
2100: MVRD R1,FF2F ; 将地址FF2F中的值读入到寄存器R1中,该地址是控制串口的寄存器
2102: MVRD R2,FF3A ; 将地址FF3A中的值读入到寄存器R2中,该地址是数字9的ASCII码值
2104: IN 81 ; 读取串口数据,该地址是串口数据寄存器
2105: SHR R0 ; 将寄存器R0的值右移一位,相当于除以2
2106: SHR R0 ; 再将寄存器R0的值右移一位,相当于除以2
2107: JRNC 2104 ; 如果寄存器R0的最后一位是0,则跳转到2104继续等待串口数据
2108: IN 80 ; 读取控制与状态口的值,该地址是串口状态寄存器
2109: CMP R1,R0 ; 比较R1和R0的值
210A: JRC 210F ; 如果比较结果为真,则跳转到210F返回,否则继续执行
210B: CMP R0,R2 ; 比较R0和R2的值
210C: JRC 210F ; 如果比较结果为真,则跳转到210F返回,否则继续执行
210D: OUT 80 ; 将控制与状态口的值设置为可以发送数据,该地址是串口控制寄存器
210E: JR 2104 ; 跳转到2104等待下一个字符的输入
210F: RET ; 返回
阅读全文