汇编指令和机器码的对应表

合集下载

汇编指令对照表

汇编指令对照表

汇编指令对照表汇编指令对照表指令功能指令功能指令功能AAA调整加JA⾼于跳转SAHF恢复标志低⼋AAD调整除JB低于跳转SAL算术左移AAM调整乘JBE不⾼于跳转SALC AAS调整减JCXZ计数⼀六零跳转SAR算术右移ADC进位加JE相等跳转SBB借位减ADD加JECXZ计数三⼆零跳转SCASB扫描字节串AND与JG⼤于跳转SCASD扫描双字串ARPL调整优先级JL⼩于跳转SCASW扫描字串 JMP跳转SETA⾼于置位BOUND检查数组JMPE跳转扩展SETB低于置位BSF位右扫描JNB不低于跳转SETE相等置位BSR位左扫描JNE不等跳转SETG⼤于置位BSWAP交换字节JNG不⼤于跳转SETL⼩于置位BT位测试JNL不⼩于跳转SETNA不⾼于置位BTC位测试求反JNO不溢出跳转SETNB不低于置位BTR位测试清零JNP⾮奇偶跳转SETNE不等置位BTS位测试置⼀JNS⾮负跳转SETNG不⼤于置位 JO溢出跳转SETNL不⼩于置位CALL过程调⽤JP奇偶跳转SETNO不溢出置位CBW转换字节JS负号跳转SETNP⾮奇偶置位CDQ转换双字LAHF加载标志低⼋SETNS⾮负置位CLC进位清零LAR加载访问权限SETO溢出置位CLD⽅向清零LDS加载数据段SETP奇偶置位CLI中断清零LEA加载有效地址SETS负号置位CLTS任务清除LEAVE清除过程堆栈SGDT保存全局描述符CMC进位求反LES加载附加段SHL逻辑左移CMOVA⾼于传送LFS加载标志段SHLD双精度左移CMOVB低于传送LGDT加载全局描述符SHR逻辑右移CMOVE相等传送LGS加载全局段SHRD双精度右移CMOVG⼤于传送LIDT加载中断描述符SIDT保存中断描述符CMOVL⼩于传送LMSW加载状态字SLDT保存局部描述符CMOVNA不⾼于传送LOADALL加载所有SMI CMOVNB不低于传送LOADALL286加载所有286SMINT CMOVNE不等传送LOCK锁SMINTOLD CMOVNG不⼤于传送LODSB加载源变址字节串SMSW保存状态字CMOVNL不⼩于传送LODSD加载源变址双字串STC进位设置CMOVNO不溢出传送LODSW加载源变址字串STD⽅向设置CMOVNP⾮奇偶传送LOOP计数循环STI中断设置CMOVNS⾮负传送LOOPE相等循环STOSB保存字节串CMOVO溢出传送LOOPNE不等循环STOSD保存双字串CMOVP奇偶传送LOOPNZ⾮零循环STOSW保存字串CMOVS负号传送LOOPZ为零循环STR保存任务CMP⽐较LSL加载段界限SUB减CMPSB⽐较字节串LSS加载堆栈段SYSCALL系统调⽤CMPSD⽐较双字串LTR加载任务SYSENTER系统进⼊CMPSW⽐较字串MONITOR监视SYSEXIT系统退出CMPXCHG⽐较交换MOV传送SYSRET系统返回CMPXCHG486⽐较交换486MOVSB传送字节串TEST数测试CMPXCHG8B⽐较交换8字节MOVSD传送双字串UD0未定义指令0 CPUID CPU标识MOVSW传送字串UD1未定义指令1 CWD转换字MOVSX符号传送UD2未定义指令2 CWDE扩展字MOVZX零传送UMOV  MUL乘VERW校验写DAA调整加⼗MWAIT WAIT等DAS调整减⼗NEG求补WBINVD回写⽆效⾼速缓存DEC减⼀NOP空WRMSR写专⽤模式DIV除NOT⾮WRSHR  OR或XADD交换加ENTER建⽴堆栈帧OUT端⼝输出XBTS HLT停OUTSB端⼝输出字节串XCHG交换IDIV符号整除OUTSD端⼝输出双字串XLAT换码IMUL符号乘法OUTSW端⼝输出字串XOR异或IN端⼝输⼊POP出栈XSTORE INC加⼀POPA全部出栈 INSB端⼝输⼊字节串POPF标志出栈 INSD端⼝输⼊双字串PUSH压栈 INSW端⼝输⼊字串PUSHA全部压栈 PUSHF标志压栈 RCL进位循环左移 RCR进位循环右移 RDMSR读专⽤模式 RDPMC读执⾏监视计数 RDSHR RDTSC读时间戳计数 RDTSC读时间戳计数 REP重复 REPE相等重复 REPNE不等重复 RET过程返回 RETF远过程返回 RETN近过程返回 ROL循环左移 ROR循环右移 RSM恢复系统管理 指令功能指令功能指令功能EMMS媒体空MMX状态FMUL浮点乘MOVED媒体双字传送F2XM1浮点栈顶绝对值FMULP浮点乘出栈MOVEQ媒体四字传送FADD浮点加FNCLEX浮点不检查错误清除PACKSSDW媒体符号双字压缩FADDP浮点加出栈FNDISI浮点不检查禁⽌中断PACKSSWB媒体符号字压缩FBLD浮点加载⼗数FNENI浮点不检查禁⽌中断⼆PACKUSWB媒体⽆符号字压缩FBSTP浮点保存⼗数出栈FNINIT浮点不检查初始化PADDB媒体截断字节加FCHS浮点正负求反FNOP浮点空PADDD媒体截断双字加FCLEX浮点检查错误清除FNSAVE浮点不检查保存状态PADDSB媒体符号饱和字节加FCMOVB浮点低于传送FNSTCW浮点不检查保存控制器PADDSIW FCMOVBE浮点不⾼于传送FNSTENV浮点不检查保存环境PADDSW媒体符号饱和字加FCMOVE浮点相等传送FNSTSW浮点不检查保存状态器PADDUSB媒体⽆符号饱和字节加FCMOVNB浮点不低于传送FPATAN浮点部分反正切PADDUSW媒体⽆符号饱和字加FCMOVNBE浮点⾼于传送FPREM浮点部分余数PADDW媒体截断字加FCMOVNE浮点不等传送FPREM1浮点部分余数⼆PAND媒体与FCMOVNU浮点有序传送FPTAN浮点部分正切PANDN媒体与⾮FCMOVU浮点⽆序传送FRNDINT浮点舍⼊求整PAVEB FCOM浮点⽐较FRSTOR浮点恢复状态PCMPEQB媒体字节⽐等FCOMI浮点⽐较加载标志FSAVE浮点检查保存状态PCMPEQD媒体双字⽐等FCOMIP浮点⽐较加载标志出栈FSCALE浮点⽐例运算PCMPEQW媒体字⽐等FCOMP浮点⽐较出栈FSETPM浮点设置保护PCMPGTB媒体字节⽐⼤FCOMPP浮点⽐较出栈⼆FSIN浮点正弦PCMPGTD媒体双字⽐⼤FCOS浮点余弦FSINCOS浮点正余弦PCMPGTW媒体字⽐⼤FDECSTP浮点栈针减⼀FSQRT浮点平⽅根PDISTIB FDISI浮点检查禁⽌中断FST浮点保存PMACHRIW FDIV浮点除FSTCW浮点检查保存控制器PMADDWD FDIVP浮点除出栈FSTENV浮点检查保存环境PMAGW FDIVR浮点反除FSTP浮点保存出栈PMULHRIW FDIVRP浮点反除出栈FSTSW浮点检查保存状态器PMULHRWC FENI浮点检查禁⽌中断⼆FSUB浮点减PMULHW FFREE浮点释放FSUBP浮点减出栈PMVGEZB FFREEP浮点释放出栈FSUBR浮点反减PMVLZB FIADD浮点加整数FSUBRP浮点反减出栈PMVNZB FICOM浮点⽐较整数FTST浮点⽐零PMVZB FICOMP浮点⽐较整数出栈FUCOM浮点⽆序⽐较POR媒体或FIDIV浮点除整数FUCOMI浮点反⽐加载标志PSLLD媒体双字左移FIDIVR浮点反除FUCOMIP浮点反⽐加载标志出栈PSLLQ媒体四字左移FILD浮点加载整数FUCOMP浮点⽆序⽐较出栈PSLLW媒体字左移FIMUL浮点乘整数FUCOMPP浮点⽆序⽐较出栈⼆PSRAD媒体双字算术右移FINCSTP浮点栈针加⼀FWAIT浮点等PSRAW媒体字算术右移FINIT浮点检查初始化FXAM浮点检查PSRLD媒体双字右移FIST浮点保存整数FXCH浮点交换PSRLQ媒体四字右移FISTP浮点保存整数出栈FXTRACT浮点分解PSRLW媒体字右移FISTTP FYL2X浮点求L2X PSUBB媒体截断字节减FISUB浮点减整数FYL2XP1浮点求L2XP1PSUBSB媒体符号饱和字节减FISUBR浮点反减整数 PSUBSIW FLD浮点加载数 PSUBSW媒体符号饱和字减FLD1浮点加载⼀ PSUBUSB媒体⽆符号饱和字节减FLDCW浮点加载控制器 PSUBUSW媒体⽆符号饱和字减FLDENV浮点加载环境 PSUBW媒体截断字减FLDL2E浮点加载L2E PUNPCKHBW媒体字节⾼位解压FLDL2T浮点加载L2T PUNPCKHDQ媒体双字⾼位解压FLDLG2浮点加载LG2 PUNPCKHWD媒体字⾼位解压FLDLN2浮点加载LN2 PUNPCKLBW媒体字节低位解压FLDPI浮点加载PI PUNPCKLDQ媒体双字低位解压FLDZ浮点加载零 PUNPCKLWD媒体字低位解压创建时间:2020.05.27 更新时间:。

