汇编语⾔——汇编指令长度的判断汇编语⾔(王爽)中,讲CS:I[寄存器的地⽅有这样⼀则图⽰:
其中IP=IP+所读指令的字节数。
那么,所读指令的字节数应该怎么判断呢?汇编table指令什么意思
汇编指令长度与寻址⽅式有关,规律或原则如下:
⼀、没有操作数的指令,指令长度为1个字节
⼆、操作数只涉及寄存器的的指令,指令长度为2个字节
如:mov bx,ax
三、操作数涉及内存地址的指令,指令长度为3个字节
如:mov ax,ds:[bx+si+idata]
四、操作数涉及⽴即数的指令,指令长度为:寄存器类型+1
8位寄存器,寄存器类型=1,如:mov al,8;指令长度为2个字节
16位寄存器,寄存器类型=2,如:mov ax,8;指令长度为3个字节
五、跳转指令,分为2种情况:
1、段内跳转(指令长度为2个字节或3个字节)
jmp指令本⾝占1个字节
段内短转移,8位位移量占⼀个字节,加上jmp指令⼀个字节,整条指令占2个字节
如:jmp short opr
段内近转移,16位位移量占两个字节,加上jmp指令⼀个字节,整条指令占3个字节
如:jmp near ptr opr
2、段间跳转,指令长度为5个字节
如:jmp dword ptr table[bx][di]
或 jmp far ptr opr
或 jmp dword ptr opr
注意:形如“jmp 1234:5678”的汇编指令,是在Debug中使⽤的汇编指令,汇编编译器并不认识,如果在源程序中使⽤,那么在编译时便会报错。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论