厚德载物 发表于 2012-7-4 20:12:17

为什么现在的32位寄存器还可以写16位汇编指令呢?

现在电脑的寄存器是32位的了,那为什么汇编程序里面不写 mov eax,1 呢,而写mov ax,1又是怎样在32位cpu中执行的呢?

Tzdner_C 发表于 2012-7-5 14:30:06

这个就是你还没有正确理解寄存器。。。16位寄存器ax是在8位寄存器al上扩展了8位,原来的还在哪里叫al,扩展的那8位叫ah,32位寄存器eax,也是在ax的基础上扩展了16位,原来的ax还在哪里。。。就像盖楼房一样,你先盖了一层,然后嫌少了再在上面加了一层,最后又嫌少又在上面加了一层,所以这三层里面都还能住人,都有效,只是起了不同的名字al,ax,eax,当你要在一层住人的时候,就告诉CPU,al,。。要在一层和二层都住人的时候,告诉CPU,ax,。。。inter造CPU,是兼容,是扩展,没有废弃前面的任何东西。。。

厚德载物 发表于 2012-7-5 21:39:59

呵呵呵。懂了
页: [1]
查看完整版本: 为什么现在的32位寄存器还可以写16位汇编指令呢?