汇编指令对应的机器码

汇编指令对应的机器码

汇编指令对应的机器码一、引言汇编语言是一种低级语言,它是机器语言的助手。

在计算机科学中,汇编语言是用于编写程序的一种基于文本的语言,它使用助记符来表示每个指令操作码。

每个汇编指令都对应着一段机器码。

本文将从不同的角度详细介绍汇编指令对应的机器码。

二、汇编指令和机器码1. 汇编指令汇编指令是一种基于文本的符号表示法,用来代替二进制代码。

它通过使用助记符来表示操作码和操作数,使得程序员更容易地理解和修改代码。

例如,在x86架构中,mov指令可以用来将一个值从一个寄存器移动到另一个寄存器。

2. 机器码机器码是计算机可以直接执行的二进制代码。

它由0和1组成,并且具有特定的格式和结构。

每个CPU都有自己独特的指令集架构,因此不同CPU上相同的汇编代码可能会产生不同的机器码。

三、x86架构下常见汇编指令对应的机器码1. movmov指令用于将数据从一个位置复制到另一个位置。

在x86架构中,它的机器码通常是8位或16位。

例如,将寄存器AX中的值移动到寄存器BX中,其机器码为:89 C3。

2. addadd指令用于将两个数相加,并将结果存储在一个寄存器或内存位置中。

在x86架构中,它的机器码通常是8位或16位。

例如,将寄存器AX和BX中的值相加,并将结果存储在CX寄存器中,其机器码为:01 C8。

3. subsub指令用于从第一个数中减去第二个数,并将结果存储在一个寄存器或内存位置中。

在x86架构中,它的机器码通常是8位或16位。

例如,从寄存器AX中减去BX的值,并将结果存储在CX寄存器中,其机器码为:29 CB。

4. jmpjmp指令用于无条件跳转到程序的另一部分。

在x86架构中,它的机器码通常是2字节或4字节。

例如,在代码段偏移地址为0x1234处设置一个标签mylabel,并跳转到该标签所代表的地址处,其机器码为:EB 10(其中10表示偏移量)。

5. cmpcmp指令用于比较两个数的大小关系,并根据比较结果设置标志位。

汇编和机器码的对应表

汇编和机器码的对应表

