打印

**别人的东西还是很好玩滴~

[复制链接]
楼主: hotpower
手机看帖
扫描二维码
随时随地手机跟帖
81
hotpower|  楼主 | 2007-11-11 19:57 | 只看该作者 回帖奖励 |倒序浏览

犹豫是否把反汇编代码全给他...

使用特权

评论回复
82
qihao| | 2007-11-11 20:40 | 只看该作者

哈哈

见此贴才知 21IC 的老鸟不少哈  哈哈  hotpower cccp 都什么古董东西哦,好久没听到什么 PCTOOLs、 吴晓军的213、 Debug、

我干的最大的坏事就是:用PCTOOLS把硬盘的第一个字节“0x55”改了哈!


使用特权

评论回复
83
hotpower|  楼主 | 2007-11-11 20:43 | 只看该作者

哈哈~~~现在还可以随手写几句

现在还可以随手写几句

mov ax,201
mov bx,7c00
mov cx,1
mov dx,80
int 13
int 20

mov ax,301
mov bx,7c00
mov cx,1
mov dx,80
int 13
int 20

使用特权

评论回复
84
hc0| | 2007-11-11 21:29 | 只看该作者

唉呀,高手呀!

唉,国家之栋梁呀!希望hotpower也能有两个门徒哦!不要让绝技失传哦!

使用特权

评论回复
85
Anymcu| | 2007-11-11 21:44 | 只看该作者

hot教主

你的51反汇编数据代码分离需不需要部分手工参与?如果是完全由软件自动识别分离那就太厉害了

使用特权

评论回复
86
hotpower|  楼主 | 2007-11-11 21:45 | 只看该作者

楼上2位违规使用菜农赞美禁语,惩罚发贴

发贴内容: 支持删除hotpower这个ID!!


我会谅解你的~~~
相关链接:https://bbs.21ic.com/club/bbs/ShowAnnounce.asp?id=2749579

使用特权

评论回复
87
qihao| | 2007-11-11 21:47 | 只看该作者

int 13



我还以为我在这里算是老古董东西了呢!

看来我们这个年纪的还有不少人奋斗在第一线哈!  同勉。

使用特权

评论回复
88
Anymcu| | 2007-11-11 21:49 | 只看该作者

不懂

删掉自己的ID?

使用特权

评论回复
89
minmindede| | 2007-11-11 21:54 | 只看该作者

5年前在电子设计大赛的时候搞过一点51的,比起楼主 望尘莫

佩服!

不过始终觉得正向比方向要快。 而且可以加入一些新的东东,方便

使用特权

评论回复
90
iC921| | 2007-11-11 22:17 | 只看该作者

LZ有才

更应有德。

俺已经建议删除hotpower这个ID,最少要改掉它的密码,禁闭一段时间,令其反省!

使用特权

评论回复
91
hotpower|  楼主 | 2007-11-11 22:24 | 只看该作者

一直没发表~~~虽然它不会"祸乱人间"~~~

回87楼老兄:

哈哈~~~看到INT 13就知道此人会干"坏事"~~~

我那时做了很多宏,我自称之为"宏C".不过存在软盘搬家认为没用都丢了...

不过我玩PIC单片机做菜鸟时,没上过网,C语言很难搞到手(因为村里贫穷).

所以我就把PC上的"宏C"移植到了,自己"臭美"地称之为"HPL语言"~~~

不过在一个军工用后,给他们看源码,编程高手都问这是什么语言编写的~~~

不说了~~~再说就...

以下是HPL与C的对照~~~(都是无限嵌套)

一直没发表~~~虽然它不会"祸乱人间"~~~

;-------------------------------------------------------------------;
;HPL Version 1.0 演示程序           ;
;HotPower 2003.5.25       ;
;-------------------------------------------------------------------;
 #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
