- 论坛徽章:
- 0
|
我是新手,刚学习X86体系,可能说错了,希望理解,就当笑话,一笑而过,
在cpu看来,所有的东西都被看成是地址寻址(也就是里边的引脚),因此寄存器也是有地址的,命令也是有地址的,好像指令集和通用寄存器是在一起的(就像内存逻辑分段一样,命令在命令段,寄存器在寄存器段),唯一例外的是立即数,但它也有特定的引脚连接立即数产生电路产生的。
0B0B:0102 B80002 MOV AX,0200
0B0B:0108 B80200 MOV AX,0002
这两条指令比较之后,看出前面的B8一样,说明这两条指令不随ax值得变化而变化,这只能说明寻址的是ax的地址,
0B0B:0100 89D8 MOV AX,BX
0B0B:0102 B80002 MOV AX,0200
0B0B:0105 A10002 MOV AX,[0200]
0B0B:0100 BB0002 MOV BX,0200
0B0B:0103 8B1E0002 MOV BX,[0200]
0B0B:0107 BE0002 MOV SI,0200
0B0B:010A 8B360002 MOV SI,[0200]
0B0B:010E 89DE MOV SI,BX
0B0B:0110 89F0 MOV AX,SI
这些指令看出当有寄存器参与之后,寻址方式变化之后,指令的2进制表示就会不同,说明指令是由命令和寄存器加寻址方式经过了一种特殊的运算形成,而内存里的东西,在cpu看来就是一些外来的参数,而且是CPU所不理解的东西,因此在指令的表示里只能照搬过来,如0B0B:0102 B80002 MOV AX,0200,B80002 就把0200给搬到指令中去。
所有这些指令中寄存器的地址是隐含的。 |
|