// ▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉ ▉▉▉ ▉ ▉▉▉▉▉▉▉
// ▉ ▉ ▉ ▉▉ ▉▉ ▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉ ▉▉ ▉▉▉▉▉ ▉▉ ▉ ▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉▉ ▉ ▉ ▉ ▉ ▉▉ ▉ ▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉▉ ▉ ▉ ▉▉ ▉▉ ▉ ▉▉▉▉▉ ▉ ▉▉▉ ▉
// ▉ ▉ ▉▉▉▉▉ ▉▉▉ ▉▉ ▉ ▉ ▉ ▉
// ▉▉▉▉▉▉▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉▉▉
// ▉▉ ▉ ▉▉▉ ▉▉ ▉ ▉ ▉
// ▉ ▉ ▉ ▉▉▉▉▉ ▉▉ ▉ ▉▉ ▉▉▉ ▉▉
// ▉▉ ▉▉▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉ ▉▉
// ▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉ ▉ ▉▉▉ ▉▉▉▉▉▉▉▉ ▉
// ▉ ▉ ▉▉▉▉ ▉ ▉ ▉ ▉▉ ▉ ▉▉ ▉▉ ▉ ▉▉
// ▉▉ ▉ ▉ ▉ ▉ ▉▉ ▉ ▉ ▉▉▉ ▉ ▉▉▉ ▉▉▉
// ▉ ▉▉ ▉ ▉▉ ▉▉ ▉ ▉ ▉ ▉▉▉▉
// ▉ ▉▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉ ▉▉
// ▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉ ▉▉ ▉
// ▉ ▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉▉ ▉▉ ▉ ▉
// ▉▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉▉
// ▉ ▉▉▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉ ▉▉
// ▉ ▉▉▉ ▉ ▉▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉▉
// ▉ ▉ ▉ ▉▉ ▉▉▉▉▉▉▉▉▉ ▉ ▉ ▉▉
// ▉ ▉ ▉▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉▉
// ▉▉▉▉ ▉▉▉▉▉▉▉▉ ▉▉▉▉▉▉▉▉▉▉▉ ▉▉ ▉▉ ▉▉▉▉
// ▉ ▉▉▉▉ ▉ ▉▉▉▉▉▉▉▉▉▉▉▉ ▉▉ ▉▉ ▉▉
// ▉▉ ▉▉▉ ▉▉▉▉ ▉▉ ▉ ▉▉▉▉ ▉ ▉ ▉
// ▉▉▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉ ▉▉▉
// ▉ ▉▉ ▉ ▉ ▉ ▉▉▉▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉
// ▉▉▉ ▉ ▉ ▉ ▉▉▉▉ ▉▉▉▉ ▉ ▉▉▉
// ▉▉ ▉ ▉▉▉▉ ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉ ▉▉
// ▉ ▉▉▉▉ ▉ ▉▉▉▉▉▉ ▉ ▉
// ▉▉▉▉▉▉▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉▉ ▉▉
// ▉ ▉ ▉ ▉▉ ▉ ▉▉▉ ▉ ▉▉▉ ▉ ▉▉▉
// ▉ ▉▉▉ ▉ ▉▉▉ ▉▉ ▉▉▉ ▉▉ ▉▉▉▉▉▉▉ ▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉ ▉▉▉▉▉▉ ▉ ▉▉▉▉▉▉▉▉
// ▉ ▉▉▉ ▉ ▉ ▉ ▉▉ ▉▉ ▉▉ ▉ ▉ ▉
// ▉ ▉ ▉▉▉▉▉ ▉▉▉ ▉ ▉ ▉▉ ▉ ▉ ▉ ▉▉
// ▉▉▉▉▉▉▉ ▉▉▉ ▉ ▉▉▉ ▉▉ ▉ ▉▉ ▉▉ ▉▉
// 微信打赏,感谢支持
#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
- 粉丝: 390
- 资源: 8868
最新资源
- 云存储中的安全高效数据拥有性和去重证明(POSD)
- 毕业设计-基于HTML+CSS+Javascript旅游网站源码+文档说明(高分项目)
- HTML+CSS+JS科技蓝登录页
- C++操作Oracle SQL示例程序 codbc-master
- 分散式网络存储安全与自管理机制研究 - Maidsafe Vault网络安全特性解析
- Monero中的环机密交易协议:基于MLASG和保密交易改进的隐私保护机制
- 比特币闪电网络:支持大量实时交易的可扩展离链支付系统
- 在渗透测试中快速检测常见中间件、组件的高危漏洞 .zip
- C#ASP.NET大学校园订餐平台源码数据库 Access源码类型 WebForm
- 图形化渗透测试辅助工具.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