当前位置: 代码迷 >> 汇编语言 >> 指令集了解的进来,该怎么处理
  详细解决方案

指令集了解的进来,该怎么处理

热度:9176   发布时间:2013-02-26 00:00:00.0
指令集了解的进来

我把里面内存的数据转换成了这样!
10111000 100011 1 mov ax,0123H
10111011 11 0 mov bx,0003H
10001001 11011000 mov ax,bx
00000001 11011000 add ax,bx
问:
这个mov指令,cpu是怎么知道的,指令集判定这个mov是根据上面那些0,1数据进行判断的吗? 希望大家可以给我解惑!

------解决方案--------------------------------------------------------
你说的对,机器是只认识01序列,你的汇编代码经过编译连接以后会生成相应的机器代码也就是一大堆01序列,cpu靠这个执行
------解决方案--------------------------------------------------------
这个在cpu生产的时候就规定了的。。。而且最基本的程序都已经被固化到了主板的ROM里。。何况在用户和cpu之间还有个系统软件啊,系统软件功能就是管理cpu的运行和其他资源的控制。
------解决方案--------------------------------------------------------
建张表呗

张三的名字里有张
张四的名字里也有张

你怎么识别他们有不同?
------解决方案--------------------------------------------------------
你想知道这个,只能问Intel和AMD,他们是生产CPU的,这些技术如果告诉你了,他们就不用卖CPU了
------解决方案--------------------------------------------------------
01也是抽象的,其实也没有。或高电平或低电平或上升沿或下降沿。


------解决方案--------------------------------------------------------
这个最好找书看,一两句话说不清楚.
------解决方案--------------------------------------------------------
有协议的,规则啊,大家都得遵守的规则
------解决方案--------------------------------------------------------
CPU里面有一个解释器,将汇编程序翻译成了微指令,然后再执行,反正CPU内部有一个东东,会把咱的汇编程序再翻译一遍。
------解决方案--------------------------------------------------------
你不要只看0和1,翻译成十六进制就会看得很清楚,mov ax,0123H是B8 23 01,其中B8表示mov ax,23 01表示0123H,mov cx,0123H就是B9 23 01,B9表示mov cx,其中CPU先读入B8,然后取32 01到ax寄存器
------解决方案--------------------------------------------------------
探讨
引用:

你不要只看0和1,翻译成十六进制就会看得很清楚,mov ax,0123H是B8 23 01,其中B8表示mov ax,23 01表示0123H,mov cx,0123H就是B9 23 01,B9表示mov cx,其中CPU先读入B8,然后取32 01到ax寄存器

哦,那是不是B字就是代表的mov指令了?

------解决方案--------------------------------------------------------
探讨

引用:

你不要只看0和1,翻译成十六进制就会看得很清楚,mov ax,0123H是B8 23 01,其中B8表示mov ax,23 01表示0123H,mov cx,0123H就是B9 23 01,B9表示mov cx,其中CPU先读入B8,然后取32 01到ax寄存器

哦,那是不是B字就是代表的mov指令了?

------解决方案--------------------------------------------------------
这个是王爽那本么?
------解决方案--------------------------------------------------------
首先来解释一下哦 CPU指令的编码分为地址总线和数据总线。。。貌似是这样的 : 指令通过数据总线传输到解码器 解码器所存住数据 然后你就得了解锁存器的工作原理,
锁存器 他有一个输入可以输入若干位数据 还有一个开关用于确定是否在这个周期内写入数据。。。OK 假设第一个周期是开着的 然后在这里锁存住你的指令数据 然后下一个周期 写入开关关闭 这个时候锁存器的输出信号上面会有高低电频控制逻辑上像继电器这样的东西。 这样实际上CPU的指令对应着一组开关的开关状态,这组开关打开或者关闭相关的逻辑电路。来确定 是否读入数据从那读 送到哪 做哪些逻辑运算 然后把结果给谁。。。

总之 你得了解CPU如何从内存中装载指令以及如何执行指令。 。 。 这个东西就不是三言两语的事情了
------解决方案--------------------------------------------------------
你得看看Intel官方的手册 由于一些历史上的设计原因 很多指令对应的机械码是没有规律的 比如 mov这个指令的编码就很混乱 还有上面说的那个装载指令的过程太晕了 机器指令的长度一般是可变的 额。。。 很难说清楚 楼主还是先看看相关的书籍吧 这个不是三言两语能解释清楚的 。。
  相关解决方案