单片机指令功能一览表助记符代码说明MOV A,Rn E8~EF 寄存器AMOV A,direct E5 dircet 直接字节送AMOV A,@Ri ER~E7 间接RAM送AMOV A,#data 74 data 立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,dircet A8~AF dircet 直接字节送寄存器MOV Rn,#data 78~7F data 立即数送寄存器MOV dircet,A F5 dircet A送直接字节MOV dircet,Rn 88~8F dircet 寄存器送直接字节MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节MOV dircet,@Ro 86~87 间接RAM送直接字节MOV dircet,#data 75 dircet data 立即数送直接字节MOV @Ri,A F6~F7 A送间接RAMMOV @Ri,#data 76~77 data 直接字节送间接RAM MOV @Ri,#data 76~77 data 立即数送间接RAM MOV DPTR,#data16 90 data 15~8 16位常数送数据指针data7~0MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮器字节选AMOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送AMOVX A,@Ri E2~E3 送外部数据(8位地址)送AMOVX A,@DPTR E0 送外部数据(16位地址)送AMOVX @Ri,A F2~F3 A送外部数据(8位地址)MOVX @DPTR,A F0 A送外部数据(16位地址)PUSH dircet C0 dircet 直接字节进栈,SP加1 POP dircet D0 dircet 直接字节退栈,SP减1 XCH A,Rn C8~CF 交换A和寄存器XCH A,dircet C5 dircet 交换A和直接字节XCH A,@Ri C6~C7 交换A和间接RAMXCH A,@Ri D6~D7 交换A和间接RAM的低位SWAP A C4算术操作(A的二个半字节交换)ADD A,Rn 28~2F 寄存器加到AADD A,dircet 25 dircet 直接字节加到AADD A,@Ri 26~27 间接RAM加到AADD A,#data 24data 立即数加到AADD A,Rn 38~3F 寄存器和进位位加到A ADD A,dircet 35dircet 直接字节和进位位加到A ADD A,@Ri 36~37 间接字节和进位位加到A ADD A,data 34 data 立即数和进位位加到A ADD A,Rn 98~9F A减去寄存器和进位位ADD A,dircet 95 dircet A减去直接字节和进位位ADD A,@Ri 36~37 间接RAM和进位位加到A ADD A,data 34 data 立即数和进位位加到A SUBB A,Rn 98~9F A减去寄存器和进位位SUBB A,dircet 95 dircet A减去直接字节和进位位SUBB A,@Ri 96~97 A减去间接RAM和进位位SUBB A,#data 94 data A减去立即数和进位位INC A 04 A加1INC Rn 08~0F 寄存器加1INC dircet 05 dircet 直接字节加1INC @Ri 06~07 间接RAM加1DEC A 14 A减1DEC Rn 18~1F 寄存器减1DEC dircet 15 dircet 直接字节减1DEC @Ri 16~17 间接RAM减1INC DPTR A3 数据指针加1MUL AB A4 A乘以BDIV AB 84 A除以BDA A D4 A的十进制加法调整逻辑操作ANL A,Rn 58~5F 寄存器“与”到AANL A,dircet 55 dircet 直接字节“与”到AANL A,@Ri 56~57 间接RAm“与”到AANL A,#data 54 data 立即数“与”到AANL dircet A 52 dircet A“与”到直接字节ANL dircet,#data 53 dircet data 立即数“与”到直接字节ORL A,Rn 48~4F 寄存器“或”到AORL A,dircet 45 dircet 直接字节“或”到AORL A,@Ri 46~47 间接RAM“或”到AORL A,#data 44 data 立即数“或”到AORL dircet,A 42 dircet A“或”到直接字节ORL dircet,#data 43 dircet data 立即数“或”到直接字节XRL A,Rn 68~6F 寄存器“异或”到AXRL A,dircet 65 dircet 直接字节“异或”到AXRL A,@Ri 66~67 间接RAM“异或”到AXRL A,#data 64 data 立即数“异或”到AXRL dircet A 62 dircet A“异或”到直接字节XRL dircet,#data 63 dircet data 立即数“异或”到直接字节CLR A E4 清零CPL A F4 A取反RL A 23 A左环移RLC A 33 A通过进位左环移RR A 03 A右环移RRC A 13 A通过进位右环移控制程序转移ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用LCALL addr 16 12 addr(15~8) 长子程序调用addr(7~0)RET 22 子程序调用返回RETI addr 11 32 中断调用返回AJMP addr 11 △1 addr(a7~a6) 绝对转移LJMP addr 16 02addr(15~8) 长转移addr(7~0)SJMP rel 80 rel 短转移,相对转移JMP @A+DPTR 73 相对于DPTR间接转移JZ rel 60 rel A为零转移JNZ rel 70 rel A为零转移CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移DJNZ dircet,rel B5 dircet rel 直接字节减1,不为零则转移NOP 00 空操作*=a10a9a8l△=a10a9a80布尔变量操作CLR C C3 清零进位CLR bit C2 清零直接位SETB C D3 置位进位SETB bit D2 置位直接位CPL C B3 进位取反CPL bit B2 直接位取反ANL C,bit 82 dit 直接数“与”到进位ANL C,/bit B0 直接位的反“与”到进位ORL C,bit 72 bit 直接位“或”到进位ORL C,/bit A0 bit 直接位的反“或”到进位MOV C,bit A2 bit 直接位送进位MOV bit,C 92 bit 进位送直接位JC rel 40 rel 进位位为1转移JNC rel 50 rel 进位位为0转移JB bit,rel 20 bit rel 直接位为1相对转移JNB bit,rel 30 bit rel 直接位为0相对转移JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位0人 | 分享到:阅读(213)| 评论(0)| 引用(0) |举报。

汇编和机器码的对应表

汇编和机器码的对应表

