汇编和机器码的对应表

合集下载

北京大学计算机系统导论示例

北京大学计算机系统导论示例
ISA 汇编码与机器码的形式 例: rmmovl rA, D(rB) --------- icode:ifun rA rB D 要求: 搞清楚指令的功能(具体执行的流程),用到的符号,它们表示的意义,书 写的顺序,在机器码中所占的字节大小 特别注意转移类指令和访存类指令,尤其是二者都有的与栈操作相关指令 其他细节: 跳转地址、偏移量等常数在机器码中的表示:小端法 mov 类指令对操作数的限制:关于存储器和立即数 机器表示和汇编表示寄存器顺序可能不同:如 rmmovl 和 mrmovl 哪些指令修改了哪些条件码
总结 RISC 和 CISC 区别 // 了解 Y86 和 I法 HCL 逻辑门、MUX、ALU、D 触发器、Register file、Memory block、
注意: 逻辑门连接时是否会引起信号矛盾 具体的结构单元:每根线的位置,表示的数据位数(1,5, 32 etc),其上信 号含义,信号传递方向,是否受时钟控制 组合电路和时序电路 HCL 编程 可以做几道书上的练习题找找感觉,再看看 Lab 注意: 硬件控制语言与高级语言的有何异同:比如多个 cases 的写法,集合 SEQ 所有指令各阶段的具体工作 注意: 要严格按书上规范写,注意每阶段用到哪些量,以及不同步骤的顺序 主部分书上给出了一部分,还有一部分是练习,一定要自己重新写一遍,考试 的时候默写就会很顺了 硬件流程图最好走一遍 这一章书上的代码段,图片,表格和练习题(课后题不要求,我觉得练习题就够 了) 如果时间不够可以先跳过 HCL 代码段和习题,这部分我觉得只要认真做 AttackLab 就 可以基本掌握

汇编语言转换成机器码 -回复

汇编语言转换成机器码 -回复

汇编语言转换成机器码-回复标题:汇编语言转换成机器码的详尽解析【汇编语言转换成机器码】在计算机科学领域,程序设计语言与计算机硬件之间的桥梁由汇编语言和机器码共同搭建。

汇编语言是一种低级编程语言,它能直接对应到计算机硬件的操作,而机器码则是计算机硬件可以直接执行的二进制指令集。

下面将详细阐述这一过程,从汇编语言编写、汇编器的工作机制到最终生成机器码的具体步骤。

一、汇编语言基础汇编语言是计算机硬件操作的一种符号化表示,它的语句通常与特定计算机架构的指令集一一对应。

例如,在x86架构中,“mov ax, bx”这条汇编指令代表将寄存器bx中的值移动到寄存器ax中。

这种指令简洁明了,易于理解,且直接反映了底层硬件操作。

二、汇编过程详解1. 源代码阶段:程序员使用汇编语言编写源代码,如上述的“mov ax, bx”。

每条汇编指令都对应一个或多个机器码。

2. 汇编阶段:源代码经过汇编器(Assembler)处理,这是一个将人类可读的汇编语言转化为机器可以理解的机器码的过程。

汇编器会根据预定义的指令集架构(Instruction Set Architecture,ISA)进行翻译,每个汇编指令都会被转换为相应的二进制机器码。

3. 符号表生成:汇编器还会创建一个符号表,记录源代码中定义的各种符号(如变量名、标签等)及其对应的内存地址,以便后续链接阶段使用。

4. 目标文件生成:经过汇编后,得到的目标文件(Object File)包含已转换为机器码的指令以及符号表信息,但此时还不能直接运行,因为目标文件可能引用了其他模块或者库函数,需要进一步链接。

三、链接过程与机器码生成1. 链接阶段:目标文件通过链接器(Linker)与其他目标文件或库文件进行链接,解决符号引用问题,形成可执行文件(Executable File)。

在这个过程中,所有模块的机器码被整合在一起,并确定了最终的内存布局。

2. 机器码确认:至此,所有的汇编语言指令都已经成功地转换成了机器码。

汇编指令对照表

汇编指令对照表

汇编指令对照表汇编指令对照表指令功能指令功能指令功能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 更新时间:。

汇编和机器码的对应表

汇编和机器码的对应表

单片机指令功能一览表助记符代码说明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) |举报。

8086指令与机器码对应

8086指令与机器码对应
W.F.R/M
SUB
B.T.R/M
SUB
W.T.R/M
SUB
AL,
SUB
AX,
CS:
DAS
2
3
CMP
B.F.R/M
CMP
W.F.R/M
CMP
B.T.R/M
CMP
W.T.R/M
CMP
AL,
CMP
AX,
DS:
AAS
3
4
DEC AX
DEC CX
DEC DX
DEC BX
DEC SP
DEC BP
DEC SI
DEC DI
BX
011
100
[SI]
[SI+D8]
[SI+D16]
AH
SP
100
101
[DI]
[DI+D8]
[DI+D16]
CH
BP
101
110
[D16]
[BP+D8]
[BP+D16]
DH
SI
110
111
[BX]
[BX+D8]
[BX+D16]
BH
DI
111
↑R/M
→MOD
00
01
10
11
↑R/M
←MOD
段寄存器
8086/8088
指令与机器码转换对照表
\L
H\
0
1
2
3
4
5
6
7
L/
/H
0
ADD
B.F.R/M
ADD
W.F.R/M
ADD
B.T.R/M

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。

计算机机器码转换方法

计算机机器码转换方法

计算机机器码转换方法
计算机机器码是一种二进制代码,通常用于指令执行和数据处理。

