机器语言是机器指令的集合,机器指令是一列二级制数字,计算机又将转变一列高低电压,这样计算机的电子器件就受到驱动,进行运算了,每一个CPU都有自己的机器指令集,也就是规则,也叫做机器语言,早期的程序员编写代码,都是打洞呢,程序员将用0、1数字编成的程序代码打在纸带或者卡片上,1打孔,0就是不打孔。这样很显然不容易记忆,所以就开发了汇编语言,机器指令1000100111011000 表示把寄存器BX的内容送到AX,但是 汇编则写成,mov ax,bx。这样的写法与自然语言就很接近了,不是么,所以说,程序员真?聪明呢
但,机器指令怎么翻译成汇编指令呢,这就需要我们的编译器了,
在计算机中有专门连接cpu和其他芯片的导线,称为总线,根据传送信息的不同,总线从逻辑上分为:地址总线,控制线和数据总线
地址总线:CPU是通过地址总线来指定存储单元的。(寻址)
数据总线:CPU与内存或其他器件的数据传送通过数据总线。(传数)
控制总线:CPU对外部器件的控制是通过控制总线来进行的。(控力)
假如10条地址总线,意味着它能寻址1024个,因为210是1024,一条总线只要两种状态,高电压和低电压
不同CPU,寄存器的个数不一样,结构不一样,8086CPU有14个寄存器,分别为:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW.
8086CPU的所以寄存器都是16位的,可以存放2个字节,(A~D)X 四个寄存器存一般数据,被称为通用寄存器;
而这四个寄存器又可分别 分为2个8位寄存器来用
- AX分为AH和AL
- BX分为BH和BL
- CX分为CH和CL
- DX分为DH和DL
一句话,AX的寄存器的低8位(0~7)叫AL寄存器,高8位(8~15)叫AH寄存器。AH和AL可独立使用
终于开始语法了
mov ax,18 将18送入到寄存器AX里 AX=18(C语言)
add ax ,18 将寄存器AX的数值加上18 AX+=18(C语言)
mov ax, bx 将寄存器BX的数字送入到AX里 AX=BX
add ax,bx 将寄存器BX的数值加上AX放到AX里 AX+=BX
我们知道8086CPU是16位机 而16位机代表什么呢 :
- 运算器一次最大处理16位的数据
- 寄存器的最大宽度位16位
- 寄存器和运算器之间的通路为16位