1. 机器语言与汇编语言
机器语言是机器指令的集合。电子计算机的机器指令是一系列二进制数字。计算机将之转换为一系列高低电平脉冲信号来驱动硬件工作。比如,运算s=768+12288-1280,对应的机器码如下:
101110000000000000000011
000001010000000000110000
001011010000000000000101
由于机器语言指令都是由01组成,难以编写,记忆和维护程序.所以为了解决这一问题而产生了汇编语言,通过助记符、伪指令和其他符号来实现编程。
其中,助记符有对应的机器码,伪指令由编译器执行,其他符号由编译器识别。
计算机只能读懂0101的机器码,所以汇编语言必须翻译成计算机可执行的机器码才能运行。即,汇编源程序(.asm)通过编译器编译产生机器码(.obj),再通过连接器连接产生最终的可执行文件(.exe)(进行汇编编程时,需要用到编辑器(edit), 编译器(masm), 连接器(link), 调试工具(debug)等,不像VS等IDE,这里的各个步骤是拆开的)。
2. CPU和内存
CPU是计算机的核心部件,它控制着整个计算机的运作并进行计算。一个典型的CPU主要由运算器、控制器、寄存器等器件构成,通过内部总线相连。对于汇编而言,CPU的主要部件是寄存器。寄存器是CPU中程序员可以用指令读写的部件,可以通过改变寄存器中的内容来实现对CPU的控制。
8086CPU中总共有14个寄存器:AX, BX, CX, DX, SI, DI, SP, BP, IP, CS, SS, DS, ES, PSW。其中,AX, BX, CX, DX为通用寄存器,用来存放一般性数据,其他的寄存器后面会详细介绍。
要想让一个CPU工作,就必须向它提供指令和数据。指令和数据都存放在存储器,即内存中。一台PC机中,内存的作用仅次于CPU。
内存从读写属性上可以分为随机存储器(RAM)和只读存储器(ROM)。随机存储可读可写,但必须带电存储,关机后内容丢失;只读存储只能读取不能写入,关机后内容不会丢失(这里的内存不是简单的内存条,还包括显存和网卡等),如Fig. 1所示。
对于8086CPU而言,内存地址段分配;
i)地址0~7FFFH的32KB为主随机存储的地址空间;
ii)地址8000H~9FFFH的8KB为显存地址空间;
iii)地址A000H~FFFFH的24KB为各个ROM的地址空间。
注:内存地址大小受CPU地址总线宽度的限制。8086CPU的地址总线宽度为20,即1MB。80836CPU后,地址总线宽度为32,即4GB。
DOS下0:200H~0:2FFH的256个字节的空间是安全的,DOS和其他合法程序一般都不会使用这段空间。
3. CPU对内存的读写
首先,我们知道数据和指令只是应用上的概念,它们在内存中没有任何区别,都是二进制数据。那CPU怎么才能区分要处理的二进制代码是数据还是指令呢?
比如:1000100111011000可以表示数据:89D8H,也可以表示程序:mov ax,bx。
要理解这个问题,就需要知道CPU的工作过程了。
1) 首先要确定待处理内存单元的地址(地址信息);
2) 其次控制器件进行读/写命令(控制信息);
3) 最后完成CPU和内存间的数据传输(数据信息);
CPU通过总线(CPU和其他芯片间的导线)完成上述三类信息(电信号)的传输。如Fig.2所示。即,相同的二进制代码从不同总线传输所表达的意义不同,这决定了其被当作数据还是代码处理。
单片机疑难问题咨询:方先生 手机:15328075932 QQ:67828115
本文部分文字和图片来源于互联网,如有侵犯您的权利请发送内容至:173323810@qq.com,我们将立即删除!