但是,对于人类来说,机器码并不直观和易于理解。

因此,需要将机器码转换成更易于阅读和理解的形式。

下面是一些常见的机器码转换方法:
1. 十六进制表示法:将每个二进制数位组成四位二进制数,然
后将这些四位二进制数转换成对应的十六进制数。

例如,二进制数11011010可以表示为0xDA,其中D对应二进制数1101,A对应二进
制数1010。

2. 汇编指令:将机器码转换成对应的汇编指令。

汇编指令是一
种更易于理解的低级语言,可以直接在计算机上执行。

例如,机器码10110000可以转换成指令MOV AL, 0。

3. 反汇编:将机器码反编译成更易于阅读和理解的汇编指令。

反汇编是一种将机器码转换为汇编指令的过程,通常使用专门的反汇编工具。

4. 机器码分析:通过分析机器码的结构和功能,理解其作用和
含义。

这种方法需要深入了解计算机体系结构和指令集。

总之,机器码转换方法可以帮助我们更好地理解和分析计算机程序的执行过程,对于计算机科学和工程领域的从业人员来说,是一种必要的技能。

- 1 -。

暴力破解中所用到的汇编指令机器码知识

暴力破解中所用到的汇编指令机器码知识

关于暴力破解中所用到的汇编指令机器码知识
我们在暴力破解中修改的对象基本上都是条件跳转指令(如 JZ、JNZ、JG。

等等)和无条件跳转指令JMP,对于其它地方的修改多数都是改成NOP,所以这里主要讲一下跳转指令对应的机器码。

在80X86 体系的CPU中,成对条件跳转指令(指的是判断条件刚好相反)如下所示:
JZ<-->JNZ
JE<-->JNE
JB(JNAE)<-->JNB(JAE)
JC<-->JNC
JA(JNBE)<-->JNA(JBE)
JG(JNLE)<-->JNG(JLE)
JL(JNGE)<-->JNL(JGE)
JS<-->JNS
JP(JPE)<-->JNP(JPO)
JO<-->JNO
80X86体系CPU中的条件跳转指令分为单字节和双字节指令两种,分别对应8BIT和16BIT跳转;而与条件跳转指令相匹配的无条件跳转指令 JMP也有单字节和双字节指令两种,分别对应8BIT和16BIT跳转,当我们需要将条件跳转指令改成相应的无条件跳转指令时,因为要保持修改前后机器码长度的一致性,所以要注意被修改的条件跳转指令是单字节还是双字节指令,从而用相应字节的JMP机器码来代替,下表列出了暴力破解中条件跳转指令的修改方法:
关于跟踪程序时如何在Softice中动态改变条件跳转指令的执行方向:
还有一种方法是用鼠标点击寄存器窗口的EIP,然后直接输入目标代码的IP地址就可以了,不过使用这个方法时要小心,否则使程序跑飞就完蛋了!。

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

单片机指令功能一览表
助记符代码说明
MOV A,Rn E8~EF寄存器A
MOV A,direct E5 dircet直接字节送A
MOV A,@Ri ER~E7间接RAM送A
MOV A,#data74 data立即数送A
MOV 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送间接RAM
MOV@Ri,#data76~77 data直接字节送间接RAM MOV@Ri,#data76~77 data立即数送间接RAM MOV DPTR,#data1690 data 15~816位常数送数据指针
data7~0
MOVC A,@A+DPTR93由((A)+(DPTR))寻址的程序存贮
器字节选A
MOVC A,@A+PC83由((A)+(PC));寻址的程序存贮器字节送A
MOVX A,@Ri E2~E3送外部数据(8位地址)送A
MOVX A,@DPTR E0送外部数据(16位地址)送A
MOVX@Ri,A F2~F3A送外部数据(8位地址)MOVX@DPTR,A F0A送外部数据(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和间接RAM
XCH A,@Ri D6~D7交换A和间接RAM的低位SWAP A C4
算术操作(A的二个半字节交换)
ADD A,Rn28~2F寄存器加到A
ADD A,dircet25 dircet直接字节加到A
ADD A,@Ri26~27间接RAM加到A
ADD A,#data24data立即数加到A
ADD 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加1
INC Rn08~0F寄存器加1
INC dircet05 dircet直接字节加1
INC@Ri06~07间接RAM加1
DEC A14A减1
DEC Rn18~1F寄存器减1
DEC dircet15 dircet直接字节减1
DEC@Ri16~17间接RAM减1
INC DPTR A3数据指针加1
MUL AB A4A乘以B
DIV AB84A除以B
DA A D4A的十进制加法调整
逻辑操作
ANL A,Rn58~5F寄存器“与”到A
ANL A,dircet55 dircet直接字节“与”到A
ANL A,@Ri56~57间接RAm“与”到A ANL A,#data54 data立即数“与”到A
ANL dircet A52 dircet A“与”到直接字节
ANL dircet,#data53 dircet data立即数“与”到直接字节ORL A,Rn48~4F寄存器“或”到A
ORL A,dircet45 dircet直接字节“或”到A
ORL A,@Ri46~47间接RAM“或”到A ORL A,#data44 data立即数“或”到A
ORL dircet,A42 dircet A“或”到直接字节
ORL dircet,#data43 dircet data立即数“或”到直接字节XRL A,Rn68~6F寄存器“异或”到A
XRL A,dircet65 dircet直接字节“异或”到A
XRL A,@Ri66~67间接RAM“异或”到A
XRL A,#data64 data立即数“异或”到A
XRL 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) |举报。

相关文档
最新文档