单片机指令功能一览表助记符代码说明MOV A,Rn E8~EF寄存器AMOV A,direct E5 dircet直接字节送AMOV A,@Ri ER~E7间接RAM送AMOV A,#data74 data立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,dircet A8~AF dircet直接字节送寄存器MOV Rn,#data78~7F data立即数送寄存器MOV dircet,A F5 dircet A送直接字节MOV dircet,Rn88~8F dircet寄存器送直接字节MOV dircet1,dircet285 dircet1 dircet2直接字节送直接字节MOV dircet,@Ro86~87间接RAM送直接字节MOV dircet,#data75 dircet data立即数送直接字节MOV@Ri,A F6~F7A送间接RAMMOV@Ri,#data76~77 data直接字节送间接RAM MOV@Ri,#data76~77 data立即数送间接RAM MOV DPTR,#data1690 data 15~816位常数送数据指针data7~0MOVC A,@A+DPTR93由((A)+(DPTR))寻址的程序存贮器字节选AMOVC A,@A+PC83由((A)+(PC));寻址的程序存贮器字节送AMOVX A,@Ri E2~E3送外部数据(8位地址)送AMOVX A,@DPTR E0送外部数据(16位地址)送AMOVX@Ri,A F2~F3A送外部数据(8位地址)MOVX@DPTR,A F0A送外部数据(16位地址)PUSH dircet C0 dircet直接字节进栈,SP加1POP dircet D0 dircet直接字节退栈,SP减1XCH A,Rn C8~CF交换A和寄存器XCH A,dircet C5 dircet交换A和直接字节XCH A,@Ri C6~C7交换A和间接RAMXCH A,@Ri D6~D7交换A和间接RAM的低位SWAP A C4算术操作(A的二个半字节交换)ADD A,Rn28~2F寄存器加到AADD A,dircet25 dircet直接字节加到AADD A,@Ri26~27间接RAM加到AADD A,#data24data立即数加到AADD A,Rn38~3F寄存器和进位位加到A ADD A,dircet35dircet直接字节和进位位加到A ADD A,@Ri36~37间接字节和进位位加到A ADD A,data34 data立即数和进位位加到A ADD A,Rn98~9F A减去寄存器和进位位ADD A,dircet95 dircet A减去直接字节和进位位ADD A,@Ri36~37间接RAM和进位位加到A ADD A,data34 data立即数和进位位加到A SUBB A,Rn98~9F A减去寄存器和进位位SUBB A,dircet95 dircet A减去直接字节和进位位SUBB A,@Ri96~97A减去间接RAM和进位位SUBB A,#data94 data A减去立即数和进位位INC A04A加1INC Rn08~0F寄存器加1INC dircet05 dircet直接字节加1INC@Ri06~07间接RAM加1DEC A14A减1DEC Rn18~1F寄存器减1DEC dircet15 dircet直接字节减1DEC@Ri16~17间接RAM减1INC DPTR A3数据指针加1MUL AB A4A乘以BDIV AB84A除以BDA A D4A的十进制加法调整逻辑操作ANL A,Rn58~5F寄存器“与”到AANL A,dircet55 dircet直接字节“与”到AANL A,@Ri56~57间接RAm“与”到AANL A,#data54 data立即数“与”到AANL dircet A52 dircet A“与”到直接字节ANL dircet,#data53 dircet data立即数“与”到直接字节ORL A,Rn48~4F寄存器“或”到AORL A,dircet45 dircet直接字节“或”到AORL A,@Ri46~47间接RAM“或”到AORL A,#data44 data立即数“或”到AORL dircet,A42 dircet A“或”到直接字节ORL dircet,#data43 dircet data立即数“或”到直接字节XRL A,Rn68~6F寄存器“异或”到AXRL A,dircet65 dircet直接字节“异或”到AXRL A,@Ri66~67间接RAM“异或”到AXRL A,#data64 data立即数“异或”到AXRL dircet A62 dircet A“异或”到直接字节XRL dircet,#data63 dircet data立即数“异或”到直接字节CLR A E4清零CPL A F4A取反RL A23A左环移RLC A33A通过进位左环移RR A03A右环移RRC A13A通过进位右环移控制程序转移ACALL addr 11*1 addr(a7~a0)绝对子程序调用LCALL addr 1612 addr(15~8)长子程序调用addr(7~0)RET22子程序调用返回RETI addr 1132中断调用返回AJMP addr 11△1 addr(a7~a6)绝对转移LJMP addr 1602addr(15~8)长转移addr(7~0)SJMP rel80 rel短转移,相对转移JMP@A+DPTR73相对于DPTR间接转移JZ rel60 rel A为零转移JNZ rel70 rel A为零转移CJNE A,dircet,rel B5 dircet rel直接字节与A比较,不等则转移CJNE A,#data,rel B4 data rel立即数与A比较,不等则转移CJNE A,Rn,#data,rel B8~BF data rel立即数与寄存器比较,不等则转移CJNE@Ri,#data,rel B6~B7 data rel立即数与间接RAM 比较,不等则转移DJNZ Rn,rel D8~DF rel寄存器减1,不为零则转移DJNZ dircet,rel B5 dircet rel直接字节减1,不为零则转移NOP00空操作*=a10a9a8l△=a10a9a80布尔变量操作CLR C C3清零进位CLR bit C2清零直接位SETB C D3置位进位SETB bit D2置位直接位CPL C B3进位取反CPL bit B2直接位取反ANL C,bit82 dit直接数“与”到进位ANL C,/bit B0直接位的反“与”到进位ORL C,bit72 bit直接位“或”到进位ORL C,/bit A0 bit直接位的反“或”到进位MOV C,bit A2 bit直接位送进位MOV bit,C92 bit进位送直接位JC rel40 rel进位位为1转移JNC rel50 rel进位位为0转移JB bit,rel20 bit rel直接位为1相对转移JNB bit,rel30 bit rel直接位为0相对转移JBC bit,rel10 bit rel直接位为1相对转移,然后清零该位0人|分享到:阅读(213)| 评论(0)| 引用(0) |举报。

mips机器码汇编对照表

mips机器码汇编对照表

