- 7
- 0
- 约6.13千字
- 约 22页
- 2018-06-27 发布于湖北
- 举报
第3章指令格式及寻址方式(汇编语言)
第3章 指令格式与寻址方式 3.1 指令格式 机器指令格式: 汇编指令格式: 指令助记符表示指令的名称,它是指令功能的英文缩写,对应的是机器指令中的操作码部分; 操作数即被处理的对象,若指令中包含多个操作数,则操作数之间以逗号分隔; 注释以分号开始,用来说明程序功能,不影响指令的执行。 最常用的数据传送指令MOV的格式为: MOV DEST,SRC ;将源操作数SRC的值传送至目的操作数 【例】 MOV EAX,EBX ;将EBX的值送给EAX 指令的3种操作数 (1)立即数 操作数以常量的形式出现在指令中,称为立即数。 如:20、3AH、1234Q、1011B 立即数只能作为指令的源操作数。 (2)寄存器操作数 指令要使用的数据存放在CPU内部寄存器中,在指令中给出寄存器名。如:AL、BX、ECX (3)内存操作数 指令要用的数据存放在内存单元中,在指令中给出内存地址或访问存储器的方法。如:[2000]、[BX] 注意:指令中的某个操作数可能是上述3种中的任意一种形式,为了 明确具体操作数的存在位置,必须首先要明确操作数的寻址方式。 立即数(常数) 立即数只能作为源操作数,如 MOV AX,0FA00H;正确 不能作为目的操作数,如 MOV 8000H,AX ;错误 3.2.2 有效地址的概念 在80X86系列CPU中,内存单元的地址由两部分组成: 段基地址和段内偏移地址(也称段内偏移量) 1)段基地址一般可由段寄存器直接给出,如CS、DS、SS、 ES等,也可以通过段寄存器的内容进行计算得出。 2)段内偏移量最多可以由四个基本部分,按照一定的规则计 算组合而成,所以也称为有效地址EA。 有效地址四个分量包括: ①基址寄存器内容: ②变址寄存器内容: ③比例因子: ——在32/64位寻址方式中使用 ④位移量: ——一般是一个具体数值 有效地址EA计算方法: EA=[基址寄存器]+([变址寄存器]×比例因子)+位移量 有效地址四分量的使用规则: 不同方式下的寻址空间 16位寻址方式主要是针对于实地址存储模式的应用,兼容了Intel 8086的工作模式。存储器的最大分段不超过64KB,最大线性地址空间是1MB。 32位寻址方式主要是用于保护模式下,程序只能存取最低4GB地址空间,使用16位或32位地址。使用16位的分段选择子以及32位的段内偏移地址,每个段最大可达4GB。 64位寻址方式采用64位线性地址空间,支持40位物理地址空间。通常不采用分段方式,而是将CS,DS,ES和SS的段基址看成0,这样线性地址等于有效地址,是一种平展存储管理模式。 3.3 各种寻址方式 一、立即寻址 操作数作为立即数直接包含在指令中,在指令执行时不需再访问存储器。立即数可以是8、16 、32 、64位。 MOV BL,12H ;字节传送 MOV AX,1020H ;字传送 MOV EDX ;32位传送 MOV RAX,1122334455667788H ;64位传送(四字) 二、寄存器寻址方式 寄存器寻址方式下,被访问的操作数存放在指令规定的寄存器中。 INC CL ;8位寄存器加1 MOV DS,AX ;16位寄存器传送 MOV ECX,EAX ;32位寄存器传送 MOV RBX,RAX ;64位寄存器传送 CPU执行指令时,不需要使用访问总线,所以指令的执行速度快。 三.存储器寻址方式 含义:操作数在存储区中,指令的操作数部分指出此操作数的有效地址EA。根据EA的生成方式的不同,可分为以下几种寻址分式: (1)直接寻址:是存储器直接寻址的简称,指令中的操作数部分直接给出操作数的有效地址EA,是16位或32位的位移量数据,它放在代码段中,操作数一般在数据段中,也可以进行段超越 。 MOV AX,[2000H] ;将DS段中2000H和2001H单元内容 ; 分别送AL和AH MOV AX,ES:[2000H] ;将ES段中2000H和2001H单 ;元内容分别送AL和AH (2)寄存器间接寻址
原创力文档

文档评论(0)