汇编语言基础(寄存器)
首先一个CPU 的结构一般包含运算器,控制器,寄存器,高速缓存,总线等等他们的功能简要来说就是:
1.运算器进行信息处理
2.寄存器进行信息处理
3.控制器控制个种器件进行工作
4.内部总线连接各种器件
不同的CPU ,寄存器的个数,结构是不相同的。8086有14个寄存器每一个都有一个名字:AX,BX,CX,DX,SI,DI,SP,BP,IP,CS,SS,DS,ES,PSW。
它的寄存器都是16位的,可以存放两个字节,AX,BX,CX,DX这4个寄存器通常用来存放一般性的数据。
特别一提:
8086是现阶段主流PC处理器X86架构处理器的鼻祖,虽然已经是64位了,但是他们还是有很多相似之处的,X86有4种模式,真实模式,保护模式,系统管理模式,虚拟V86模式。
关于寄存器:
以普通的存放一般性数据的寄存器AX 来说,这是一个十六位的寄存器,它可以被从中间等分点分开成两个八位的寄存器,叫AL(low),AH(high),这两个寄存器可以分别使用,就是说可以当作两个寄存器来使用。
字:
字在这里是一个新的概念,一个由16位二进制数据组成的数据就叫做一个字,这是以往没有接触过的。
简单的几条汇编指令:
指令 举例 执行动作 高级语言表示
MOV MOV AX,18 将18送入寄存器AX AX = 18
ADD ADD AX,8 将AX 寄存器的值加8 AX+=8
SUB SUB AX,BX 将BX 的值与AX 相减存入AX AX-=BX
JMP JMP XXXX:YYYY 将地址跳转到XXXX:YYYY
注意:
汇编语言并不区分大小写,MOV与mov 是一样的随便写那种都可以
在使用指令传送数据时两个操作对象的位数应当是一致的(例如,8位不可以和16位互相传数据),不能超过上限。
物理地址:
物理地址 = 段地址*16 + 偏移地址
8086得出物理地址的方法:
1.CPU提供两个16位的地址一个称之为段地址,一个叫偏移地址。
2.段地址和偏移地址通过内部总线送入一个地址加法器的部件,然后使用上面的公式来进行计算
3.地址加法器将两个16位地址合成一个20位物理地址
4.通过内部总线将20位的物理地址送入输入输出的控制电路
5.输入输出的控制电路将20位的物理地址送上地址总线
6.20位物理地址被地址总线传送到存储器
7。不同的段地址和偏移地址可能合成同样的物理地址
其中CS寄存器中存储的就是段地址,IP存储器中存储的是偏移地址。
使用:
windos 用户直接使用DOS就好
linux 用户需要使用dosbox模拟一个DOS 环境