CPU简介
CPU是计算机的核心部件,主要有运算器、控制器、寄存器等器件构成。CPU的运行依赖于存储器即内存中的机器指令和数据。运算器、控制器、寄存器等器件由CPU中的内部总线进行连接控制,同时,CPU提供外部总线进行外部器件的控制。
外部总线主要包括数据总线、地址总线、控制总线。
数据总线的宽度决定了CPU和外部器件的数据的传送速度。对于8086CPU来说,数据总线宽度为16,一次可传送两个字节。相较于数据总线宽度为8的8088CPU,一次传送的数据多了1个字节。
控制总线决定了CPU对外部器件的控制能力。一个CPU的控制总线的多少,就意味了CPU提供了对外部器件的多少种控制。
地址总线的宽度决定了CPU的寻址能力。一个CPU有N条地址总线,就意味着CPU最多可以寻找到2的N次方个内存单元。CPU寻址方式由段地址和偏移地址决定:物理地址=段地址*16 + 编译地址。
CPU中包含多个不同功能的寄存器,8086CPU中有14个寄存器:
AX:累加寄存器
BX:基址寄存器
CX:计数寄存器
DX:数据寄存器
SI:源变址寄存器
DI:目的变址寄存器
SS:栈段寄存器
SP: 栈顶指针寄存器
BP:基址指针寄存器
CS:代码段寄存器
IP:指令指针寄存器
DS:数据段寄存器
ES:附加段寄存器
PSW:标志寄存器
在计算机中,指令和数据都是以二进制数据进行存在的,同一内存地址下的二进制数据既可以表示机器指令,也可以表示数据,CPU通过不同的寄存器功能来对二进制数据进行不同的解读运算,如,DS:[偏移地址]指向的内存地址的数据当成数据来进行处理,CS:[IP]指向的内存地址数据当成机器指令来执行。
现在对各个寄存器的功能还不了解,随着后面的学习,会一点一点的介绍各个寄存器的功能和使用。
不同类型的CPU有不同的机器指令,汇编语法也不相同,在此学习的汇编依赖于8086CPU。学习理解了该CPU系列下的汇编后,在去接触其他类型的CPU下的汇编时,也能很快的学习并理解其对应的汇编语言。
汇编环境搭建
在windows下学习汇编,需要有一个汇编开发环境,只有动手实践,才能更好的掌握好一门编程语言。
windows下的汇编环境需要DOSBOX,官网下载地址:https://sourceforge.net/projects/dosbox/files/latest/download
同时还需要下载debug、link、masm等工具。
在此提供完整的工具安装包:https://download.csdn.net/download/weixin_41562374/11343343
安装步骤如下:
1、点击 DOSBox0.74-3-win32-installer.exe 安装。默认安装即可。
2、建立一个工作目录,如:D:\dosbox,把 debug.exe 等工具复制到工作目录中。
3、找到DOSBOX的安装目录,点击运行文件 DOSBox 0.74-3 Options.bat。
4、在打开的文本中,挂载第二步中新建的工作目录。在文件末尾添加命令如下:
mount C D:\dosbox
C:
安装配置完成后,运行dosbox程序,如下:
若不去挂载工作目录,在每次运行dosbox时,需要手动输入挂载指令。
在弹出的窗口中输入debug,进入调试模式:
输入R可以查看CPU中各个寄存器数据情况:
输入D指令,可以查看内存数据:
内存数据显示格式:
1、左边部分,如0483:0100,为每行内存的起始地址。
2、中间部分,起始地址及其后的内存中的数据。每行显示16个内存单元的内容,每个单元为一个字节。如0483:0100指 向的数据为00,0483:0101指向的数据为00,前8个单元内容和后8个单元内容用 - 符号分割。
3、右边部分,表示内存单元的数据对应的可显示的ASCII码字符,若没有对应的字符,则用 . 来代替。
Debug功能下的其他常用指令:
E:改写内存中的内容
U:将内存中的机器指令翻译成汇编指令
T:执行CS:[IP]指向的一条指令
A:写入汇编指令到内存中
至此,所需要的准备和环境已搭建完成,下面开始投入到汇编语言的学习中吧。