CPU如何判断指令长度

2025-04-16 11:20:09
推荐回答(1个)
回答(1):

那就要看CPU怎么识别机器码了,
比如 MOV AL,00 的机器码是
1011 0000 0000 0000b (B000h)
MOV 的机器码是 1011
AL 的机器码是 0000
CPU读取一条指令,假如第一个字节是B0,那么
就是MOV AL,后面紧跟着的一个字节就是要传进去的立即数(CPU判定这条指令长度2个字节)

再者 MOV AL,[0000] 的机器码是
1010 0000 (后面16位0)
如果这个字节是A0,那么就是寄存器间接寻址的MOV AL,后面紧跟着的16位就是地址偏移量
(CPU就判定这条指令长度3个字节)

-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-

写好后用debug反汇编,u命令

1814:0000 33C0 XOR AX,AX
1814:0002 A08000 MOV AL,[0080]

其中的 33C0 和 A08000 等就是指令的机器码
就看出来占几个字节了