;C++ main(){
    Main(Void);主程序开始
    nop;debug
;C++ unsigned char i,j,k,m,n,h,l,x,y,z;
 nop;debug
    TDByteVar(p,0x60,0x64);声明1个地址不连续字型变量i,地址定位在0x60和0x64处
 nop;debug
    VarVal(p,0x1234);
 nop;debug
; Var(t,0x66,TDByte);声明1个字节型变量i,地址定位在0x20处
;产生告警信息:
;请用TDByteVal()定义变量[t],地址为[0x66]
 Var(i,0x20,TByte);声明1个字节型变量i,地址定位在0x20处
 nop;debug
    VarVal(i,0x20);i变量使用正确
 nop;debug
    ByteVal(i,0x88);i变量使用正确
 nop;debug
    WordVal(i,0x1234);i变量使用错误,地址0x21被改写为0x12
; TypeVar(i,0x20,TWord);改写1个字型变量i,地址定位在0x20:0x21处
;产生告警信息:
;第1个变量类型被重新定义为[TWord]类型,变量地址为[0x20]
    WordVal(i,0x1234);i变量使用正确
    ByteVal(i,0x88);i变量使用正确
 Var(j,0x21,TByte);声明1个字节型变量j,地址定位在0x21处
;Var(j,0x60,TByte);声明1个字节型变量j,地址定位在0x21处
;产生错误信息(115)
;Duplicate label ("j" or redefining symbol that cannot be redefined
 Var(k,0x22,TByte);声明1个字节型变量k,地址定位在0x22处
;Var(k,0x22,TByte);声明1个字节型变量k,地址定位在0x22处
;产生错误信息:
;第3个变量[k]被重复定义,变量地址为[0x22]
 Var(m,0x23,TByte);声明1个字节型变量m,地址定位在0x23处
 Var(n,0x24,TByte);声明1个字节型变量n,地址定位在0x24处
 Var(h,0x25,TByte);声明1个字节型变量h,地址定位在0x25处
 Var(l,0x26,TByte);声明1个字节型变量l,地址定位在0x26处
 Var(x,0x27,TByte);声明1个字节型变量x,地址定位在0x27处
 Var(y,0x28,TByte);声明1个字节型变量y,地址定位在0x28处
 Var(z,0x29,TByte);声明1个字节型变量z,地址定位在0x29处
;TypeVar(z,0x29,TWord);将变量z改写为字型,地址定位在0x29:0x2a处
;产生告警信息:
;第10个变量[z]类型被重新定义为[TWord]类型,变量地址为[0x29]
;C++ unsigned int ii,jj,kk,mm,nn,hh,ll,xx,yy,zz;
 Var(ii,0x30,TWord);声明1个字型变量ii,地址定位在0x30:0x31处
 Var(jj,0x32,TWord);声明1个字型变量jj,地址定位在0x32:0x33处
 Var(kk,0x34,TWord);声明1个字型变量kk,地址定位在0x34:0x34处
 Var(mm,0x36,TWord);声明1个字型变量mm,地址定位在0x36:0x37处
 Var(nn,0x38,TWord);声明1个字型变量nn,地址定位在0x38:0x39处
 Var(hh,0x3a,TWord);声明1个字型变量hh,地址定位在0x3a:0x3b处
 Var(ll,0x3c,TWord);声明1个字型变量ll,地址定位在0x3c:0x3d处
 Var(xx,0x3e,TWord);声明1个字型变量xx,地址定位在0x3e:0x3f处
 Var(yy,0x40,TWord);声明1个字型变量yy,地址定位在0x40:0x41处
 Var(zz,0x42,TWord);声明1个字型变量zz,地址定位在0x42:0x43处
;Var(zz,0x42,TByte);将变量zz改写为字节型,地址定位在0x42:0x43处
;产生告警信息:
;第20个变量[zz]有多类型定义,变量地址为[0x42]
; org 0x8fd
    nop;debug
 IFET_Bit(STATUS,Z);
     ByteVal(i,0);
   nop;debug
    ELSEIFET_Bit;
     ByteVal(i,1);
   nop;debug
    ENDIFET_Bit;
   nop;debug
 IFNT_Bit(STATUS,Z);
     ByteVal(i,0);
   nop;debug
    ELSEIFNT_Bit;
     ByteVal(i,1);
   nop;debug
    ENDIFNT_Bit;
;C++    i=100;
 ByteVal(i,10);
 nop;debug
;C++    j=123
 ByteVal(j,123);
 nop;debug
;C++    ii=(unsigned int)i*j;
; MulByteVar(i,j,ii);
;C++ ii=0x1234;
 WordVal(ii,0x1234);
 nop;
;C++    kk=ii/jj;
 DivWordVar(ii,jj,xx,yy);
 nop;debug
;C++    jj=ii;
 WordVar(jj,ii);
 nop;debug
;C++ i=88;
 ByteVal(i,80);
 nop;debug
;C++ if(i==88){
    IFNE_ByteVal(i,88);
;C++ j=99;
     ByteVal(j,99);
     nop;debug
;C++ ??????????????
     IFET_TestByte(zz);
;C++ j=1;
       ByteVal(j,1);
       nop;debug
;     ESLEIFET_TestByte
;C++ j=0;
       ByteVal(j,0);
       nop;debug
     ENDIFET_TestByte;
;C++ if(x & 1){
     IFET_AndByteVal(x,1)
;C++ j=1;
       ByteVal(j,1);
       nop;debug
     ELSEIFET_AndByteVal
       ByteVal(j,0);
       nop;debug
     ENDIFET_AndByteVal
;C++ } 

;C++ if(x | 1){
     IFET_OrByteVal(x,1)
;C++ j=1;
       ByteVal(j,1);
       nop;debug
     ELSEIFET_OrByteVal
       ByteVal(j,0);
       nop;debug
     ENDIFET_OrByteVal
;C++ } 

;C++ if(x ^ 1){
     IFET_XorByteVal(x,1)
;C++ j=1;
       ByteVal(j,1);
       nop;debug
     ELSEIFET_XorByteVal
       ByteVal(j,0);
       nop;debug
     ENDIFET_XorByteVal
;C++ } 

;C++ if(i>=33){
  IFGE_ByteVal(i,33);
;C++ k=i;
       ByteVar(k,i);
       nop;debug
;C++ }
  ENDIFGE_ByteVal;
;C++ if(j==99){
     IFEQ_ByteVal(j,88);
;C++ k=88;
       ByteVal(k,88);
       nop;debug
;C++ }
;C++ else{
     ELSEIFEQ_ByteVal;
;C++ m=9;
       ByteVal(m,9);
       nop;debug
;C++ }
     ENDIFEQ_ByteVal
;C++ h=9;
     ByteVal(h,9);
     nop;debug
;C++ }
;C++ else{
   ELSEIFNE_ByteVal;
;C++ n=9;
     ByteVal(n,9);
     nop;debug
;C++ if(n<8){;
     IFLE_ByteVal(n,8);
;C++ l=12;
    ByteVal(l,12);l=12;
       nop;debug
;C++ }
;C++ else{
     ELSEIFLE_ByteVal;
;C++ z=0xaf;
    ByteVal(z,0xaf);
       nop;debug
;C++ }
     ENDIFLE_ByteVal;
  nop;debug
;C++ }
   ENDIFNE_ByteVal;
;C++ x=123;
   ByteVal(x,123);
   nop;debug
;C++ y=25;
   ByteVal(y,25);
   nop;debug
;C++ y++;
   IncByte(y);
   nop;debug
;C++ if(x>5){
   IFGT_ByteVal(x,5);
;C++ x=y;
     ByteVar(x,y);
  nop;debug
   ENDIFGT_ByteVal;
   nop;debug
 org 0x10fd
    nop;debug
 IFET_Bit(STATUS,Z);
     ByteVal(i,0);
   nop;debug
    ELSEIFET_Bit;
     ByteVal(i,1);
   nop;debug
    ENDIFET_Bit;
   nop;debug
    ByteVal(i,2);
  nop
    DoCase(i);
      Case 1;
  nop
        AndByteVal(j,0xfe);
  nop
      Case 2;
        AndByteVal(j,0x7f);
  nop
    EndCase;
  nop
;C++ }
;C++ }
   MainEnd;主程序结束

 


;-------------------------------------------------------------------;DOCASE(switch) 演示程序           ;
;HotPower 2003.6.8        ;
;-------------------------------------------------------------------;
 #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
  Main(Void); main(){//主程序开始
    Var(i,0x20,TByte); unsigned char i;
    Var(j,0x30,TByte); unsigned char j;
    Var(k,0x40,TByte); unsigned char k;
    Var(m,0x50,TByte); unsigned char m;
    Var(n,0x60,TByte); unsigned char n;
    ByteVal(i,2); i = 2;
    ByteVal(j,3); j = 3;
    ByteVal(k,0); k = 0;
    DoCase(k); switch(k){
      nop;
      Case 10; case 10:
        nop; //HPL语言同Delphi等语言一样,不需要加break语句
      Case 8; case 8:
        nop
      ExecCase;//该语句为HPL语言特有的,其他语言中没有
;-----ExecCase执行CASE比较成立的语句--------------------
       nop
    ELSECase; default:
;-----ElseCase执行CASE比较不成立的语句------------------
      nop;
      IncByte(k); k++;
      nop
      IFEQ_ByteVal(k,6); if(k == 6){
        nop
        ExitCase; break;
        nop
      ENDIFEQ_ByteVal; }
      nop;
      LoopCase; continue;
      nop
    ENDCase; }
    nop
    DoCase(i); switch(i){
      Case 1; case 1:
        nop
        ExitCase; break;
      Case 2; case 2:
        nop
        DoCase(j); switch(j){
          Case 1; case 1:
            nop;
          Case 2; case 2:
            nop;
          Case 3; case 3:
            ByteVal(k,88); k = 88;
            nop
            IFEQ_ByteVal(k,88); if(k == 88){
              ByteVal(m,3); m = 3;
              nop
              DoCase(m); switch(m){
                Case 1; case 1:
                  nop
                Case 2; case 2:
                  nop
                Case 3; case 3:
                  ByteVal(n,0x99); n = 99;
                  nop;
                  IFEQ_ByteVal(n,88); if(n == 88){
                    nop
                  ELSEIFEQ_ByteVal; }else{
                    ByteVal(i,2); i = 2;
                    nop;
                    DoCase(i); switch(i){
                      Case 1; case 1:
                        nop
                      Case 2; case 2:
                        ByteVal(j,8); j = 8;
                        nop
                        IFLE_ByteVal(j,88); if(j <= 88){
                          nop
                        ELSEIFLE_ByteVal; }else{
                          ByteVal(j,3); j = 3;
                          nop
                          DoCase(j); switch(j){
                            Case 1; case 1:
                              nop;
                            Case 2; case 2:
                              nop
                            ELSECase; default:
                              nop;
                          ENDCase; }
                          nop
                          ByteVal(k,3); k = 3;
                          nop
                          DoCase(k); switch(k){
                            Case 1; case 1:
                              nop;
                            Case 2; case 2:
                              nop
                            ELSECase; default:
                              nop;
                          ENDCase; }
                          nop
                        ENDIFLE_ByteVal; }
                        nop
                      ELSECase; default:
                        nop
                    ENDCase; }
                    nop
                  ENDIFEQ_ByteVal; }
                  nop;
                ELSECase; default:
                  nop;
              ENDCase; }
              nop
            ELSEIFEQ_ByteVal; }else{
              nop
            ENDIFEQ_ByteVal; }
            nop
          ELSECase; }
            nop
        ENDCase; }
        nop
      Case 3; case 3:
        nop
      Case 4; case 4:
        ByteVal(j,8); j = 8;
        nop
        DoCase(j); switch(j){
          Case 1; case 1:
            nop;
          Case 2; case 2:
            nop
          ELSECase; default:
            nop;
        ENDCase; }
        nop;
        nop
      Case 5; case 5:
        nop
      ELSECase; default:
        ByteVal(j,1); j = 1;
        nop
        DoCase(j); switch(j){
          Case 1; case 1:
            nop;
          Case 2; case 2:
            nop
          ELSECase; default:
            nop;
        ENDCase; }
        nop;
    ENDCase; }
    nop
  MainEnd;}//主程序结束

