反汇编中的mov,jmp 等是什么意思?列举一下。
是几句基本的汇编指令:
JE——若ZF=1,则跳转
JMP——无条件跳转
JNZ——若ZF=0,则跳转
PUSH——压栈
汇编 语句格式 是 操作 操作数
每句前面你说的这些都是操作了.
mov就是移动,相当于赋值
例如
mov eax,5
那么这句话执行后 eax=5了.
051指令集
资料转移指令
MOV 移动
MOVC 程式记忆体移动
MOVX 外部RAM和扩展I/O口与累加器A的数据传送指令
PUSH 放入堆叠
POP 由堆叠取回
XCH 8位元交换
XCHD 低4位元交换
SWAP 高低4位元交换
算术指令
ADD 两数相加
ADDC 两数相加再加C
SUBB 两数相减再减C
INC 加一指令
DEC 减一指令
MUL (MUL AB乘法指令仅此一条)相乘指令,所得的16位二进制数低8位存累加器A高8位存B
DIV (DIV AB 除法指令仅此一条)相除指令,所得商存A,余数存B
DA (DA A 只此一条指令)调整为十进数
逻辑指令
ANL做AND(逻辑与)运算
ORL做OR(逻辑或)运算
XRL 做(逻辑异或)运算
CLR 清除为0
CPL 取反指令
RL 不带进位左环移
RLC 带进位左环移
RR 不带进位右环移
RRC 带进位右环移
控制转移类指令
JC C=1时跳
JNC C=0时跳
JB 位元=1时跳
JNB 位元=0时跳
JBC 位元=1时跳且清除此位元
LCALL 长调用子程序
ACALL 绝对调用子程序
RET 由副程式返回
RETI 由中断副程式返回
AJMP 绝对转移
SJMP 相对转移
JMP @A+DPTR 散转,相对DPTR的间接转移
JZ A=0时跳
JNZA 0时跳
CJNE 二数比较,不相等时跳
DJNZ 减一,不等於0时跳
NOP 空操作
位变量指令
SETB 设定为1
ORG 程序开始,规定程序的起始地址
END 程序结束
EQU 等值指令(先赋值后使用)例:SUM EQU 30H
DB 定义字节指令
DW 定义字内容
DS 定义保留一定的存贮单元数目
BIT 位地址符号指令 例:SAM BIT P1.0
RET 子程序返回指令
RETI 中断子程序返回指令
$ 本条指令地址
算术运算指令
指令 说明 周期
ADD A,Rn A←A+Rn 12
ADD A,direct A←A+direct 12
ADD A,@Ri A←A+Ri 12
ADD A,#data A←A+data 12
ADDC A,Rn A←A+Rn+C 12
ADDC A,direct A←A+direct+C 12
ADDC A,@Ri A←A+Ri+C 12
ADDC A,#data A←A+data+C 12
SUBB A,Rn A←A-Rn-C 12
SUBB A,direct A←A-direct-C 12
SUBB A,@Ri A←A-Ri-C 12
SUBB A,#data A←A-data-C 12
INC A A←A+1 12
INC Rn Rn←Rn+1 12
INC direct direct←direct+1 12
INC @Ri @Ri←@Ri+1 12
INC DPTR DPTR←DPTR+1 12
DEC A A←A-1 12
DEC Rn Rn←Rn-1 12
DEC direct direct←direct-1 12
DEC @Ri @Ri←@Ri-1 12
MUL AB 两个无符号的8位数据相乘,其中高阶8位放入B缓存器,低阶8位则放入累积器ACC 24
DIV AB 两个无符号的8位数据相除,把ACC值除以B缓存器值,商数放回ACC,余数放在B 48
DA A 累加器作十进制调整 48
逻辑运算指令
指令 说明 周期
ANL A,Rn A←A and Rn 12
ANL A,direct A←A and direct 12
ANL A,@Ri A←A and Ri 12
ANL A,#data A←A and data 12
ANL direct,A direct←direct and A 12
ANL direct,#data direct←direct and data 24
ORL A,Rn A←A or Rn 12
ORL A,direct A←A or direct 12
ORL A,Rn A←A or Rn 12
ORL A,@Ri A←A or Ri 12
ORL A,#data A←A or data 12
ORL direct,A direct←direct or A 12
ORL direct,#data direct←direct or data 24
XRL A,Rn A←A xor Rn 12
XRL A,direct A←A xor direct 12
XRL A,@Ri A←A xor Ri 12
XRL A,#data A←A xor data 12
XRL direct,A direct←direct xor A 12
XRL direct,#data direct←direct xor data 12
CLR A 清除累加器 12
CPL A 累加器反相 12
RL A 累加器向左旋转 12
RLC A 累加器和C左旋 12
RR A 累加器向右旋转 12
RRC A 累加器和C右旋 12
SWAP A 累加器的高低四位互换 12
数据转移指令
指令 说明 周期
MOV A,Rn A←Rn 12
MOV A,direct A←direct 12
MOV A,@Ri A←Ri 12
MOV A,#data A←data 12
MOV Rn,A Rn←A 12
MOV Rn,direct Rn←direct 24
MOV Rn,#data Rn←data 12
MOV direct,A direct←A 12
MOV direct,Rn direct←Rn 24
MOV direct,direct direct←direct 24
MOV direct,@Ri direct←Ri 24
MOV direct,#data direct←data 24
MOV @Ri,A Ri←A 12
MOV @Ri,direct Ri←direct 24
MOV @Ri,#data Ri←data 12
MOV DPTR,#data 16 Ri←16bit data 24
MOVC A,@A+DPTR A←程序内存的数据 24
MOVC A,@A+PC A←程序内存的数据 24
MOVX A,@Ri A←外部RAM的数据(8bit地址) 24
MOVX A,@DPTR A←外部RAM的数据(16bit地址) 24
MOVX @Ri,A 外部的RAM(8bit)←A 24
MOVX @DPTR,A 外部的RAM(16bit)←A 24
PUSH direc 推迭区←direct 24
POP direc direct←堆栈区 24
XCH A,Rn A和Rn互换 12
XCH A,direct A和direct互换 12
XCH A,@Ri A和Ri互换 12
XCHD A,@Ri A和Ri的低四位互换 12
位运算指令
指令 说明 周期
CLR C 清除进位旗标 12
CLR bit 清除直接位 12
SETB C 设定进位旗标 12
SETB bit 设定直接位 12
CPL C 进位旗标反相 12
CPL bit 直接位反相 12
ANL C,bit C←C and bit 24
ANL C,/bit C←C and bit(反相) 24
ORL C,bit C←C or bit 24
ORL C,/bit C←C or bit(反相) 24
MOV C,bit C←bit 12
MOV bit,C bit←C 24
JC rel 若C=1跳至rel 24
JNC rel 若C=0跳至rel 24
JB bit,rel 若bit=1跳至rel 24
JNB bit,rel 若bit=0跳至rel 24
JBC bit,rel 若bit=1跳至rel,且清除此位 24
程序跳跃指令
指令 说明 周期
ACALL addr11 绝对式子程序呼叫 24
LCALL addr16 远程子程序呼叫 24
RET 从子程序返回 24
RETI 从中断子程序返回 24
AJMP addr11 绝对式跳跃 24
LJMP addr16 远程跳跃 24
SJMP rel 短程跳跃 24
JMP @A+DPTR 间接跳跃 24
JZ rel 若A=0跳至rel 24
JNZ rel 若A不等于0跳至rel 24
CJNE A,direct,rel 若A不等于direct跳至rel 24
CJNE A,#data,rel 若A不等于data跳至rel 24
CJNE Rn,#data,rel 若Rn不等于data跳至rel 24
CJNE @Ri,#data,rel 若Ri不等于data跳至rel 24
DJNZ Rn,rel Rn减1不等于0跳至rel 24
DJNZ direct,rel direct减1不等于0跳至rel 24
NOP 没动作 12
缩写符号说明
缩写符号 说明 备注
Rn 缓存器R0-R7
direct 8bit内部数据存储器,包括
1.内部数据存储器(00-7F)的地址
2.特殊功能缓存器(80-FF)的地址,如P0,PSW,TMOD..等
@Ri 由缓存器R0或R1所寻址的内部RAM数据
#data 8bit常数
#data 16 16bit常数
addr 16 16bit的目的地址,可使跳跃指令跳跃64k
addr 11 11bit的目的地址,可使跳跃指令跳跃2k
rel 具正负号的8位地址偏移量,用于相对地址的跳跃
bit 1个bit:只所有可以位寻址的位。(如PSW.7为CY旗号)
A 累加器(累积器)
C或CY 进位旗号
AC 辅助进位旗号
Bb 指定位B0-B7
D 半字节(4Bit)助忆符号
F0 旗号0
I 中断
PC 程序计数器
P0 I/O port 0
P1 I/O port 1
P2 I/O port 2
P3 I/O port 3
PSW 程序状态字组(类似于旗号缓存器)
SP 堆栈指针缓存器
B 缓存器B
DPTR 数据指针缓存器
X 外部滋要内存的助忆符号
@ 间接地址符号
$ 程序计数迄目前的值
reg 缓存器
8051 INSTRUCTION SET
1.Arithmetic operations:
Mnemonic Byte Cyc
ADD A,@Ri 1 1
ADD A,Rn 1 1
ADD A,direct 2 1
ADD A,#data 2 1
ADDC A,@Ri 1 1
ADDC A,Rn 1 1
ADDC A,direct 2 1
ADDC A,#data 2 1
SUBB A,@Ri 1 1
SUBB A,Rn 1 1
SUBB A,direct 2 1
SUBB A,#data 2 1
INC A 1 1
INC @Ri 1 1
INC Rn 1 1
INC DPTR 1 1
INC direct 2 1
INC direct 2 1
DEC A 1 1
DEC @Ri 1 1
DEC Rn 1 1
DEC direct 2 1
MUL AB 1 4
DIV AB 1 4
DA A 1 1
2.Logical opreations:
ANL A,@Ri 1 1
XRL A,@Ri 1 1
ANL A,Rn 1 1
XRL A,Rn 1 1
ANL A,direct 2 1
XRL A,direct 2 1
ANL A,#data 2 1
XRL A,#data 2 1
ANL direct,A 2 1
XRL direct,A 2 1
ANL direct,#data 3 2
XRL direct,#data 3 2
ORL A,@Ri 1 1
CLR A 1 1
ORL A,Rn 1 1
CPL A 1 1
ORL A,direct 2 1
RL A 1 1
ORL A,#data 2 1
RLC A 1 1
ORL direct,A 2 1
RR A 1 1
ORL direct,#data 3 2
RRC A 1 1
SWAP A 1 1
3.Data transfer:
Mnemonic Byte Cyc
MOV A,@Ri 1 1
MOV DPTR,#data16 3 2
MOV A,Rn 1 1
MOVC A,@A+DPTR 1 2
MOV A,direct 2 1
MOVC A,@A+PC 1 2
MOV A,#data 2 1
MOVX A,@Ri 1 2
MOV @Ri,A 1 1
MOVX A,@DPTR 1 2
MOV @Ri,direct 2 2
MOVX @Ri,A 1 2
MOV @Ri,#data 2 1
MOVX @DPTR,A 1 2
MOV Rn,A 1 1
PUSH direct 2 2
MOV Rn,direct 2 2
POP direct 2 2
MOV Rn,#data 2 1
XCH A,@Ri 1 1
MOV direct,A 2 1
XCH A,Rn 1 1
MOV direct,@Ri 2 2
XCH A,direct 2 1
MOV direct,Rn 2 2
XCHD A,@Ri 1 1
MOV direct,direct3 2
MOV direct,#data 3 2
4.Boolean variable manipulation:
Mnemonic Byte Cyc
CLR C 1 1
ANL C,bit 2 2
SETB C 1 1
ANL C,/bit 2 2
CPL C 1 1
ORL C,bit 2 2
CLR bit 2 1
ORL C,/bit 2 2
SETB bit 2 1
MOV C,bit 2 1
CPL bit 2 1
MOV bit,C 2 2
5.Program and machine control:
Mnemonic Byte Cyc
NOP 1 1
JZ rel 2 2
RET 1 2
JNZ rel 2 2
RETI 1 2
JC rel 2 2
ACALL addr11 2 2
JNC rel 2 2
AJMP addr11 2 2
JB bit,rel 3 2
LCALL addr16 3 2
JNB bit,rel 3 2
LJMP addr16 3 2
JBC bit,rel 3 2
SJMP rel 2 2
CJNE A,direct,rel 3 2
JMP @A+DPTR 1 2
CJNE A,#data,rel 3 2
DJNZ Rn,rel 2 2
CJNE @Ri,#data,rel 3 2
DJNZ direct,rel 3 2
CJNE Rn,#data,rel 3 2
mov相当于赋值,如:
MOV A,R1
jmp是无条件跳转,如:
LOOP: mov A,R1
JMP LOOP
汇编语言中MOV时#和@如何使用
不知你指的这二个符号是在什么机器上用的时候。如是在51单片机中用它们都有准确的名字,# 号叫立即符,它表示它后跟的是一个立即数,这个数是死的,写程序时就固定了,不可变的了。@号叫间接符,实际上的意思就是指它后跟的是一个地址指针,内的数是一个地址,操作时只是对这个地址内的数进行...
汇编语言,mov,取地址的情况
1,视date的定义而异 如果date是个段名,是这样。如果是变量名。则不然。2,不清楚lss是什么。
汇编中 mov和movl 有什么区别(举例说明)
12(%ebp), %eax pushl %eax call _strcpy addl $16, %esp 在intel 汇编中就相当于:sub esp,8 lea eax,dword ptr [ebp-792]push eax mov eax,dword ptr [ebp- 796]...AT&T格式的汇编和intel编的差别可以参看有关AT&T汇编的书 l就是32位的意思。
汇编语言指令大全,要详细的 !!!
最佳答案IBM-PC汇编语言指令集 数据传送指令集 MOV 功能: 把源操作数送给目的操作数 语法: MOV 目的操作数,源操作数 格式: MOV r1,r2 MOV r,m MOV m,r MOV r,data XCHG 功能: 交换两个操作数的数据 语法: XCHG 格式: XCHG r1,r2 XCHG m,r XCHG r,m PUSH,POP 功能: 把操作数压入或...
汇编基础知识六
0-7 是 mov rb,lb 8-F 是 mov ERX,Iv 9开头 就是XCHG指令是两个寄存器之间交换而且都是放到EAX中 例:但0是表示EAX 用EAX放到EAX中所以汇编中把 90作为nop 不做任何操作。我们通常使用Nop的时候是遇到花指令这个下次有时间再写。90-97是有规则的,但8-F单独说 表格中如果带有 I64 指令表示...
汇编语言MOV r,m
MOV:资料转移指令 r:寄存器R(register)m:存储器M(memory)中。MOV m,r 转移寄存器R(register)中值到存储器M(memory)中 也就是:m=r
汇编中每句什么意思,麻烦好心人说说,
MOV TMOD,#01H;定时器0工作在方式1上 MOV TH0,#4CH;初值为4C00,定时46079us MOV TL0,#00H MOV IE,#82H;开放定时器0中断 SETB TR0;启动定时器0 MOVTCNT,#0;TCNT(天?)初值为0 MOVHOUR,#12;HOUR(小时)初值为12 MOVMINUTE,#10 ;MINUTE(分钟)初值为10 MOVSECOND,...
汇编,MOV [SI] [1000] 这个指令正确吗?
mov指令需要两个操作数,你这里只有一个,明显错误。可以修改为:mov [si][1000], al mov 1000[si], al mov 1000[si],ax mov word ptr [si], 1000 ...
汇编语言中语句:mov AH,AL 合法吗?
合法语句。传送指令MOV(Move Instruction)传送指令是使用最频繁的指令,它相对于高级语言里的赋值语句。指令格式: MOV Reg\/Mem, Reg\/Mem\/Imm 其中:Reg—Register(寄存器),Mem—Memory(存储器),Imm—Immediate(立即数),它们可以是8位、16位或32位(特别指出其位数的除外)。指令的功能是把源操作数...
汇编语言中mov的立即数是补码还是原码??
是数字。编程时,可以写:+100、-80...,编译时,编译软件会帮你,把它们变成补码。
郝怪葡萄: 汇编 语句格式 是 操作 操作数 每句前面你说的这些都是操作了. mov就是移动,相当于赋值 例如 mov eax,5 那么这句话执行后 eax=5了.
白银市18163091142: 求教C++程序的反汇编解释,请求详细一些.谢谢! - ?
郝怪葡萄: ecx,eax就是32位的寄存器,十六位系统中是cx,ax ss的作用...
白银市18163091142: 汇编指令JMP是什么意思? - ?
郝怪葡萄: 含义 无条件的转移到指令指定的地址去执行从该地址开始的命令.指令必须指定转移的目标地址(或称转向地址). JMP指令不影响条件码. 计算机汇编语言中的一种跳转指令.当需要分支程序时,散转程序有时可以帮我们实现.使用指令...
白银市18163091142: JMP指令包括什么 - ?
郝怪葡萄: JMP指令也就是跳转的意思,分为相对转移和绝对跳转. 绝对转移是直接跳转到内存地址 . 相对跳转是跳转到X字节后的位置在计算时候跳转指令和目的地址的数据都不计算在内
白银市18163091142: 汇编语言中的JMP到底是个啥嘛…不懂诶… - ?
郝怪葡萄: 就是跳转指令,指令放在内存中,是按照顺序一条一条的执行,遇到JMP,就可以跳到JMP指定的地址去执行指令,而不是执行下一条指令.
白银市18163091142: 反汇编中的mov %eax,%eax是什么意思 - ?
郝怪葡萄: 应该是AT&T汇编格式,寄存器前面要加%. 这个是基本的数据转移命令 但这条命令你确定不是你打错了 把Eax转到eax
白银市18163091142: win32汇编程序中被调用的api函数在反汇编时被翻译汇编指令是不是有固定的特征…一时兴起、求解? - ?
郝怪葡萄: CreateWindow函数应该有两种CreateWindowA函数和CreateWindowW函数. CreateWindow函数应该在Windows操作系统的user32.dll动态链接库中. 你所写的应用程序中不包括CreateWindow函数实际代码.你所说的mov xx xx …jmp xx……...
白银市18163091142: 反汇编a5 - movsd是什么意思 - ?
郝怪葡萄: movsd 是符号扩展 movzd 是0扩展 什么意思呢,比如 一个8位的数 是 1 movsd eax, 1 //因为1是正数所以 8位变32位的时候,前面的24位全部用1的符号位来填充 1的符号位为0 movsd eax,-1 //就是用1来填充了,因为-1的符号为1 在计算机中,整数的符号位0表示正数,1表示负数
白银市18163091142: 汇编语言的JMP $+6 是什么意思?
郝怪葡萄: 跳转到 当前的地址 + 6 假如:指令如下面 1000H:jmp $+6 1001H: 1002H: ...... 1006H:mov a,#30h 那么当执行完jmp $+6后,就执行mov a,#30h这条指令
白银市18163091142: 反汇编是什么?
郝怪葡萄: 反汇编就是把从单片机中读出来的BIN文件或者HEX文件,反编译成工程师能看得懂的汇编语言.常常在没有源文件,又需要改动程序的情况下需要反汇编,或者又叫代码逆向工程,这是一门专业性非常强的技术