8086cpu汇编语言基础入门
2018-12-05 14:15:53 1 举报
AI智能生成
8086汇编基础入门
作者其他创作
大纲/内容
基础知识
机器语言
机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指
令的集合。
令的集合。
简单理解:一组有意义的二进制代码。也可以称为机器指令,计算机能直接识别
汇编语言
汇编语言的产生
机器指令 1000100111011000 表示把寄存器bx的内容送到ax中,机器语言难于辨别和记忆,
汇编指令则可以写成mov ax bx 这样写法与人类语言接近,便于阅读和记忆
汇编指令则可以写成mov ax bx 这样写法与人类语言接近,便于阅读和记忆
汇编语言的组成
汇编指令:机器码的助记符,有对应的机器码
伪指令:没有对应的机器码,由编译器执行,计算机并不执行
其他符号:如+,-,*,/等,由编译器识别,没有对应的机器码
存储器
CPU 是计算机的核心部件 ,它控制整个计算机的运作并进行运算 。要想、让一个 CPU 工作,就必须向它提供指令和数据 。指令和数据在存储器中存放 ,也就是我们平时所说的 内存。
指令和数据
指令和数据是应用上的概念 。在内存或磁盘上 ,指令和数据没有任何区别 ,都是二进 制信息。CPU 在工作的时候把有的信息看作指令 ,有的信息看作数据 ,为同样的信息赋 予了不同的意义
例如 ,内存中的二进制信息 1000100111011000 ,计算机可以把它看作大小为 89D8H
的数据来处理 ,也可以将其看作指令 mov ax,以来执行。
100 010 0111011000 一> 89D8H (数据)
10 0 0 10 01110 110 0 0 > mov ax , bx (程序)
的数据来处理 ,也可以将其看作指令 mov ax,以来执行。
100 010 0111011000 一> 89D8H (数据)
10 0 0 10 01110 110 0 0 > mov ax , bx (程序)
存储单元
以8位二进制作为一个存储单元,也就是一个字节
计算机的最小信息单位是 bit(音译为比特),也就是一个二进制位。
8 个 bit 组成一个 Byte ,也就是通常讲的 一个字节 。
一个存储单元可以存储 一个 Byte ,即 8 个二进制位 。
8 个 bit 组成一个 Byte ,也就是通常讲的 一个字节 。
一个存储单元可以存储 一个 Byte ,即 8 个二进制位 。
CPU 对存储器的读写
数据存储在内存中(例如,你住在南京市,南京市可以容纳很多人,这里的南京市就好比内存,你就是数据)
内存中以存储单元来存储数据(存储单元就好比南京市的房子,数据就好比个人)
cpu通过内存地址来查找数据,(内存地址,就好比家底住址,快递员通过家庭住址把快递送的你家
,cpu同样通过内存地址,找到要操作的数据)
内存中以存储单元来存储数据(存储单元就好比南京市的房子,数据就好比个人)
cpu通过内存地址来查找数据,(内存地址,就好比家底住址,快递员通过家庭住址把快递送的你家
,cpu同样通过内存地址,找到要操作的数据)
CPU 要从内存中读数据 ,
首先要通过地址总线 找到要操作内存中的存储单元,即内存地址
然后通过控制总线,发出,读取或写入的控制信息。
最后通过数据总线传输内存中存储单元的数据
首先要通过地址总线 找到要操作内存中的存储单元,即内存地址
然后通过控制总线,发出,读取或写入的控制信息。
最后通过数据总线传输内存中存储单元的数据
地址总线
是一种计算机总线,是CPU或有DMA能力的单元,用来沟通这些单元想要访问(读取/写入)计算机内存组件/地方的物理地址。
一个 CPU 有 N 根地址线 ,则可以说这个 CPU 的地址总线的宽度为 N。这样的 CPU
最多可以寻找 2 的N 次方个内存单元 。
最多可以寻找 2 的N 次方个内存单元 。
一个16位宽度的地址总线到达2的16次方 = 65536 = 64KB的内存地址,而一个32位地址总线可以寻址到4,294,967,296 = 4GiB的地址。
这也就是为什么我们说32位的操作系统,最大支持4G内存的原因
这也就是为什么我们说32位的操作系统,最大支持4G内存的原因
8086CPU 有 20 位地址总线 ,可以传送 20 位地址 ,达到 1MB 寻址能力 .
数据总线
CPU 与内存或其他器件之间的 数据传送是通过数据总线来 进行的。数据总线 的宽度 决定了 CPU 和外界的数据传送速度 。8 根数据总线一次可传送一个 8 位二进制数据(即一 个字节)。16 根数据总线一次可传送两个字节 。
32位和64位操作系统是指:CPU一次处理数据的能力是32位还是64位。
32位就是一次可以处理4个字节。64位一次可以处理8个字节。现在最高的就是64位了。
控制总线
控制总线,英文名称:ControlBus,简称:CB。控制总线主要用来传送控制信号和时序信号。控制信号中,有的是微处理器送往存储器和输入输出设备接口电路的,比如:读/写信号、片选信号、中断响应信号等;也有是其它部件反馈给CPU的,比如:中断申请信号、复位信号、总线请求信号、设备就绪信号等。因此,控制总线的传送方向由具体控制信号而定,一般是双向的,控制总线的位数要根据系统的实际控制需要而定。实际上控制总线的具体情况主要取决于CPU。
小结
(1) 汇编指令是机器指令的助 记符 ,同机器指令一一对应 。
(2) 每一种 CPU 都有 自己的汇编指令集。
(3) CPU 可以直接使用的信息在存储器中存放。
(4) 在存储器中指令和数据没奋任 何区别,都是二进制信息 。
(5) 存储单元从零开始顺序编号 。
(6) 一个存储单元可以存储 8 个 bit ,即 8 位二进制数。
(7) 1Byte=8bit 1KB= l024B 1 MB = 1024KB 1GB= 1024MB
寄存器
什么是寄存器
寄存器是cpu内的组成部分。(即cpu内部的内存)
寄存器是有限存贮容量的高速存贮部件,它们可用来暂存指令、数据和地址
寄存器是内存阶层中的最顶端,也是系统获得操作资料的最快速途径。
不同的 CPU ,寄存器的个数 、结构是不相同的 。8086CPU 有 14 个寄存器 ,每个寄存 器有一个名称 。这些寄存器是 :AX 、BX 、CX、DX 、SI 、DI 、SP 、BP, IP 、CS、SS 、 DS 、ES 、PSW 。
寄存的分类
通用寄存器
数据寄存器
AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据。
BX(base):基址寄存器,常用于地址索引
CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器.
DX(data):数据寄存器,常用于数据传递。
这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。这是为了兼容以前8位的cpu,
指针寄存器及变址寄存器
SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置
BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置
SI(Source Index):源变址寄存器,可用来存放相对于DS段之源变址指针
DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。
这4个16位寄存器只能按16位进行存取操作,主要用来形成操作数的地址,用于堆栈操作和变址运算中计算操作数的有效地址。
指令指针
指令指针IP是一个16位专用寄存器
标志寄存器
16位的标志性寄存器FR
标志寄存器(Flags Register,FR)又称程序状态字(Program Status Word,PSW)
段寄存器
CS(Code Segment):代码段寄存器
DS(Data Segment):数据段寄存器
SS(Stack Segment):堆栈段寄存器
ES(Extra Segment):附加段寄存器。
CS和IP
CPU通过CS:IP寄存器中的内容找到要执行的代码片段所在内存当中的实际物理地址
CS寄存器(code segment):保存CPU将要执行代码所在物理地址的 基地址(段地址)
IP寄存器(也叫指令指针寄存器):保存CPU将要执行代码所在物理地址的 偏移地址
CS×16+IP 指向 CPU将要执行代码的该物理地址
DS和[address]
CPU通过DS:[0] 找到要读取或写入数据所在内存当中的物理内存地址
DS(Data Segment):保存CPU将要操作内存中数据的所在物理地址 的 基地址(段地址)
[0]表示一个内存单元 ,[0]中的 0 表示内存单元的偏移地址
DSx16+[0]:指向cpu将要读取内存数据的物理地址
物理地址
内存中最小的存储单元是8位二进制,也就是一个字节。为正确地存放或取得信息,每一个字节单元给以一个唯一的内存地址,这个内存地址被称为物理地址(Physical Address),又叫实际地址或绝对地址。
8086CPU 物理地址寻址方法
8086 是 16 位结构的 CPU ,也就是说能够一次性处理 、传输、暂
时存储的信息的最大长度是 16 位的。但是8086CPU的地址总线是20位的。
这就意味着我们要通过两个16位的地址来合成一个20位的物理地址
时存储的信息的最大长度是 16 位的。但是8086CPU的地址总线是20位的。
这就意味着我们要通过两个16位的地址来合成一个20位的物理地址
举例
20位物理地址计算方法如下:
物理地址=段地址*16+偏移地址
物理地址=段地址*16+偏移地址
段的概念
cpu 将若干连续的内存单元地址看作一个段
段地址是针对内存的分段而言的,将每一段的段首地址定义为段地址
段地址存储在DS寄存器中
分支主题
分支主题
0 条评论
下一页