mips机器码汇编对照表助记符说明字节周期代码MOV A,Rn 寄存器送A 1 1 E8--EFMOV A,data 直接字节送A 2 1 E5MOV A,@Ri 间接RAM 送A 1 1 E6--E7MOV A,#data 立接数送A 2 1 74MOV Rn,A A 送寄存器 1 1 F8--FFMOV Rn,data 直接数送寄存器 2 2 A8--AFMOV Rn,#data 立即数送寄存器 2 1 78--7FMOV data,A A 送直接字节 2 1 F5MOV data,Rn 寄存器送直接字节 2 1 88—8FMOV data,data 直接字节送直接字节 3 2 85MOV data,@Ri 间接Rn 送直接字节 2 2 86;87MOV data,#data 立即数送直接字节 3 2 75MOV @Ri,A A 送间接Rn 1 2 F6;F7MOV @Ri,data 直接字节送间接Rn 1 1 A6;A7MOV @Ri,#data 立即数送间接Rn 2 2 76;77MOV DPTR,#data16 16 位常数送数据指针 3 1 90 MOV C,bit 直接位送进位位 2 1 A2MOV bit,C 进位位送直接位 2 2 92MOVC A,@A+DPTR A+DPTR 寻址程序存贮字节送A 3 2 93 MOVC A,@A+PC A+PC 寻址程序存贮字节送A 1 2 83 MOVX A,@Ri 外部数据送A(8 位地址) 1 2 E2;E3 MOVX A,@DPTR 外部数据送A(16 位地址) 1 2 E0 MOVX @Ri,A A 送外部数据(8 位地址) 1 2 F2;F3 MOVX @DPTR,A A 送外部数据(16 位地址) 1 2 F0 PUSH data 直接字节进栈道,SP 加1 2 2 C0POP data 直接字节出栈,SP 减1 2 2 D0XCH A,Rn 寄存器与A 交换 1 1 C8—CFXCH A,data 直接字节与A 交换 2 1 C5XCH A,@Ri 间接Rn 与A 交换 1 1 C6;C7XCHD A,@Ri 间接Rn 与A 低半字节交换 1 1 D6;D72.逻辑运算指令(35条)助记符说明字节周期代码ANL A,Rn 寄存器与到A 1 1 58—5FANL A,data 直接字节与到A 2 1 55ANL A,@Ri 间接RAM与到A 1 1 56;57ANL A,#data 立即数与到A 2 1 54ANL data,A A与到直接字节 2 1 52ANL data,#data 立即数与到直接字节 3 2 53 ANL C,bit 直接位与到进位位 2 2 82ANL C,/bit 直接位的反码与到进位位 2 2 B0 ORL A,Rn 寄存器或到A 1 1 48—4FORL A,data 直接字节或到A 2 1 45ORL A,@Ri 间接RAM或到A 1 1 46;47ORL A,#data 立即数或到A 2 1 44ORL data,A A或到直接字节 2 1 42ORL data,#data 立即数或到直接字节 3 2 43 ORL C,bit 直接位或到进位位 2 2 72ORL C,/bit 直接位的反码或到进位位 2 2 A0 XRL A,Rn 寄存器异或到A 1 1 68—6FXRL A,data 直接字节异或到A 2 1 65XRL A,@Ri 间接RAM异或到A 1 1 66;67XRL A,#data 立即数异或到A 2 1 64XRL data,A A异或到直接字节 2 1 62XRL data,#data 立即数异或到直接字节 3 2 63 SETB C 进位位置1 1 1 D3SETB bit 直接位置1 2 1 D2CLR A A清0 1 1 E4CLR C 进位位清0 1 1 C3CLR bit 直接位清0 2 1 C2CPL A A求反码 1 1 F4CPL C 进位位取反 1 1 B3CPL bit 直接位取反 2 1 B2RL A A循环左移一位 1 1 23RLC A A 带进位左移一位 1 1 33RR A A右移一位 1 1 03RRC A A 带进位右移一位 1 1 13SWAP A A 半字节交换 1 1 C43.算术运算指令(24条)助记符说明字节周期代码ADD A,Rn 寄存器加到A 1 1 28—2FADD A,data 直接字节加到A 2 1 25ADD A,@Ri 间接RAM 加到A 1 1 26;27 ADD A,#data 立即数加到A 2 1 24ADDC A,Rn 寄存器带进位加到A 1 1 38—3F ADDC A,data 直接字节带进位加到A 2 1 35ADDC A,@Ri 间接RAM 带进位加到A 1 1 36;37 ADDC A,#data 立即数带进位加到A 2 1 34SUBB A,Rn 从A 中减去寄存器和进位 1 1 98—9F SUBB A,data 从A 中减去直接字节和进位 2 1 95 SUBB A,@Ri 从A 中减去间接RAM 和进位 1 1 96;97 SUBB A,#data 从A 中减去立即数和进位 2 1 94 INC A A加1 1 1 04INC Rn 寄存器加1 1 1 08—0FINC data 直接字节加1 2 1 05INC @Ri 间接RAM 加1 1 1 06;07INC DPTR 数据指针加1 1 2 A3DEC A A减1 1 1 14DEC Rn 寄存器减1 1 1 18—1FDEC data 直接字节减1 2 1 15DEC @Ri 间接RAM 减1 1 1 16;17MUL AB A乘B 1 4 A4DIV AB A被B除 1 4 84DA A A十进制调整 1 1 D44.转移指令(22条)助记符说明字节周期代码AJMP addr 11 绝对转移 2 2 *1LJMP addr 16 长转移 3 2 02SJMP rel 短转移 2 2 80JMP @A+DPTR 相对于DPTR 间接转移 1 2 73JZ rel 若A=0 则转移 2 2 60JNZ rel 若A≠0 则转移 2 2 70JC rel 若C=1 则转移 2 2 40JNC rel 若C≠1 则转移 2 2 50JB bit,rel 若直接位=1 则转移 3 2 20JNB bit,rel 若直接位=0 则转移 3 2 30JBC bit,rel 若直接位=1 则转移且清除 3 2 10CJNE A,data,rel 直接数与A 比较,不等转移 3 2 B5CJNE A,#data,rel 立即数与A 比较,不等转移 3 2 B4CJNE @Ri,#data,rel 立即数与间接RAM比较,不等转移 3 2 B6;B7CJNE Rn,#data,rel 立即数与寄存器比较不等转移 3 2 B8—BFDJNZ Rn,rel 寄存器减1 不为0 转移 2 2 D8—DFDJNZ data,rel 直接字节减1 不为0 转移 3 2 D5ACALL addr 11 绝对子程序调用 2 2 *1 LCALL addr 16 子程序调用 3 2 12 RET 子程序调用返回 1 2 22RETI 中断程序调用返回 1 2 32NOP 空操作 1 1 00。

