汇编语言笔记——8086&&寻址方式与指令系统

汇编语言中

  • 语句不区分大小写,编译软件会自动识别语句
  • 用户自定义的变量和符号必须区分大小写。

8086

1.寄存器

cpu在访问存储器时,必须指明:

  • 段寄存器:所访问的存储单元属于哪个段
  • 偏移量:相应存储单元与段起始地址(段基址)的距离

notes : 在程序设计中,可以把一个程序划分为任意个存储段。但只要在程序运行时,最多只有四个段,它们分别由CS,DS,ES和SS指定因为我们只有四个段寄存器呀ヾ(๑╹◡╹)ノ"

IP(指令指针)的内容不能直接被访问,不能直接用指令去读IP的值,也不能用指令为其赋值。但可通过某些指令的执行去修改IP的内容

在这里插入图片描述

2.存储器

存储器由若干个存储单元构成

存储单元的多少就表示存储器的容量大小

每个存储单元存放相同长度的二进制数

一个存储单元的长度一般为八位二进制数,即一个字节

每个存储单元有一个唯一的编号——地址

8086有二十根地址线,即它的存储器寻址能力为2^20,即一兆字节空间

任何两个相邻字节单元就构成一个字单元٩(๑❛ᴗ❛๑)

两者遵循低对低,高对高

寻址方式

一条指令由操作码和操作数构成

  • 操作码:该指令应完成的具体操作。在汇编语言中使用特定的符号来表示,称为助记符。eg:MOV,PUSH,ADD等
  • 操作数:该指令的操作对象。eg:加法操作里的加数

寻址方式:寻找指令中所需操作数的各种方法,即提供指令中操作数的存放信息的方式在这里插入图片描述

指令系统:计算机所能执行的各种类型的指令集合

在这里插入图片描述

notes:目的数只能做源操作数,不能传送给段寄存器

无操作数指令

  • 指令不需要操作数,eg:暂停指令HLT
  • 在指令格式中,没有显示地指明操作数,但是隐含了操作数的存放地方,eg:指令PUSHF

notes:段寄存器CS只能做源操作数,不能做目的操作数

eg:MOV AX,CS ✔
MOV CS,AX ✘
CS中存储的可是指令啊,所以不能轻易被改变~
在这里插入图片描述

notes :寄存器与存储单元的区分: [ ] 包括的为存储单元

notes:存储单元之间不能直接传送数据

notes:MOV指令不影响标志位

在这里插入图片描述

指令编码

在这里插入图片描述

  • 一个存储单元逻辑地址表示方式 段基址:偏移量
    • 段基址由某个段寄存器提供
    • 偏移量表示该存储单元与段起始地址之间的距离,!也就是我们所说的有效地址EA
      • 有效地址EA是位移量,基址,变值三个地址分量的组合结果,有CPU的执行单元EU计算出来
        • 位移量:指令中直接给出的一个8位或16位数。一般源程序中以操作数名字(变量名或标号)的形式出现
        • 基址:由基址寄存器BX或基址指针BP提供的内容
        • 变址:由源变址寄存器SI或目的变址寄存器DI提供的内容
posted @ 2019-04-01 20:04  Moliay  阅读(65)  评论(0编辑  收藏  举报