哈哈~~~6年前的痕迹,刀客、zyg、老树等也失踪多年了
《Keil C51红杏出墙记》节选 (ZT)关键词: Keil C51 hotpower hotos
《Keil C51红杏出墙记》节选 | HotPower 发表于 6/26/2004 7:51:36 PM 侃单片机 ←返回版面  |
/*--------------------------------------------------------------------------
伪本征函数——Keil C51头文件INTRINS.H的扩容工程 第三版
根据HotPower的“同名小说《Keil C51红杏出墙记》”改编
2004.6.8 作于西安大雁塔村大队部
--------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------
本文件名: HotIns.H
---------------------------------------------------------------------------*/
#ifndef __HotIns_H__
#define __HotIns_H__
/*------------------------------------------------------------------------*/
#define _setc_() CY = 1
#define _clrc_() CY = 0
/*------------------------------------------------------------------------*/
#define _setb_(RBIT) RBIT = 1
#define _clrb_(RBIT) RBIT = 0
/*------------------------------------------------------------------------*/
#define _clra_() ACC = 0
/*------------------------------------------------------------------------*/
#define _xorr_(RX) RX ^= RX //用于取奇偶位P,且RX=0
#define _andr_(RX) RX &= RX //用于取奇偶位P,且RX=不变
#define _orr_(RX) RX |= RX //用于取奇偶位P,且RX=不变
#define _notr_(RX) RX =~RX
/*------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------
伪本征函数——Keil C51头文件INTRINS.H的扩容工程(第二版)头文件HotIns.H扩充部分
--------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------*/
#define _rrca_() CY = ACC & 0x01 //装载代码RRC A
#define _rlca_() CY = ACC & 0x80 //装载代码RLC A
/*------------------------------------------------------------------------------------------*/
#define _rrcr_(RX) CY = RX & 0x01; RX = ACC //装载代码RRC RX
#define _rlcr_(RX) CY = RX & 0x80; RX = ACC //装载代码RLC RX
/*------------------------------------------------------------------------------------------*/
#define _movra_(RX) RX = ACC
#define _movar_(RX) ACC = RX
/*------------------------------------------------------------------------------------------*/
#define _movcb_(RBIT) CY = RBIT
#define _movbc_(RBIT) RBIT = CY
/*------------------------------------------------------------------------------------------*/
#define _movb0_(RBIT, RX) RBIT = RX & 0x01 //用于取RX的最低位
#define _movb7_(RBIT, RX) RBIT = RX & 0x80 //用于取RX的最高位
/*------------------------------------------------------------------------------------------*/
#define _movc0_(RX) CY = RX & 0x01
#define _movc7_(RX) CY = RX & 0x80
/*------------------------------------------------------------------------------------------*/
/*--------------------------------------------------------------------------------------------
伪本征函数——Keil C51头文件INTRINS.H的扩容工程(第三版)头文件HotIns.H扩充部分 2004.6.8
--------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------*/
#define _icall_(ADDR) (*(void (*)())((void *)ADDR))();//通用直接或间接调用函数_icall_()声明
/*------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------*/
#define _db_(TABNAME, TAB) code unsigned char TABNAME[]={TAB}//装载数据或代码_db_()声明
/*------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------*/
sfr16 DPTR = 0x82;//声明C51标准的16位寄存器DPTR, 以便实现汇编级的命令跳转
/*-------------------------------------------------------------------------------------------*/
#define _lcall_(ADDR) DPTR = (void *)ADDR;_icall_(__ljmp_code__ + 4);//直接调用函数_lcall_()声明
#define _ljmp_(ADDR) DPTR = (void *)ADDR;_icall_(__ljmp_code__); //直接跳转函数_ljmp_()声明
_db_(__ljmp_code__, "\x15\x81\x15\x81\xc0\x82\xc0\x83\x22"); //装载数据DB 0x15..0x22
/*--------------------------------------------------------------------------------------------
装载代码 __ljmp_code__: DEC SP;//_ljmp_()函数入口,调整SP以免程序崩溃
DEC SP
PUSH DPL;//_lcall_()函数入口
PUSH DPH
RET
--------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------*/
#define _intjmp_(ADDR) DPTR = (void *)ADDR;_icall_(__reset_code__) //中断隐身函数_intjmp_()声明
#define _reset_() DPTR = __reset_code__ + 5;_icall_(__reset_code__) //软复位函数_reset_()声明
_db_(__reset_code__, "\xc0\x82\xc0\x83\x32\xe4\xc0\xe0\xc0\xe0\x32");//装载数据DB 0xc0..0x32
/*--------------------------------------------------------------------------------------------
装载代码 __reset_code__: PUSH DPL;//非典的软复位函数入口(执行2次RETI)
PUSH DPH
RETI;//_intjmp_()函数调用到此为止中断退出并跳入子程序隐身(让出中断)
CLR A;//经典的软复位函数入口(执行1次RETI)
PUSH ACC
PUSH ACC
RETI;//_reset_()函数调用从此处跳入0x0000开始执行
/*------------------------------------------------------------------------------------------*/
#define _daa_() _icall_(__daa_code__) //十进制调整函数_daa_()声明
/*------------------------------------------------------------------------------------------*/
_db_(__daa_code__, "\xd4\x22"); //装载数据DB 0xd4,0x22
/*--------------------------------------------------------------------------------------------
装载代码 __daa_code__: DA A
RET
--------------------------------------------------------------------------------------------*/
/*------------------------------------------------------------------------------------------*/
#define _swapr_(RX) ACC = RX; _swapa_(); RX = ACC; //变 量半字节交换函数_swapr_()声明
#define _swapa_() _icall_(__swapa_code__); //累加器半字节交换函数_swapa_()声明
_db_(__swapa_code__, "\xc4\x22"); //装载数据DB 0xc4,0x22
/*--------------------------------------------------------------------------------------------
装载代码 __swapa_code__: SWAP A
RET
--------------------------------------------------------------------------------------------*/
#endif
签名:
[tr] [/tr] ●█〓██▄▄▄▄▄▄ ●●●●●●→
▄▅██████▅▄▃▂ 灌水入坛,传播非典!
██████████████
◥⊙▲⊙▲⊙▲⊙▲⊙▲⊙▲◤
|
|
|
《Keil C51红杏出墙记》节选 - HotPower 2004-6-26 19:51:36 [ID:1254672 点击:2232] (7100 Bytes) (30) 佩服 <无内容> - victorymay 2005-9-14 9:12:58 [ID:1814314 点击:37] (0 Bytes) (0) 佩服啊 <无内容> - wwwzhang 2005-9-13 21:04:58 [ID:1813978 点击:34] (0 Bytes) (0) 晕菜 <无内容> - 0198428 2004-7-2 16:53:32 [ID:1262730 点击:148] (0 Bytes) (0) 楼主是陕西人?我在西安,有空多交流!!! <无内容> - yang96381 2004-6-29 13:33:12 [ID:1257547 点击:141] (0 Bytes) (0) 啊!未见精妙有出楼主之右者 - 21ccy 2004-6-29 13:15:22 [ID:1257513 点击:185] (20 Bytes) (0) zyg兄弟 - lm7556 2004-6-28 19:23:22 [ID:1256983 点击:211] (69 Bytes) (0) 把问题复杂化了 - lm7556 2004-6-28 18:40:37 [ID:1256945 点击:216] (27 Bytes) (0) 汇编式的C语言 - jtylm 2004-6-28 13:52:12 [ID:1256479 点击:251] (75 Bytes) (0) 不错哦. <无内容> - lidan005 2004-6-28 12:35:23 [ID:1256367 点击:182] (0 Bytes) (0) 因为楼主的帖子,让我这几天脑子很乱 - zyg 2004-6-28 12:06:36 [ID:1256322 点击:245] (225 Bytes) (0) 顶 <无内容> - xiaoyudz 2004-6-27 19:28:09 [ID:1255645 点击:197] (0 Bytes) (0) 男人就是男人,女人就是女人;应该把男人改造成女人, - r2d2 2004-6-27 16:02:48 [ID:1255419 点击:468] (19 Bytes) (0) 或许正是因为“实用性”差,才体现出价值来。 - zyg 2004-6-27 15:43:49 [ID:1255405 点击:462] (433 Bytes) (0) 同意刀客,不要将自己的思维困惑在汇编上 - lishuanghua 2004-6-27 11:09:17 [ID:1255198 点击:479] (51 Bytes) (0) 佩服HOTPOWER. <无内容> - fineasy 2004-6-27 9:46:02 [ID:1255142 点击:473] (0 Bytes) (0) 十分佩服HOT前辈的钻研精神 - crazyeda 2004-6-27 9:25:07 [ID:1255120 点击:497] (73 Bytes) (0) ding - fsaok 2004-6-27 6:05:38 [ID:1255081 点击:497] (12 Bytes) (0) 与刀客相反 - qqguy 2004-6-27 1:02:38 [ID:1255036 点击:547] (90 Bytes) (0) HotPower最大的敌人是HotPower,不是刀客。 - 刀客 2004-6-27 0:52:50 [ID:1255032 点击:588] (467 Bytes) (0) 谢谢拍砖!请问用"纯种的C"如何实现"中断隐身"??? - HotPower 2004-6-27 0:45:18 [ID:1255029 点击:574] (55 Bytes) (0) 把C写成了汇编!汇编痕迹过浓 <无内容> - 李冬发 2004-6-27 0:29:40 [ID:1255024 点击:530] (0 Bytes) (0) 好啊! - zyg 2004-6-27 0:17:07 [ID:1255019 点击:526] (81 Bytes) (0) 加油 <无内容> - longsyz 2004-6-27 0:07:49 [ID:1255014 点击:505] (0 Bytes) (0) “种田版”是自给自足,要走产业化的道路嘛 - zyg 2004-6-26 21:13:46 [ID:1254803 点击:562] (24 Bytes) (0) 我每个程序都用的是“HotOS”,但是“种田版”的。。。 <无内容> - HotPower 2004-6-26 21:00:22 [ID:1254777 点击:540] (0 Bytes) (0) 我看下一步你的目标是—— - zyg 2004-6-26 20:57:55 [ID:1254773 点击:585] (79 Bytes) (0) 老大不用您帮着吹,这里有“身份的人”太多了。村民写的没档次! <无内容> - HotPower 2004-6-26 20:17:40 [ID:1254704 点击:542] (0 Bytes) (0) 顶!请版主加精! - zyg 2004-6-26 20:04:45 [ID:1254688 点击:572] (147 Bytes) (0) 伪本征函数库文件HotIns.H应用演示程序 - HotPower 2004-6-26 19:52:28 [ID:1254675 点击:752] (6073 Bytes) (1)
|