汇编指令机器码总结

汇编指令机器码总结

汇编指令机器码总结与验证摘要:本文介绍了汇编指令机器码的含义与作用,并讨论了指令的组成结构即操作码与地址码。

然后全面总结了机器码中的单字节操作码,并利用Debug工具进行了详细的验证。

关键词:指令;机器码一、机器码概述[1]机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。

这种指令集就称为机器码,它是电脑的CPU可直接解读的数据。

一条指令是机器语言的一个语句,是一组有意义的二进制代码。

计算机通过执行指令来处理各种数据。

为了指出数据的来源、操作结果的去向及所执行的操作,一条指令必须包含下列信息:a) 操作码b) 操作数的地址c) 操作结果的存储地址d) 下条指令的地址一条指令实际上包括两种信息即操作码和地址码。

操作码用来表示该指令所要完成的操作(如加、减、乘、除、数据传送等),其长度取决于指令系统中的指令条数。

地址码用来描述该指令的操作对象,它或者直接给出操作数,或者指出操作数的存储器地址或寄存器地址(即寄存器名)。

二、机器码详解[2]由上文已知,一条指令一般由操作码和地址码组成。

其中,操作码是指明CPU对内存或寄存器中的数据进行什么样的操作,地址码给出这些数据对象。

下面我们就将指令分为两部分进行研究。

1.操作码操作码一般占用1个字节(8位)或2个字节(16位)。

其中最低比特(记作W)在很多指令中表示目标操作数的位宽,W=0表示字节长(8位)操作数,W=1表示双字节长(16位)操作数。

例如,操作码00000000B(W=0)表示“ADD 8位寄存器,8位寄存器”,而00000001B(W=1)表示“ADD 16位寄存器,16位寄存器”。

2.地址码地址码一般占用1个字节,其中的8个比特位可分为三组,形式一般为“oommmrrr”。

这些分组大致可分为以下四个类型:1) “oo”——表示指令的地址偏移量类型a) 00:如果mmm=110,那么指令后紧跟一个地址偏移量;否则未使用地址偏移量b) 01:指令后紧跟一个8比特无符号地址偏移量c) 10:指令后紧跟一个16比特无符号地址偏移量d) 11:此时mmm表示一个寄存器而不是地址2) “mmm”——表示存储器操作数地址a) 000 : DS:[BX+SI]b) 001 : DS:[BX+DI]c) 010 : SS:[BP+SI]d) 011 : SS:[BP+DI]e) 100 : DS:[SI]f) 101 : DS:[DI]g) 110 : SS:[BP]h) 111 : DS:[BX]3) “rrr”——表示通用寄存器(下列分别表示当W=0;W=1;32位)a) 000:AL:AX:EAXb) 001:CL:CX:ECXc) 010:DL:DX:EDXd) 011:BL:BX:EBXe) 100:AH:SP:ESPf) 101:CH:BP:EBPg) 110:DH:SI:ESIh) 111:BH:DI:EDI4) “sss”——表示段寄存器a) 000 : ESb) 001 : CSc) 010 : SSd) 011 : DSe) 100 : FS (386+)f) 101 : GS (386+)三、操作码总结与验证[3]从上一节可以看出,一条指令的操作码变化有限(8比特操作码只有不超过256个)而且相对地址码更为重要,因此这一节我们重点讨论单字节指令的操作码。

汇编语言指令集

汇编语言指令集

mov‎a,b ‎把b的值送‎给a‎ret ‎返回主程序‎n‎o p 无作‎用,英文“‎n o op‎e rati‎o n”的简‎写,意思是‎“do n‎o thin‎g”(机器‎码90)*‎**机器码‎的含义参看‎上面‎(解释:‎u ltra‎e dit打‎开编辑ex‎e文件时你‎看到90,‎等同于汇编‎语句nop‎)‎c all ‎调用子程序‎j‎e或jz‎若相等则‎跳(机器码‎74 或0‎F84) ‎jn‎e或jnz‎若不相等‎则跳(机器‎码75或0‎F85) ‎jm‎p无条件‎跳(机器码‎E B)‎jb ‎若小于则跳‎j‎a若大于‎则跳‎jg 若‎大于则跳‎jg‎e若大于‎等于则跳‎jl‎若小于则‎跳‎j le 若‎小于等于则‎跳‎p op 出‎栈‎p ush ‎压栈三‎.常见修改‎(机器码)‎7‎4=>75‎74=>‎90 74‎=>EB ‎75‎=>74 ‎75=>9‎0 75=‎>EB‎jnz‎->nop‎7‎5->90‎(相应的机‎器码修改)‎j‎n z ->‎jmp ‎75‎-> E‎B(相应的‎机器码修改‎)‎j nz -‎> jz ‎75‎->74 ‎(正常) ‎0F 85‎-> 0‎F 84(‎特殊情况下‎,有时,相‎应的机器码‎修改)‎四.两种不‎同情况的不‎同修改方法‎1‎.修改为j‎m p‎je(j‎n e,jz‎,jnz)‎=>jm‎p相应的机‎器码EB ‎(出错信息‎向上找到的‎第一个跳转‎)jmp 的‎作用是绝对‎跳,无条件‎跳,从而跳‎过下面的出‎错信息‎xxx‎x xxxx‎x xxx ‎出错信息,‎例如:注册‎码不对,s‎o rry,‎未注册版不‎能...,‎"Func‎t ion ‎N ot A‎v aibl‎e in ‎D emo"‎或‎"Com‎m and ‎N ot A‎v aibl‎e" 或‎"Can'‎t sav‎e in ‎S hare‎w are/‎D emo"‎等(我们‎希望把它跳‎过,不让它‎出现)<。

8086 汇编和机器码的对应表

8086 汇编和机器码的对应表