;-------------------------------------------------------------------;while演示程         ;
;HotPower 2003.6.8        ;
;------------------------------------------------------------------- #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
  Main(Void); main(void){//主程序开始
    Var(i,0x20,TByte); unsigned char i;
    Var(j,0x30,TByte); unsigned char j;
    Var(k,0x40,TByte); unsigned char k;
    Var(m,0x50,TByte); unsigned char m;
    Var(n,0x60,TByte); unsigned char n;
    ByteVal(i,10); i = 10;
    ByteVal(j,3); j = 3;
    ByteVal(k,8); k = 8;
    nop
    WhileET_Bit(PORTB,BIT7);
      nop
    EndWhileET_Bit;
    nop
    DnWhileET_Bit;
      nop
;      ExitDnWhileET_Bit;
      nop
    EndDnWhileET_Bit(PORTB,BIT7);
    nop
    DnWhileNT_Bit;
      nop
      ExitDnWhileNT_Bit;
      nop
    EndDnWhileNT_Bit(PORTB,BIT7);
    nop
    WhileEQ_ByteVal(i,10); while(i == 10){
      nop
      ByteVal(m,1); m = 1;
      nop;
      WhileNE_ByteVal(m,10); while(m != 10){
        nop;
        IncByte(m); m++;
        nop;
      ENDWhileNE_ByteVal; }
      nop;
      ByteVal(m,1); m = 1;
      nop;
      WhileLT_ByteVal(m,10); while(m < 10){
        nop;
        ExitWhileLT_ByteVal; break;
        nop
        IncByte(m); m++;
        nop;
      ENDWhileLT_ByteVal; }
      nop;
      ByteVal(m,18); m = 18;
      nop;
      WhileGT_ByteVal(m,10); while(m > 10){
        nop;
        IncByte(m); m++;
        nop
        LoopWhileGT_ByteVal; continue;
        nop;
      ENDWhileGT_ByteVal; }
      nop;
      ByteVal(m,1); m = 1;
      nop;
      WhileLE_ByteVal(m,10); while(m <= 10){
        nop;
        IncByte(m); m++;
        nop;
      ENDWhileLE_ByteVal; }
      nop;
      ByteVal(m,18); m = 18;
      nop;
      WhileGE_ByteVal(m,10); while(m >= 10){
        nop;
        IncByte(m); m++;
        nop;
      ENDWhileGE_ByteVal; }
      nop;
    ENDWhileEQ_ByteVal; }
    nop
  MainEnd; }//主程序结束
 
