设为首页加入收藏联系我们
  • 首页
  • |
  • 企业简介
  • |
  • 公司新闻
  • |
  • 技术支持
  • |
  • 联系我们
产品分类
  • 连线机系列
  • 百家乐系列
  • 转盘机系列
  • 玛莉机系列
  • 框体机系列
  • 模拟机系列
  • 礼品机系列
  • 推币机系列
最新新闻
  • 烟酒店摆捕鱼达人日进500元 有不少学生光顾
  • 当心“鱼儿机” 吃掉你的钱
  • 捕鱼达人 3小时“打鱼”输掉5000元
  • 捕鱼季 海底之战《捕鱼达人》新推双人对战
  • 爱上水果机是一个错
  • 水果机我爱你
  • 十堰电玩城里遭抢劫 特警及时擒劫匪
  • 电玩城3名打人者被刑拘
  • 电玩城原是赌博场
  • 开“黑网吧”摆“老虎机” 取缔!
您所在的位置: 首页 >> 技术支持 >>

游戏机数据传输指令大全

游戏机数据传输指令大全

  它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据.
  1.通用数据传送指令.
  MOV传送字或字节.
  MOVSX先符号扩展,再传送.
  MOVZX先零扩展,再传送.
  PUSH把字压入堆栈.
  POP把字弹出堆栈.
  PUSHA把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈.
  POPA把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈.
  PUSHAD把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈.
  POPAD把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈.
  BSWAP交换32位寄存器里字节的顺序
  XCHG交换字或字节.(至少有一个操作数为寄存器,段寄存器不可作为操作数)
  CMPXCHG比较并交换操作数.(第二个操作数必须为累加器AL/AX/EAX)
  XADD先交换再累加.(结果在第一个操作数里)
  XLAT字节查表转换.
  ──BX指向一张256字节的表的起点,AL为表的索引值(0-255,即
  0-FFH);返回AL为查表结果.([BX+AL]->AL)
  2.输入输出端口传送指令.
  INI/O端口输入.(语法:IN累加器,{端口号│DX})
  OUTI/O端口输出.(语法:OUT{端口号│DX},累加器)
  输入输出端口由立即方式指定时,其范围是0-255;由寄存器DX指定时,
  其范围是0-65535.
  3.目的地址传送指令.
  LEA装入有效地址.
  例:LEADX,string;把偏移地址存到DX.
  LDS传送目标指针,把指针内容装入DS.
  例:LDSSI,string;把段地址:偏移地址存到DS:SI.
  LES传送目标指针,把指针内容装入ES.
  例:LESDI,string;把段地址:偏移地址存到ES:DI.
  LFS传送目标指针,把指针内容装入FS.
  例:LFSDI,string;把段地址:偏移地址存到FS:DI.
  LGS传送目标指针,把指针内容装入GS.
  例:LGSDI,string;把段地址:偏移地址存到GS:DI.
  LSS传送目标指针,把指针内容装入SS.
  例:LSSDI,string;把段地址:偏移地址存到SS:DI.
  4.标志传送指令.
  LAHF标志寄存器传送,把标志装入AH.
  SAHF标志寄存器传送,把AH内容装入标志寄存器.
  PUSHF标志入栈.
  POPF标志出栈.
  PUSHD32位标志入栈.
  POPD32位标志出栈.
  
  二、算术运算指令
  ───────────────────────────────────────
  ADD加法.
  ADC带进位加法.
  INC加1.
  AAA加法的ASCII码调整.
  DAA加法的十进制调整.
  SUB减法.
  SBB带借位减法.
  DEC减1.
  NEC求反(以0减之).
  CMP比较.(两操作数作减法,仅修改标志位,不回送结果).
  AAS减法的ASCII码调整.
  DAS减法的十进制调整.
  MUL无符号乘法.
  IMUL整数乘法.
  以上两条,结果回送AH和AL(字节运算),或DX和AX(字运算),
  AAM乘法的ASCII码调整.
  DIV无符号除法.
  IDIV整数除法.
  以上两条,结果回送:
  商回送AL,余数回送AH,(字节运算);
  或商回送AX,余数回送DX,(字运算).
  AAD除法的ASCII码调整.
  CBW字节转换为字.(把AL中字节的符号扩展到AH中去)
  CWD字转换为双字.(把AX中的字的符号扩展到DX中去)
  CWDE字转换为双字.(把AX中的字符号扩展到EAX中去)
  CDQ双字扩展.(把EAX中的字的符号扩展到EDX中去)
  
  三、逻辑运算指令
  ───────────────────────────────────────
  AND与运算.
  OR或运算.
  XOR异或运算.
  NOT取反.
  TEST测试.(两操作数作与运算,仅修改标志位,不回送结果).
  SHL逻辑左移.
  SAL算术左移.(=SHL)
  SHR逻辑右移.
  SAR算术右移.(=SHR)
  ROL循环左移.
  ROR循环右移.
  RCL通过进位的循环左移.
  RCR通过进位的循环右移.
  以上八种移位指令,其移位次数可达255次.
  移位一次时,可直接用操作码.如SHLAX,1.
  移位>1次时,则由寄存器CL给出移位次数.
  如MOVCL,04
  SHLAX,CL
  
  四、串指令
  ───────────────────────────────────────
  DS:SI源串段寄存器:源串变址.
  ES:DI目标串段寄存器:目标串变址.
  CX重复次数计数器.
  AL/AX扫描值.
  D标志0表示重复操作中SI和DI应自动增量;1表示应自动减量.
  Z标志用来控制扫描或比较操作的结束.
  MOVS串传送.
  (MOVSB传送字符.MOVSW传送字.MOVSD传送双字.)
  CMPS串比较.
  (CMPSB比较字符.CMPSW比较字.)
  SCAS串扫描.
  把AL或AX的内容与目标串作比较,比较结果反映在标志位.
  LODS装入串.
  把源串中的元素(字或字节)逐一装入AL或AX中.
  (LODSB传送字符.LODSW传送字.LODSD传送双字.)
  STOS保存串.
  是LODS的逆过程.
  REP当CX/ECX<>0时重复.
  REPE/REPZ当ZF=1或比较结果相等,且CX/ECX<>0时重复.
  REPNE/REPNZ当ZF=0或比较结果不相等,且CX/ECX<>0时重复.
  REPC当CF=1且CX/ECX<>0时重复.
  REPNC当CF=0且CX/ECX<>0时重复.
  
  五、程序转移指令
  ───────────────────────────────────────
  1>无条件转移指令(长转移)
  JMP无条件转移指令
  CALL过程调用
  RET/RETF过程返回.
  2>条件转移指令(短转移,-128到+127的距离内)
  (当且仅当(SFXOROF)=1时,OP1JA/JNBE不小于或不等于时转移.
  JAE/JNB大于或等于转移.
  JB/JNAE小于转移.
  JBE/JNA小于或等于转移.
  以上四条,测试无符号整数运算的结果(标志C和Z).
  JG/JNLE大于转移.
  JGE/JNL大于或等于转移.
  JL/JNGE小于转移.
  JLE/JNG小于或等于转移.
  以上四条,测试带符号整数运算的结果(标志S,O和Z).
  JE/JZ等于转移.
  JNE/JNZ不等于时转移.
  JC有进位时转移.
  JNC无进位时转移.
  JNO不溢出时转移.
  JNP/JPO奇偶性为奇数时转移.
  JNS符号位为"0"时转移.
  JO溢出转移.
  JP/JPE奇偶性为偶数时转移.
  JS符号位为"1"时转移.
  3>循环控制指令(短转移)
  LOOPCX不为零时循环.
  LOOPE/LOOPZCX不为零且标志Z=1时循环.
  LOOPNE/LOOPNZCX不为零且标志Z=0时循环.
  JCXZCX为零时转移.
  JECXZECX为零时转移.
  4>中断指令
  INT中断指令
  INTO溢出中断
  IRET中断返回
  5>处理器控制指令
  HLT处理器暂停,直到出现中断或复位信号才继续.
  WAIT当芯片引线TEST为高电平时使CPU进入等待状态.
  ESC转换到外处理器.
  LOCK封锁总线.
  NOP空操作.
  STC置进位标志位.
  CLC清进位标志位.
  CMC进位标志取反.
  STD置方向标志位.
  CLD清方向标志位.
  STI置中断允许位.
  CLI清中断允许位.
  
  六、伪指令
  ───────────────────────────────────────
  DW定义字(2字节).
  PROC定义过程.
  ENDP过程结束.
  SEGMENT定义段.
  ASSUME建立段寄存器寻址.
  ENDS段结束.
  END程序结束.
  
  七、寄存器
  
  1.Registerusagein32bitWindows
  Functionparametersarepassedonthestackaccordingtothecallingconventionslistedon
  page13.Parametersof32bitssizeorlessuseoneDWORDofstackspace.Parameters
  biggerthan32bitsarestoredinlittle-endianform,i.e.withtheleastsignificantDWORDatthe
  lowestaddress,andDWORDaligned.
  Functionreturnvaluesarepassedinregistersinmostcases.8-bitintegersarereturnedin
  AL,16-bitintegersinAX,32-bitintegers,pointers,andBooleansinEAX,64-bitintegersin
  EDX:EAX,andfloating-pointvaluesinST(0).Structuresandclassobjectsnotexceeding
  64bitssizearereturnedinthesamewayasintegers,evenifthestructurecontainsfloating
  pointvalues.Structuresandclassobjectsbiggerthan64bitsarereturnedthroughapointer
  passedtothefunctionasthefirstparameterandreturnedinEAX.Compilersthatdon\''t
  support64-bitintegersmayreturnstructuresbiggerthan32bitsthroughapointer.The
  Borlandcompileralsoreturnsstructuresthroughapointerifthesizeisnotapowerof2.
  RegistersEAX,ECXandEDXmaybechangedbyaprocedure.Allothergeneral-purpose
  registers(EBX,ESI,EDI,EBP)mustbesavedandrestorediftheyareused.Thevalueof
  ESPmustbedivisibleby4atalltimes,sodon\''tpush16-bitdataonthestack.Segment
  registerscannotbechanged,noteventemporarily.CS,DS,ES,andSSallpointtotheflat
  segmentgroup.FSisusedforathreadenvironmentblock.GSisunused,butreserved.
  Flagsmaybechangedbyaprocedurewiththefollowingrestrictions:Thedirectionflagis0
  bydefault.Thedirectionflagmaybesettemporarily,butmustbeclearedbeforeanycallor
  return.Theinterruptflagcannotbecleared.Thefloating-pointregisterstackisemptyatthe
  entryofaprocedureandmustbeemptyatreturn,exceptforST(0)ifitisusedforreturn
  value.MMXregistersmaybechangedbytheprocedureandifsoclearedbyEMMSbefore
  returningandbeforecallinganyotherprocedurethatmayusefloating-pointregisters.All
  XMMregisterscanbemodifiedbyprocedures.Rulesforpassingparametersandreturn
  valuesinXMMregistersaredescribedinIntel\''sapplicationnoteAP589"Software
  ConventionsforStreamingSIMDExtensions".AprocedurecanrelyonEBX,ESI,EDI,EBP
  andallsegmentregistersbeingunchangedacrossacalltoanotherprocedure.
  2.RegisterusageinLinux
  TherulesforregisterusageinLinuxappeartobealmostthesameasfor32-bitwindows.
  RegistersEAX,ECX,andEDXmaybechangedbyaprocedure.Allothergeneral-purpose
  registersmustbesaved.Thereappearstobenoruleforthedirectionflag.Functionreturn
  valuesaretransferredinthesamewayasunderWindows.Callingconventionsarethe
  same,exceptforthefactthatnounderscoreisprefixedtopublicnames.Ihaveno
  informationabouttheuseofFSandGSinLinux.Itisnotdifficulttomakeanassembly
  functionthatworksunderbothWindowsandLinux,ifonlyyoutaketheseminordifferences
  intoaccount.
  
  
  
  八、位操作指令,处理器控制指令
  1.位操作指令,8086新增的一组指令,包括位测试,位扫描。BT,BTC,BTR,BTS,BSF,BSR
  1.1BT(BitTest),位测试指令,指令格式:
  BTOPRD1,OPRD2,规则:操作作OPRD1可以是16位或32位的通用寄存器或者存储单元。操作数OPRD2必须是8位立即数或者是与OPRD1操作数长度相等的通用寄存器。如果用OPRD2除以OPRD1,假设商存放在Divd中,余数存放在Mod中,那么对OPRD1操作数要进行测试的位号就是Mod,它的主要功能就是把要测试位的值送往CF,看几个简单的例子:
  1.2BTC(BitTestAndComplement),测试并取反用法和规则与BT是一样,但在功能有些不同,它不但将要测试位的值送往CF,并且还将该位取反。
  1.3BTR(BitTestAndReset),测试并复位,用法和规则与BT是一样,但在功能有些不同,它不但将要测试位的值送往CF,并且还将该位复位(即清0)。
  1.4BTS(BitTestAndSet),测试并置位,用法和规则与BT是一样,但在功能有些不同,它不但将要测试位的值送往CF,并且还将该位置位(即置1)。
  1.5BSF(BitScanForward),顺向位扫描,指令格式:BSFOPRD1,OPRD2,功能:将从右向左(从最低位到最高位)对OPRD2操作数进行扫描,并将第一个为1的位号送给操作数OPRD1。操作数OPRD1,OPRD2可以是16位或32位通用寄存器或者存储单元,但OPRD1和OPRD2操作数的长度必须相等。
  1.6BSR(BitScanReverse),逆向位扫描,指令格式:BSROPRD1,OPRD2,功能:将从左向右(从最高位到最低位)对OPRD2操作数进行扫描,并将第一个为1的位号送给操作数OPRD1。操作数OPRD1,OPRD2可以是16位或32位通用寄存器或存储单元,但OPRD1和OPRD2操作数的长度必须相等。
  1.7举个简单的例子来说明这6条指令:
  
  AADW1234H,5678H
  BBDW9999H,7777H
  MOVEAX,12345678H
  MOVBX,9999H
  BTEAX,8;CF=0,EAX保持不变
  BTCEAX,8;CF=0,EAX=12345778H
  BTREAX,8;CF=0,EAX=12345678H
  BTSEAX,8;CF=0,EAX=12345778H
  BSFAX,BX;AX=0
  BSRAX,BX;AX=15
  
  BTWORDPTR[AA],4;CF=1,[AA]的内容不变
  BTCWORDPTR[AA],4;CF=1,[AA]=1223H
  BTRWORDPTR[AA],4;CF=1,[AA]=1223H
  BTSWORDPTR[AA],4;CF=1,[AA]=1234H
  BSFWORDPTR[AA],BX;[AA]=0;
  BSRWORDPTR[AA],BX;[AA]=15(十进制)
  
  BTDWORDPTR[BB],12;CF=1,[BB]的内容保持不变
  BTCDWORDPTR[BB],12;CF=1,[BB]=76779999H
  BTRDWORDPTR[BB],12;CF=1,[BB]=76779999H
  BTSDWORDPTR[BB],12;CF=1,[BB]=77779999H
  BSFDWORDPTR[BB],12;[BB]=0
  BSRDWORDPTR[BB],12;[BB]=31(十进制)
  
  2.处理器控制指令
  处理器控制指令主要是用来设置/清除标志,空操作以及与外部事件同步等。
  2.1CLC,将CF标志位清0。
  2.2STC,将CF标志位置1。
  2.3CLI,关中断。
  2.4STI,开中断。
  2.5CLD,清DF=0。
  2.6STD,置DF=1。
  2.7NOP,空操作,填补程序中的空白区,空操作本身不执行任何操作,主要是为了保持程序的连续性。
  2.8WAIT,等待BUSY引脚为高。
  2.9LOCK,封锁前缀可以锁定其后指令的操作数的存储单元,该指令在指令执行期间一直有效。在多任务环境中,可以用它来保证独占其享内存,只有以下指令才可以用LOCK前缀:
  XCHG,ADD,ADC,INC,SUB,SBB,DEC,NEG,OR,AND,XOR,NOT,BT,BTS,BTR,BTC
  3.0说明处理器类型的伪指令
  .8086,只支持对8086指令的汇编
  .186,只支持对80186指令的汇编
  .286,支持对非特权的80286指令的汇编
  .286C,支持对非特权的80286指令的汇编
  .286P,支持对80286所有指令的汇编
  .386,支持对80386非特权指令的汇编
  .386C,支持对80386非特权指令的汇编
  .386P,支持对80386所有指令的汇编
  只有用伪指令说明了处理器类型,汇编程序才知道如何更好去编译,连接程序,更好地去检错。

首页 | 企业简介 | 产品展示 | 公司新闻 | 技术支持 | 销售网络 | 联系我们

门市地址:广州市番禺区南村镇白水坑中心街11巷4号 厂房地址:广州市番禺区白水坑 邮编:523129

咨询热线: 18688885267 Q Q:23976526 834548272(新) 835429435(新) 售后专线: 13076752935 售后QQ(视频展示产品QQ):421437468

版权所有:博金科技有限责任公司【广州宝盈(联合)电子】 Akcms 鄂ICP备10001236号

轮盘机 海洋之星 海之魂 轮盘机 海洋之星 海之魂 轮盘机 海洋之星 海之魂 轮盘机价格 海洋之星价格 海之魂厂家 轮盘机配件 海洋之星图片 海之魂批发 轮盘机价格 海洋之星配件 海之魂批发 轮盘机图片 海洋之星图片 海之魂程序 轮盘机 海洋之星 海之魂