单片机指令功能一览表助记符代码说明MOV A,Rn E8~EF 寄存器AMOV A,direct E5 dircet 直接字节送AMOV A,@Ri ER~E7 间接RAM送AMOV A,#data 74 data 立即数送AMOV Rn,A F8~FF A送寄存器MOV Rn,dircet A8~AF dircet 直接字节送寄存器MOV Rn,#data 78~7F data 立即数送寄存器MOV dircet,A F5 dircet A送直接字节MOV dircet,Rn 88~8F dircet 寄存器送直接字节MOV dircet1,dircet2 85 dircet1 dircet2 直接字节送直接字节MOV dircet,@Ro 86~87 间接RAM送直接字节MOV dircet,#data 75 dircet data 立即数送直接字节MOV @Ri,A F6~F7 A送间接RAMMOV @Ri,#data 76~77 data 直接字节送间接RAM MOV @Ri,#data 76~77 data 立即数送间接RAM MOV DPTR,#data16 90 data 15~8 16位常数送数据指针data7~0MOVC A,@A+DPTR 93 由((A)+(DPTR))寻址的程序存贮器字节选AMOVC A,@A+PC 83 由((A)+(PC));寻址的程序存贮器字节送AMOVX A,@Ri E2~E3 送外部数据(8位地址)送AMOVX A,@DPTR E0 送外部数据(16位地址)送AMOVX @Ri,A F2~F3 A送外部数据(8位地址)MOVX @DPTR,A F0 A送外部数据(16位地址)PUSH dircet C0 dircet 直接字节进栈,SP加1 POP dircet D0 dircet 直接字节退栈,SP减1 XCH A,Rn C8~CF 交换A和寄存器XCH A,dircet C5 dircet 交换A和直接字节XCH A,@Ri C6~C7 交换A和间接RAMXCH A,@Ri D6~D7 交换A和间接RAM的低位SWAP A C4算术操作(A的二个半字节交换)ADD A,Rn 28~2F 寄存器加到AADD A,dircet 25 dircet 直接字节加到AADD A,@Ri 26~27 间接RAM加到AADD A,#data 24data 立即数加到AADD A,Rn 38~3F 寄存器和进位位加到A ADD A,dircet 35dircet 直接字节和进位位加到A ADD A,@Ri 36~37 间接字节和进位位加到A ADD A,data 34 data 立即数和进位位加到A ADD A,Rn 98~9F A减去寄存器和进位位ADD A,dircet 95 dircet A减去直接字节和进位位ADD A,@Ri 36~37 间接RAM和进位位加到A ADD A,data 34 data 立即数和进位位加到A SUBB A,Rn 98~9F A减去寄存器和进位位SUBB A,dircet 95 dircet A减去直接字节和进位位SUBB A,@Ri 96~97 A减去间接RAM和进位位SUBB A,#data 94 data A减去立即数和进位位INC A 04 A加1INC Rn 08~0F 寄存器加1INC dircet 05 dircet 直接字节加1INC @Ri 06~07 间接RAM加1DEC A 14 A减1DEC Rn 18~1F 寄存器减1DEC dircet 15 dircet 直接字节减1DEC @Ri 16~17 间接RAM减1INC DPTR A3 数据指针加1MUL AB A4 A乘以BDIV AB 84 A除以BDA A D4 A的十进制加法调整逻辑操作ANL A,Rn 58~5F 寄存器“与”到AANL A,dircet 55 dircet 直接字节“与”到AANL A,@Ri 56~57 间接RAm“与”到AANL A,#data 54 data 立即数“与”到AANL dircet A 52 dircet A“与”到直接字节ANL dircet,#data 53 dircet data 立即数“与”到直接字节ORL A,Rn 48~4F 寄存器“或”到AORL A,dircet 45 dircet 直接字节“或”到AORL A,@Ri 46~47 间接RAM“或”到AORL A,#data 44 data 立即数“或”到AORL dircet,A 42 dircet A“或”到直接字节ORL dircet,#data 43 dircet data 立即数“或”到直接字节XRL A,Rn 68~6F 寄存器“异或”到AXRL A,dircet 65 dircet 直接字节“异或”到AXRL A,@Ri 66~67 间接RAM“异或”到AXRL A,#data 64 data 立即数“异或”到AXRL dircet A 62 dircet A“异或”到直接字节XRL dircet,#data 63 dircet data 立即数“异或”到直接字节CLR A E4 清零CPL A F4 A取反RL A 23 A左环移RLC A 33 A通过进位左环移RR A 03 A右环移RRC A 13 A通过进位右环移控制程序转移ACALL addr 11 *1 addr(a7~a0) 绝对子程序调用LCALL addr 16 12 addr(15~8) 长子程序调用addr(7~0)RET 22 子程序调用返回RETI addr 11 32 中断调用返回AJMP addr 11 △1 addr(a7~a6) 绝对转移LJMP addr 16 02addr(15~8) 长转移addr(7~0)SJMP rel 80 rel 短转移,相对转移JMP @A+DPTR 73 相对于DPTR间接转移JZ rel 60 rel A为零转移JNZ rel 70 rel A为零转移CJNE A,dircet,rel B5 dircet rel 直接字节与A比较,不等则转移CJNE A,#data,rel B4 data rel 立即数与A比较,不等则转移CJNE A,Rn,#data,rel B8~BF data rel 立即数与寄存器比较,不等则转移CJNE @Ri,#data,rel B6~B7 data rel 立即数与间接RAM比较,不等则转移DJNZ Rn,rel D8~DF rel 寄存器减1,不为零则转移DJNZ dircet,rel B5 dircet rel 直接字节减1,不为零则转移NOP 00 空操作*=a10a9a8l△=a10a9a80布尔变量操作CLR C C3 清零进位CLR bit C2 清零直接位SETB C D3 置位进位SETB bit D2 置位直接位CPL C B3 进位取反CPL bit B2 直接位取反ANL C,bit 82 dit 直接数“与”到进位ANL C,/bit B0 直接位的反“与”到进位ORL C,bit 72 bit 直接位“或”到进位ORL C,/bit A0 bit 直接位的反“或”到进位MOV C,bit A2 bit 直接位送进位MOV bit,C 92 bit 进位送直接位JC rel 40 rel 进位位为1转移JNC rel 50 rel 进位位为0转移JB bit,rel 20 bit rel 直接位为1相对转移JNB bit,rel 30 bit rel 直接位为0相对转移JBC bit,rel 10 bit rel 直接位为1相对转移,然后清零该位0人 | 分享到:阅读(213)| 评论(0)| 引用(0) |举报。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