;-------------------------------------------------------------------;
;For演示程序           ;
;HotPower 2003.6.8        ;
;-------------------------------------------------------------------;
 #include <p16f877.inc>
 #include <HotPower.inc>HPL语言函数库文件
 #include <HPLMath.inc>HPL语言数学函数库文件
 #include <HPL16877.inc>P16F877函数库文件
  Main(Void); main(void){//主程序开始
    Var(i,0x20,TByte); unsigned char i;
    Var(j,0x30,TByte); unsigned char j;
    Var(k,0x40,TWord); unsigned int k;
    Var(t,0x48,TWord); unsigned int t;
    Var(m,0x50,TByte); unsigned char m;
    Var(n,0x60,TByte); unsigned char n;
    WordVal(t,0); t = 0;
    ByteVal(m,0); m = 0;
    ByteVal(n,0); n = 0;
    nop
    For_ByteVal(i,1,10); for(i = 1; i <= 10; i++){
      nop
      IncByte(m); m++;
      nop
      For_ByteVal(j,10,1); for(j = 10; j >= 1; j--){
        nop
        IFGT_ByteVal(n,0); if(n > 0){
          nop
          LoopFor_ByteVal; continue;
          nop
        ENDIFGT_ByteVal; }
        nop
        IncByte(n); n++;
        nop
      ENDFor_ByteVal; }   
      nop
      For_WordVal(k,1,10000); for(k = 1; k <= 10000; k++){
        nop
        IncByte(n); n++;
        IFEQ_ByteVal(n,128); if(n == 128){
          nop
          ExitFor_WordVal; break;
          nop
        ENDIFEQ_ByteVal; }
        nop
      ENDFor_WordVal; } 
      nop
      AddWordByte(t,m); t += m;
      nop
      AddWordByte(t,n); t += n;
      nop
    ENDFor_ByteVal; }
    nop
  MainEnd; }//主程序结束
 
 
 

