戴帽子的星星吧 关注:1,055贴子:2,086
  • 2回复贴,共1
WIN32汇编基础教程(三)--有关资源编辑器
http://tieba.baidu.com/f?kz=559196202


IP属地:广东1楼2010-01-04 19:54回复
    WIN32汇编基础教程--第一个程序的习题
    http://tieba.baidu.com/f?kz=555166590


    IP属地:广东2楼2010-01-04 19:55
    回复

      Mars机目前你所见到的几乎都是软件模拟系统,模拟器模拟Mars系统工作。
      有的模拟器支持88标准,有的支持94标准,有的支持88标准并部分支持94
      标准,所以你在选择一个模拟器时应该好好看看它支持那个标准。
      Mars机的汇编程序通常称为RedCode,而Mars模拟器几乎都集成了一个RedCode
      的编译器,将RedCode程序编译为机器码写入内存。
      系统初始时内存中都是DATA $ 0,$ 0 ,每一个程序加载到内存的随机位置
      ,当多个程序都加载完后系统给每个程序创建一个进程,此时每个进程在进程
      队列中的位置是随机的,然后系统开始运行。然后各个程序开始进行对抗,
      看最终谁能生存下来。
      <三> RedCode简单语法(按94标准)
      指令写法可以记做:
      <label>OPCODE <OP_modify> <A_modify> A_field,<B_modify> B_field
                                    ---------------    ---------------
                                          整体记做A         整体记做B
      <>包含的部分可以省略。
      通常A表示源地址,B表示目标地址。
      OPCODE包含:
          DAT      中止进程
          MOV      移动数据A到B
          ADD      A加B并将结果存入B
          SUB      A减B并将结果存入B
          MUL      A乘B并将结果存入B
          DIV      B/A并将结果存入B,如果A=0进程结束
          MOD      B%A并将结果存入B,如果A=0进程结束
          JMP      跳转到A
          JMZ      如果B=0则跳转到A
          JMN      如果B!=0则跳转到A
          DJN      先将B减1, 如果B!=0跳转到A
          SPL      开启一个新进程,新进程起始执行地址为A
          SLT      如果A<B跳过下一条指令
          CMP      和SEQ相同
          SEQ      如果A=B跳过下一条指令
          SNE      如果A!=B跳过下一条指令
          NOP      空指令,什么也不干。
          LDP STP     本地地址操作指令,一般都没有实现,这里就不解释了。
          DAT   指令可以只有A区域出现,此时一般编译器会将内存的A区域拷贝
               一份到B区域。
          JMP   SPL   指令也可以只有一个A区域出现,此时一般编译器会将内
               存的B区域作为$ 0
      


      IP属地:广东4楼2010-01-14 06:33
      回复