汇编指令对应的机器码 ,问 为啥这个汇编指令对应的是这个机器码?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了汇编指令对应的机器码 ,问 为啥这个汇编指令对应的是这个机器码?相关的知识,希望对你有一定的参考价值。

机器码是随芯片设计好的。汇编指令或者助记词,会由汇编器以一对一的形式映射成机器码的字节。比如ADD
AL,56h数会被映射成
2个字节
ADD
AL
-->
04h->
0000
0100
56h
->
0101
0110
而0000
0100
加法指令逐就相当于8个操作开关(算数逻辑单元ALU)属于的工作状态,进入这个状态后,下一个字节读入的是操作数据。
cpu中间固化了能针对这些开关的链锁操作机制,可能由几十上百个晶体管组成的加法逻辑,这条指令比较简单也许几十个晶体管就执行出结果。把加法结果存到AL中。
计算机是靠逻辑运算组合成数字运算,靠简单数字运算组合成复杂运算。
参考技术A b82266
对应16位汇编:mov
ax,6622h
机器码都有唯一一条汇编指令与之对应
你debug
16位程序可以看到在debug的第一列是内存的位置
第二列就是机器码
第三列是
与机器码对应的汇编指令
“为什么内存中的机器码是b82266”
那我
还问
你。为什么
。你编程的。时候要写指令“mov
ax,6622h”?
“这些是人为计算,还是计算机规定的”你是不是要问。机器码b82266怎么来的还。是怎么。怎么。的?
机器码b82266
做的就是把16进制的2266存到ax寄存器中
有与之对应的汇编指令。为什么要有与之。对应的。汇编指令?
你看b82266你知道啥。意思不?
不知道吧?
那你看mov
ax,6622h就知道。什么意思了吧?
为什么要这样编码?那你问intel公司去吧
2266
怎么。来的?
你编程的时。候不要写
mov
ax,6622就没有6622了

汇编基础

    程序员->汇编指令->编译器->机器码->计算机。 (其实我最好奇的是C++ 在经过编译器的处理后的汇编指令, 这也是我学习汇编的目的).

    以下汇编的基础知识: 

        1: 汇编语言组成: 汇编指令, 伪指令 其他符号。

            汇编指令:机器码的助记符,有对应的机器码。 伪指令:没有机器码,由编译器执行, 计算机并不执行。  其他符号:例如 +-× 等。 

        2: 存储器 

          存储器按照功能来分: 有内部的存储器和外边的存储器。  内部的存储器包括: 寄存器,高速缓冲的寄存器 和 主 存储器。 一般寄存器都会放在CPU 芯片的内部,高速缓存的寄存器也通常放在

                    cpu的内部, 主存储器就是只插在内存槽里的内存条了。  


cpu 要从内存里读出数据,首先要知道: 存储数据的单元,就是说:她要确定她要读取那个存储单元的中的内存,
就好像门牌号一样。 (存储器内部分存在内存段和地址。)

cpu 通过总线来读取存储器中的内容:

总线分为三种:
1:控制总线, cpu 通过控制总线来告知存储器是读写。
2:数据总线, cpu 通过数据总线来传送读写内容。
3:地址总线, cpu 用来读写的内存地址。

       

  

以上是关于汇编指令对应的机器码 ,问 为啥这个汇编指令对应的是这个机器码?的主要内容,如果未能解决你的问题,请参考以下文章

如何根据机器码来获得相应的汇编指令。主要是CALL指令不会

汇编语言第一章总结

汇编第一章

汇编语言基础知识的总结

汇编学习-第一章(基础知识)

汇编语言#第一章基础知识