使用特权

评论回复
92
qihao| | 2007-11-11 22:59 | 只看该作者

KAO hotpower 老兄有才

王志东 就是遇到王选了,给他支了个道,搞 windows的“汉化”  当然,最后搞成了 外挂。

这个老兄早年要是有个 导师,一定没时间来泡 21IC了。

宏  我是很多年以后才知道,更是郁闷倒头!  真不知道那时大学老师都TMD教什么去了。

使用特权

评论回复
93
think1010| | 2007-11-11 23:00 | 只看该作者

有兴趣发展一下自己

使用特权

评论回复
94
shang21ic| | 2007-11-11 23:12 | 只看该作者

哈哈,我也搞过反汇编,登记先.

当年看了个老外的pic单片机的反汇编,写得好精练啊,虽然不长,搞明白还真费了我不少精力,拿别人的工资,帮别人盗窃劳动成果,不良行为啊!现在跳槽不做咯.见谅.

使用特权

评论回复
95
hotpower|  楼主 | 2007-11-11 23:13 | 只看该作者

HPL与其他语言的最大不同在于多了个强大的ExecCase

DoCase(k); switch(k){
      nop;
      Case 10; case 10:
        nop; //HPL语言同Delphi等语言一样,不需要加break语句
      Case 8; case 8:
        nop
      ExecCase;//该语句为HPL语言特有的,其他语言中没有
;-----ExecCase执行CASE比较成立的语句--------------------
       nop
    ELSECase; default:
;-----ElseCase执行CASE比较不成立的语句------------------
      nop;
      IncByte(k); k++;
      nop
      IFEQ_ByteVal(k,6); if(k == 6){
        nop
        ExitCase; break;
        nop
      ENDIFEQ_ByteVal; }
      nop;
      LoopCase; continue;
      nop
    ENDCase; }