汇编指令和机器码的对应表
汇编2010-04-20 21:07:19 阅读259 评论0 字号:大中小订阅
一、汇编速查
MOV AA,BB 将BB 放到AA 里
CALL 调用子程序(相当于BASIC 的GOSUB)
RET 与RETF 返回程序(相当于BASIC 的RETURN)
CMP XX,YY 比较XX 与YY
JZ 若相等则转移
JNZ 若不相等则转移
JB 若小于则转移
JG 若大于则转移
JMP 无条件转移
J??? (各种转移指令)
LOOP 循环直到CX为0
INT XX 类似CALL 的中断涵数
PUSH 推入栈(STACK)ESP:PUSH AX
POP 出栈ESP:POP CX
XCHG 交换ESP:XCHG AX,BX
IN、OUT 与PORT有关的IN/OUT
XLAT 查表
LEA 段内偏移量。

ESP:LEA AX,AREA1=MOV AX,OFFSET AREA1 LAHF、SAHF与棋标有关的寄存器AH
PUSHF、POPF将棋标入/出栈
ADD ESP ADD AX,CX (AX=AX+CX)
ADC 加入棋标C的ADD
INC ESP INC AX(AX=AX+1)
AAA 加法校正
SUB、SBB 减法
DEC ESP:DEC AX(AX=AX-1)
NEG 去补,
MUL、IMUL 乘
DIV、IDIV 除
SHR、SAR、SHL 算术、逻辑位移R=RIGHT L=LEFT OR、XOR、AND 逻辑运算ESP :XOR AX,AX(AX=0)
直接标志转移
指令格式机器码测试条件如...则转移
JC 72 C=1 有进位
JNS 79 S=0 正号
JNC 73 C=0 无进位
JO 70 O=1 有溢出
JZ/JE 74 Z=1 零/等于
JNO 71 O=0 无溢出
JNZ/JNE 75 Z=0 不为零/不等于
JP/JPE 7A P=1 奇偶位为偶
JS 78 S=1 负号
JNP/IPO 7B P=0 奇偶位为奇
间接标志转移
指令格式机器码测试格式如...则转移JA/JNBE(比较无符号数) 77 C或Z=0 > 高于/不低于或等于JAE/JNB(比较无符号数) 73 C=0 >= 高于或等于/不低于JB/JNAE(比较无符号数) 72 C=1 < 低于/不高于或等于JBE/JNA(比较无符号数) 76 C或Z=1 <= 低于或等于/不高于JG/JNLE(比较带符号数) 7F (S异或O)或Z=0 > 大于/不小于或等于JGE/JNL(比较带符号数) 7D S异或O=0 >= 大于或等于/不小于JL/JNGE(比较带符号数) 7C S异或O=1 < 小于/不大于或等于JLE/JNG(比较带符号数) 7E (S异或O)或Z=1 <= 小于或等于/不大于
无条件转移指令JMP
指令格式执行操作机器码说明段内直接短转移Jmp short (I P)←(IP)+8位位移量EB 转移范围-128到+127字

段内直接近转移Jmp near (IP)←(IP)+16位位移量E9 转移到段内的任一位置段内间接转移Jmp word (IP)←(有效地址EA) FF
段间直接(远)转移Jmp far (IP)←(偏移地址)
(CS)←(段地址) EA
段间间接转移Jmp dword (IP)←(EA)
(CS)←(EA+2)
**********************************************************************************************************************
**********
/article/2/2300.shtm
汇编指令与机器码的相互转换(转载)
查看上面的网址。

机器语言我们只要重点理解一下几个概念:
1. 机器语言指令有操作码(OP)和地址码两部分组成
|_____________OP_______________|__d__|__w__|
|_____________OP_______________|__s__|__w__| MOV AX,1234H 对应的机器码为:B83412 解法:判断-> 这个是8086汇编16位汇编指令格式,并且是立即寻址方式
查表-> 打开opcodes.html文件,找到标题为"Main Instructions ",单击"M "字母,然后对应查看"MOV Reg,Imm "格式的"OpCode "项为:1011wrrr
再判断-> 由于寄存器是AX, 立即数是1234H,明显是"对字操作",所以w=1
在查看本文章上面的"表1 ",对应的查到rrr的值为000
组合结果-> w=1
rrr=000
1011wrrr=1011 1000B -> B8H
根据" 3.指令格式简介" -> B8H + |立即数(低位在前高位在后)|=B83412H
PS: "+ " 符号不为"加号"
好了,已经解完第一题了,机器码为B83412H
———————————————————————————————————————
指令4 -> MOV AX,BX 对应的机器码为:8BC3
解法:判断-> 这个是8086汇编16位汇编指令格式,并且是寄存器寻址方式
查表-> 打开opcodes.html文件,找到标题为"Main Instructions ",单击"M
"字母,然后对应查看"MOV Reg,Reg "格式的"OpCode "项为:1000101woorrrmmm 再判断-> 由于寄存器是AX, BX 明显是"对字操作",所以w=1
在查看本文章上面的"表4 ",对应查到oo=11 因为是寄存器寻址方式
在查看本文章上面的"表1 ",对应查到rrr的值为000 ,因为当两个操
作数都是寄存器,那么一般要以目的操作数为准
在查看本文章上面的"表3 ", 对应查到mmm的值为011 ,因为当两个操作数都是寄存器,那么一般
要以源操作数为准
组合结果-> w=1
oo=11
rrr=000
mmm=011
1000101woorrrmmm=1000 1011 1100 0011B -> 8BC3H
好了,已经解完第二题了,机器码为8BC3H
———————————————————————————————————————
呵呵,不错吧,很简单吧,有了80X86 OPCODES 查询表一切都是那么简单,如果还有什么问题,
大家都来这里提问!
剩下的:
指令2 -> MOV EBX,0 对应的机器码为:66BB00000000
指令3 -> MOV CL,55H 对应的机器码为: B155
大家来练练手,注意指令2 需要用到32位指令格式,请查阅相关的80x86汇编语言书籍的机器语言部
分,应该有解释的。

相关文档
最新文档