汇编——指令系统和寻址方式

用编码表示CPU的一个基本操作,称为一条指令。全部指令集称为指令系统。

助记符:传送指令:MOV  加法指令:ADD等

用助记符表示的指令称为汇编格式指令。

机器码:A0 00 20   MOV    AL , var1

操作码:指明CPU要执行什么样的操作。是一条指令必不可少的部分,用助记符表示。

按功能分为六类:数据传送 算术运算 逻辑运算 串操作 控制转移 处理机控制

-》操作数来源:

1.立即操作数:MOV AL,9

2.寄存器操作数:MOV AL,9

3.存储器操作数/内存操作数,指令中给出该内存单元的地址:

MOV AL,[2000H]

-》操作数个数:

1.无操作数(不需要操作数的指令,或操作数隐含在指令中。),eg:HLT,NOP,ALL

2.单操作数:指令中给出一个操作数。

1)有些操作只需要一个操作数:INC AL;  (AL)<-(AL)+1

2) 有些操作将另一个操作数隐含在指令中:MUL BL;(AX)<-(AL)*(BL)

3.双操作数:指令中给出两个操作数。 ADD AL BL;(AL)<-(AL)+(BL)

一个是目的操作数,一个是操作数。操作结果通常放在目的操作数中。

4.三操作数:指令 目的操作数 源操作数 立即数。操作后结果通常放在目的操作数中。(操作源操作数和立即数)

指令格式 操作码+寻址方式 操作数

》》寻址方式

1.立即数寻址(操作数在指令中给出)

*只能用于源操作数。  *源操作数和目的操作数字长一致。

MOV AL,5  适用于给寄存器赋初值。

2.寄存器寻址(操作数在指定的寄存器中)

MOV AL,BH(源和目的的字长一致,CS不能用MOV指令改变)。运算速度快

´MOV  CS, AX(错误!!!

3.存储器寻志

EA(有效地址)=基址+(变址*比例因子)+位移量

位移量:存放在指令中的一个8位、16位or32位的数,为地址。

基址:基础寄存器(数组or字符串首地址)。

变址:变址寄存器(指向数组中某个元素或字符串中某个字符)。

比例因子:386+,值可为1,2,4,8,与变址相乘用于访问元素长度为2、4、8字节的数组


寻址


段选择


存储器寻址中,储存单元的 逻辑地址段地址 与 段内偏移地址 共同组成,

当操作数的地址不在当前默认段,须加上段跨越前缀。

比如:mov ax,[0000]      程序默认使用的是ds:0000

使用了跨越段前缀就使用你指定的段寄存器

如:mov  ax,es:[0000]     程序就会使用es:0000


有三种情况不允许使用段跨越前缀:

1、串处理指令的目的串必须用ES

2、PUSH指令的目的和POP指令的源必须用SS段

3、指令必须存放在CS段中

段寄存器


3.直接寻址方式

注意给出的地址需要加上段地址。同时注意给出地址的方式有多种,比如下图中的value。


直接寻址

隐含的段为数据段 DS 除非用段跨越前缀改变:   MOV  AX, ES :[2000H]

*  使用变量时,要注意变量的属性

VALUE  DB  10 (下面要将字节变量转化为字变量)

MOV  AX,  WORD PTR  VALUE

*  适于处理单个变量


-》4.寄存器间接寻址方式:

1)EA在基址寄存器(BX/BP)或变址寄存器(SI/DI)中。

MOV  AX, [BX]                PA = 16d * (DS) + (BX)

MOV  AX, ES:[BX]          PA = 16d * (ES) + (BX)

MOV  AX, [BP]                PA = 16d * (SS) + (BP)

2) 不允许使用AX,CX,DX存放EA.

*  SRC 和 DST的字长一致 (即指示什么可以视前面而定)

MOV  DL, [BX]      ; [BX]指示一个字节单元

MOV  DX, [BX]      ; [BX]指示一个字单元

*  适于数组、字符串、表格的处理


寄存器相对寻址


以下几种方式感觉均为简单相加:


基址变址寻址方式


相对基址变址寻址方式


基址变址寻址


相对基址变址寻址
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 8086汇编 本笔记是笔者观看小甲鱼老师(鱼C论坛)《零基础入门学习汇编语言》系列视频的笔记,在此感谢他和像他一样...
    Gibbs基阅读 37,726评论 8 114
  • 计算机通过执行指令序列来使机器得以工作,所以对于每一系列的计算机都有指定的一组指令集供计算机使用,这组指令...
    未来科技工作室阅读 12,531评论 1 10
  • 指令是使计算机执行某种特定操作的二进制编码。8086 CPU指令系统有133条指令,通常分为数据寻址方式和程序寻址...
    刀月水阅读 5,727评论 0 1
  • 王爽汇编全书知识点大纲 第一章 基础知识 机器语言 汇编语言的产生 汇编语言的组成 存储器 cpu对存储器的读写 ...
    2c3ba901516f阅读 7,290评论 0 1
  • 曲/周杰伦 离迁移还有一会 我对着天空鸣声 行李都收好没有 我去叫搬家老九 茜草花摘下一片 也能拿来当以前的留念...
    yy木瓜汁阅读 1,351评论 0 0

友情链接更多精彩内容