其他语言结构为switch/case/default/break/continue

所有case都各自为战,从break退出(有的语言不需要)
那么满足case条件的执行完后都会归一到一个共同的出口后再跳出!

所以我从多年的编程经验看加入是值得的!!!而且很必要.

有个例子很广泛,等我找出来再谈~~~

使用特权

评论回复
96
chen611b| | 2007-11-11 23:54 | 只看该作者

牛。。。。。

牛人一堆,新人开眼界了
留个记号,潜水修炼。。。。。

使用特权

评论回复
97
fsaok| | 2007-11-12 07:53 | 只看该作者

HPL

在dos 年代,我搞的最多是 int 17

-----------------------------------------------------------

HPL 语言,高!

当年我初学PIC,那个ZLG先生把PIC公司的汇编器改写成什么 ZLG 单片机公司的,里面有部分功能给删除掉,害得我有很多宏没有写成,后来在某盗版软件中找到PIC的“正宗”汇编器,才知道上当了。

使用特权

评论回复
98
HWM| | 2007-11-12 07:54 | 只看该作者

呵呵,这年头反汇编还这么热,正汇编都快每人干了。

当初做过BIOS和键盘MCU反汇编,现在看来还有点意思。

使用特权

评论回复
99
hotpower|  楼主 | 2007-11-12 08:12 | 只看该作者

99

使用特权

评论回复
100
hotpower|  楼主 | 2007-11-12 08:12 | 只看该作者

100楼还是自己坐吧~~~天意...

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则