// ▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉ ▉▉▉ ▉ ▉▉▉▉▉▉▉
// ▉ ▉ ▉ ▉▉ ▉▉ ▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉ ▉▉ ▉▉▉▉▉ ▉▉ ▉ ▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉▉ ▉ ▉ ▉ ▉ ▉▉ ▉ ▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉▉ ▉ ▉ ▉▉ ▉▉ ▉ ▉▉▉▉▉ ▉ ▉▉▉ ▉
// ▉ ▉ ▉▉▉▉▉ ▉▉▉ ▉▉ ▉ ▉ ▉ ▉
// ▉▉▉▉▉▉▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉▉▉
// ▉▉ ▉ ▉▉▉ ▉▉ ▉ ▉ ▉
// ▉ ▉ ▉ ▉▉▉▉▉ ▉▉ ▉ ▉▉ ▉▉▉ ▉▉
// ▉▉ ▉▉▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉ ▉▉
// ▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉ ▉ ▉▉▉ ▉▉▉▉▉▉▉▉ ▉
// ▉ ▉ ▉▉▉▉ ▉ ▉ ▉ ▉▉ ▉ ▉▉ ▉▉ ▉ ▉▉
// ▉▉ ▉ ▉ ▉ ▉ ▉▉ ▉ ▉ ▉▉▉ ▉ ▉▉▉ ▉▉▉
// ▉ ▉▉ ▉ ▉▉ ▉▉ ▉ ▉ ▉ ▉▉▉▉
// ▉ ▉▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉ ▉▉
// ▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉ ▉▉ ▉
// ▉ ▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉▉ ▉▉ ▉ ▉
// ▉▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉▉
// ▉ ▉▉▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉ ▉▉
// ▉ ▉▉▉ ▉ ▉▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉▉
// ▉ ▉ ▉ ▉▉ ▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉▉
// ▉ ▉ ▉▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉▉
// ▉▉▉▉ ▉▉▉▉▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉ ▉▉ ▉▉ ▉▉▉▉
// ▉ ▉▉▉▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉ ▉▉ ▉▉
// ▉▉ ▉▉▉ ▉▉▉▉ ▉▉ ▉ ▉▉▉▉ ▉ ▉ ▉
// ▉▉▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉ ▉▉▉
// ▉ ▉▉ ▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉
// ▉▉▉ ▉ ▉ ▉ ▉▉▉▉ ▉▉▉▉ ▉ ▉▉▉
// ▉▉ ▉ ▉▉▉▉ ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉ ▉▉
// ▉ ▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉ ▉
// ▉▉▉▉▉▉▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉▉ ▉▉
// ▉ ▉ ▉ ▉▉ ▉ ▉▉▉ ▉ ▉▉▉ ▉ ▉▉▉
// ▉ ▉▉▉ ▉ ▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉▉▉▉▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉▉ ▉ ▉▉▉▉▉▉▉▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉▉ ▉▉ ▉▉ ▉ ▉ ▉
// ▉ ▉ ▉▉▉▉▉ ▉▉▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉▉
// ▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉▉▉ ▉▉ ▉ ▉▉ ▉▉ ▉▉
// 微信打赏,感谢支持
#include <STC8h.h>
#include <INTRINS.H>
code unsigned char EC[]={//要执行代码
0x02 ,0x00 ,0x32 ,0x78 ,0x83 ,0x76 ,0x80 ,0x76 ,0x84 ,0x78 ,0x83 ,0x30 ,0x00 ,0x04 ,0x76 ,0xC1,
0x80 ,0x02 ,0x76 ,0xC0 ,0x78 ,0x83 ,0x30 ,0x01 ,0x04 ,0x76 ,0xC5 ,0x80 ,0x02 ,0x76 ,0xC4 ,0x78,
0x00 ,0xE2 ,0x04 ,0xF2 ,0x70 ,0xE3 ,0xB2 ,0x00 ,0x08 ,0xE2 ,0x04 ,0xF2 ,0x70 ,0xDB ,0xB2 ,0x01,
0x80 ,0xD7 ,0x78 ,0x7F ,0xE4 ,0xF6 ,0xD8 ,0xFD ,0x75 ,0x81 ,0x20 ,0x02 ,0x00 ,0x03 ,0x00
};
#define R0 DATA[0]
#define R1 DATA[1]
#define R2 DATA[2]
#define R3 DATA[3]
#define R4 DATA[4]
#define R5 DATA[5]
#define R6 DATA[6]
#define R7 DATA[7]
#define PCL ((unsigned char idata*)&PC_)[0]
#define PCH ((unsigned char idata*)&PC_)[1]
#define RW_DPTR *((unsigned int pdata*)&DPL_)
bdata unsigned char PSW_,bit_t;
idata unsigned char A_,B_,SP_,DPL_,DPH_;
idata unsigned int PC_;
pdata unsigned char DATA[128];
xdata unsigned char XDATA[2047];
sbit P_=PSW_^0;
sbit F1_=PSW_^1;
sbit OV_=PSW_^2;
sbit RS0_=PSW_^3;
sbit RS1_=PSW_^4;
sbit F0_=PSW_^5;
sbit AC_=PSW_^6;
sbit CY_=PSW_^7;
sbit B0=bit_t^0;
sbit B1=bit_t^1;
sbit B2=bit_t^2;
sbit B3=bit_t^3;
sbit B4=bit_t^4;
sbit B5=bit_t^5;
sbit B6=bit_t^6;
sbit B7=bit_t^7;
void C51_res(){
SP_=7;
A_=B_=DPL_=DPH_=PSW_=PC_=0;
}
void C51_core(){
bit CY_t;//进位标志
unsigned char PSW_b;//PSW备份
unsigned int PC_t;//PC副本
switch(EC[PC_]){
case 0:PC_++;break;//空指令 NOP
case 1:PC_=EC[PC_+1];break;//短跳转 AJMP ADDR11 00H
case 2:PSW_b=EC[PC_+1];PCL=EC[PC_+2];PCH=PSW_b;break;//长跳转 LJMP
case 3://累加器循环右移 RR A
ACC=A_;
__asm RR A
PSW_=PSW;
A_=ACC;
PC_++;
break;
case 4://累加器加1 INC A
ACC=A_;
__asm INC A
PSW_=PSW;
A_=ACC;
PC_++;
break;
case 5:DATA[EC[PC_+1]]++;PC_+=2;break;//直接地址单元加1 INC DIRECT
case 6:DATA[R0]++;PC_++;break;//间接地址单元加1 INC @R0
case 7:DATA[R1]++;PC_++;break;//间接地址单元加1 INC @R1
case 8:R0++;PC_++;break;//寄存器加1 INC R0
case 9:R1++;PC_++;break;//寄存器加1 INC R1
case 10:R2++;PC_++;break;//寄存器加1 INC R2
case 11:R3++;PC_++;break;//寄存器加1 INC R3
case 12:R4++;PC_++;break;//寄存器加1 INC R4
case 13:R5++;PC_++;break;//寄存器加1 INC R5
case 14:R6++;PC_++;break;//寄存器加1 INC R6
case 15:R7++;PC_++;break;//寄存器加1 INC R7
case 16://直接地址位为1跳转,该位清零 JBC bit,REL
switch(EC[PC_+1]){
case 0:bit_t=DATA[32];if(B0){B0=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H0
case 1:bit_t=DATA[32];if(B1){B1=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H1
case 2:bit_t=DATA[32];if(B2){B2=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H2
case 3:bit_t=DATA[32];if(B3){B3=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H3
case 4:bit_t=DATA[32];if(B4){B4=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H4
case 5:bit_t=DATA[32];if(B5){B5=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H5
case 6:bit_t=DATA[32];if(B6){B6=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H6
case 7:bit_t=DATA[32];if(B7){B7=0;DATA[32]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H7
case 8:bit_t=DATA[33];if(B0){B0=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//20H0
case 9:bit_t=DATA[33];if(B1){B1=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H1
case 10:bit_t=DATA[33];if(B2){B2=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H2
case 11:bit_t=DATA[33];if(B3){B3=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H3
case 12:bit_t=DATA[33];if(B4){B4=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H4
case 13:bit_t=DATA[33];if(B5){B5=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H5
case 14:bit_t=DATA[33];if(B6){B6=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H6
case 15:bit_t=DATA[33];if(B7){B7=0;DATA[33]=bit_t;PC_+=(char)EC[PC_+2];}break;//21H7
//此处省略,需要自行添加!
}
PC_+=3;
break;
case 17://短调用子程序 ACALL ADDR11 00H
DATA[++SP_]=PC_;
DATA[++SP_]=PC_>>8;
PC_=EC[PC_+1];
break;
case 18://长调用子程序 LCALL ADDR16
PC_t=PC_+3;
DATA[++SP_]=PC_t;
DATA[++SP_]=PC_t>>8;
PSW_b=EC[PC_+1];
PCL=EC[PC_+2];
PCH=PSW_b;
break;
case 19://累加器带进位循环右移 RRC A
CY_t=A_&1;
A_>>=1;
if(CY_)A_|=128;
CY_=CY_t;
PC_++;
break;
case 20:A_--;PC_++;break;//累加器减1 DEC A
case 21:DATA[EC[PC_+1]]--;PC_+=2;break;//直接单元地址减1 DEC DIRECT
case 22:DATA[R0]--;PC_++;break;//间接地址单元减1 DEC @R0
case 23:DATA[R1]--;PC_++;break;//间接地址单元减1 DEC @R1
case 24:R0--;PC_++;break;//寄存器减1 DEC R0
case 25:R1--;PC_++;break;//寄存器减1 DEC R1
case 26:R2--;PC_++;break;//寄存器减1 DEC R2
case 27:R3--;PC_++;break;//寄存器减1 DEC R3
case 28:R4--;PC_++;break;//寄存器减1 DEC R4
case 29:R5--;PC_++;break;//寄存器减1 DEC R5
case 30:R6--;PC_++;break;//寄存器减1 DEC R6
case 31:R7--;PC_++;break;//寄存器减1 DEC R7
case 32://直接地址位为1跳转 JB BIT,REL
switch(EC[PC_+1]){
case 0:bit_t=DATA[32];if(B0)PC_+=(char)EC[PC_+2];break;//20H0
case 1:bit_t=DATA[32];if(B1)PC_+=(char)EC[PC_+2];break;//20H1
case 2:bit_t=DATA[32];if(B2)PC_+=(char)EC[PC_+2];break;//20H2
case 3:bit_t=DATA[32];if(B3)PC_+=(char)EC[PC_+2];break;//20H3
case 4:bit_t=DATA[32];if(B4)PC_+=(char)EC[PC_+2];break;//20H4
case 5:bit_t=DATA[32];if(
大富大贵7
- 粉丝: 394
- 资源: 8870
最新资源
- 【java】分布式事务基于rabbitmq二阶段提交实现.zip
- 【java】基于java+SSM-考试系统.zip
- 【java】大三软工课设,在线考试系统后端部分.zip
- 【java】基于rabbitmq解决分布式事务问题.zip
- 【java】基于java语言的各种mq消息中间件的测试.zip
- 【java】基于jsp+servlet+mysql+tomcat的在线考试系统.zip
- 【java】基于SpringBoot+Druid+MybatisPlus+Atomikos分布式事务.zip
- 【java】基于Springboot和VUE的前后端分离式在线考试系统.zip
- 【java】基于spring框架的在线考试系统.zip
- 【java】通过lcn分布式事务框架解决分布式事务问题.zip
- 【java】通过seata分布式事务框架解决分布式事务问题.zip
- 【java】基于事件驱动+事件溯源+Saga的微服务示例.zip
- 【java】消息中间件rabbitmq结合springboot快速入门小项目.zip
- 【java】用来测试-学习分布式事务的项目.zip
- 【java】小卖部小程序项目:包含微信小程序+Java后台服务端.zip
- 【java+vue】基于SpringCloud微服务的分布式在线考试系统.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