微机原理(第三版)第3章汇编语言基础

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

低8位
高8位
代 码 段
2、直接寻址(Direct Addressing)
• 在指令的操作码后面直接给出操作数的16位偏 移地址,与操作码一起存放在内存的代码段;
低8位在前,高8位在后;默认段为DS数据段,允许段 超越。
• 16位偏移地址必须用[ ]括起来。
• MOV AL, [4000H]

;将DS:4000H之内容送入AL(
AH、AL、BH、BL、CH、 CL、DH、DL存放字节操作 9 数;
3、存储器操作数
• 存储器操作数可以是字节、字、双字,分 别存在1个、2个、4个存储单元中;它既可 以用作源操作数也可以用作目的操作数; • 注意:对大多数指令,不允许源操作数和 目的操作数同时为存储器操作数,即不允 许存储器到存储器的操作。 • 存储器单元的地址由两部分组成:段基址 和偏移地址(也叫有效地址),所以各种 存储器操作,都涉及到段寄存器;
AH AL 02H …
码 段
83200H

数 据 段
26
允许段超越;
• 基址--变址—相对寻址指令的书写格式允许有以下
• • • • • • • •
几种: MOV AX, DATA[SI][BX] MOV AX, [BX+DATA][SI] MOV AX, [BX+DATA +SI] MOV AX, [BX]DATA[SI] MOV AX, [BX+SI]DATA 下列指令是非法的: MOV AX, [DI+SI+DATA] MOV AX, [BX+BP+DATA]
10
8088对寄存器使用的约定
内存访问类型 堆栈操作 默认段 寄存器 SS 可指定段 寄存器 无 段内偏移地址来源 SP
BP用作基址寻 SS 址 一般数据存取
源串 目的串
CS.ES.DS 按寻址方式计算得到的有 效地址 CS.ES.SS 按寻址方式计算得到的有 效地址
DS
DS ES
CS..ES.SS SI 无 DI
13
3.2 CPU的寻址方式
• 获得操作数所在地址的方法,叫寻址方 式,共有8种寻址方式;一般是针对源操 作数而言; • 寻址方式分为两大类: 寻找操作数的地址 寻找要执行的下一条指令的地址 主要在程序转移(JMP)或过程调用 (CALL)时用来寻找目的地址或程序入口 地址
14
3.2.1 立即寻址

(AX)=3344H
AX
61200H
44H 数 段 33H 据
21
5、寄存器相对寻址(Index Addressing)
• 操作数存在存储单元中,把指令指定的间址寄存 器的内容上指令中给出的一个8位或16位地址 偏移量,才可得到操作数的有效偏移地址。 • 如:MOV AX,DATA[BX] • SUB DX,TOTAL[BX] • DEC ARRAY[DI] • CMP POINTER[SI],BX • CMP CX,COUNT[BP]
码 段
(AX)=5566H
61008H
66 55 …
23
数 据 段
• 例:某数据表的首地址(偏移地址)为 TABLE,要取出该表中第10个字节,并存放 到AL中,可用如下指令段实现: • MOV SI, 9 • MOV AL, [TABLE+SI] • 相对寻址指令的书写格式允许有以下几种: • MOV AL, TABLE[SI] • MOV AL, [SI]DATA • MOV AL, DATA+[SI] • MOV AL, [SI]+DATA • MOV AL, [DATA+SI] 24 • MOV AL, [SI+DATA]
微机原理与接口技术微机原理与接口技术308086指令系统oprd各种类型的操作数mem存储器操作数acc累加器操作数dest目的操作数src源操作数disp8位或16位的位移量可用符号地址表示data8位或16位的立即数port输入输出端口地址表示地址313380868088cpu指令系统1数据传送datatransfer4串操作stringmanipulation5控制传送controltransfer6处理器控制processorcontrol32331一般数据传送movpushpopxchgxlatcbwcwd输入输出指令out标志传送指令lahfsahfpushfpopf地址传送指令lealdsles33movmovdestsrcmovbxsimovdsaxmovaxcsmovalclmovdlchmovbxax
20
MOV CX,[DI] -------EA=(DI) MOV DX,[BP] -------EA=(BP) MOV BX,[BP] -------EA=(BP)
注意:MOV AX,SI 和
DS:DI SS:BP SS:BP
MOV AX,[SI]的区别!
已知:(DS)=6000H,(SI)=1200H MOV AX,[SI]
11
3.1.2 指令的执行时间
• 一条指令的执行时间应包括取指令、取 操作数、执行指令及传送结果4部分时间, 通常用时钟周期数来表示; • 不同的指令在执行时间上有很大差别;
指令 MOV MOV ADD 寄存器到寄存器 立即数到内存 寄存器到内存 所需时钟周期数 2 10(14)+EA 16(24)+EA 访问内存次数 0 1 2
AH AL
… MOV操作码 02H 31H 代 码 段
功能: 将DS:3102H之内容送入AL 将DS:3103H之内容送入AH
… 01110101 10011011 …
17
23102H 23103H
数 据 段
段超越
• 如果操作数不是存放在数据段DS中,则在 指令中要用段超越符号加以说明; • 如下例:MOV BX, ES:[1200H] • 将ES段中偏移地址为1200H和1201H两单元 的内容送到BX寄存器中; • 有时也用一个符号来代替数值以表示操作 数的偏移地址,通常把这个符号称为符号 地址; • 如: MOV BX, ES:[BUFFER] • BUFFER必须在程序开始时予以定义。
MOV AX, [BP][SI] MOV AX, [BP][DI]
AH AL 83000H
… 87 55 …
25
数 据 段
7、基址--变址寻址—相对寻址 • 例:MOV AX, DATA[DI][BX]
• 假设:(DS)=8000H, (BX)=2000H, (DI)=1000H, DATA=0200H • 则物理地址为: … • 80000H+2000H+1000H+0200H=83200H 操作码 • 指令的执行情况如下: 00H
1
指令与指令系统
指令: 控制计算机完成某种操作的命令
指令系统: 处理器所能识别的所有指令的集合 指令的兼容性: 同一系列机的指令都是兼容的
2
3.1 概述
• 8088和8086的指令系统是完全相同的; • 8086的指令系统共包含92种基本指令,按照功 能分为 6大类: • 1、数据传送Data Transfer • 2、算术运算Arithmetic • 3、逻辑运算和移位logic • 4、串操作string manipulation • 5、控制转移类control transfer • 6、处理器控制processor control
• 寄存器相对寻址常用于存取表格或一维数组中的元素;

22
• 例:MOV AX,DATA[BX] • 假设:(DS)=6000H, (BX)=1000H, DATA=08H • 则内存单元的物理地址为: 60000H+1000H+08H=61008H • 指令的执行情况如下: …
操作码 08H AH AL 00H …
18
3、寄存器寻址(Register Addressing) • 操作数存放在CPU的寄存器中。 • 寄存器可以是AX、BX、CX、DX、SI、DI、 BP;也可以是AL、AH、BL、BH、CL、CH、 DL、DH;也可以是段寄存器; • 如: MOV AL,BL MOV AX,DX • MOV DS,AX MOV SI,BP
十进制调整指令
DAA, AAA, DAS, AAS, AAM, AAD
4
逻辑运算和移位指令
AND, OR, NOT, XOR, TEST, SHL, SAL, SHR, SAR, ROL, ROR, RCL, RCR MOVS, CMPS, SCAS, LODS, STOS JMP, CALL, RET, LOOPE, INT, INTO, IRET 各类条件转移指令 见表 3-8
串操作
控制转移指令
处理器控制指令
5
3.1.1 指令的基本构成
指令中应包含的信息:
运算数据的来源
运算结果的去向
执行的操作
6
• 一条8088指令包含有操作码和操作数两部分, 指令的长度在1~7个字节之间。
操作码
1~2字节
操作数
操作数
立即操作数、 寄存器操作数、 存储器操作数
1~7字节
7
立即操作数、寄存器操作数、存储器操作数
• 1、立即寻址(Immediate Addressing) • 源操作数是一个立即数,8位或16位的整 数; • 操作数直接放在操作码的后面;若为16 位则低8位在低地址单元,高8位在高地 址单元存放。指令在内存中的存放形式:
例如:MOV AX, 3102H
AH
操作码
AL
MOV 02H 31H
15
第三章、8086/8088指令系统
• 机器语言,即计算机指令系统,它是用二进制 代码表示的。 • 汇编语言,它是符号化的机器语言。 • 优点:相对于机器语言比较容易学习、记忆 和书写。它经过源程序编辑、汇编、连接和 调试,形成可执行文件。可执行文件实时、 精确、快捷,高效; • 缺点:不同的CPU,不同的汇编语言。
3
指令类型 一般数据传送
助记符 MOV, PUSH, XCHG, XLAT, CBW, CWD IN, OUT LEA, LDS, LES
数 据 传 送
输入输出指令 地址传送指令
标志传送指令
加法指令 算 术 运 算 减法指令 乘法指令 除法指令
LAHF, SAHF, PUSHF, POPF
ADD, ADC, INC SUB, SBB, DEC, NEG, CMP MUL, IMUL DIV, IDIV
6、基址--变址寻址
• 由一个基址寄存器(BX或BP)的内容,加上一个变址 寄存器(SI或DI)的内容,作为操作数的偏移地址,称 为基址—变址寻址;允许段超越; • 例如:MOV AX, [BX][SI] MOV AX, [BX][BP] • 假设:(DS)=8000H, (BX)=2000H, (SI)=1000H MOV AX, [SI][DI] • 则物理地址为: … • 80000H+2000H+1000H=83000H 操作码 码 段 • 指令的执行情况如下:
节操作)
• MOV [2000H], BX ;将BL之内容送入DS:2000H 将BH之内容送入DS:2001H • 注意:MOV AX, 2510H与 别! MOV AX, [2510H]的区
16
例如: MOV AX, [3102H] (字操作) 设DS=2000H,则物理地址为:
2000H*10H+3102H=23102H
• 立即操作数即常数;可以是字节(8位)、字(16位); 8位数 16位数
无符号数
带符号数
00H~0FFH(0~255)
80H~7FH(-128~+127)
0000H~0FFFFH (0~65535)
8000H~7FFFH (-32768~+32767)
• 立即操作数只能用作源操作数,不能用作目的操作数;
19


• • • • •
4、寄存器间接寻址(Register Indirect Addressing) 与寄存器的寻址方式不同,指令中指定的寄存器的 内容不是操作数而是操作数的偏移地址;能做这种 用途的寄存器叫做地址指针寄存器。它们是SI、DI 、 BX、BP,也简称为间址寄存器; 选择SI、DI 、BX作间址寄存器时,操作数在数据段, 段基址由DS决定; 如果用BP,则操作数在堆栈段,段基址由SS决定; 但是,无论选择哪一个间址寄存器,都允许段超越; SI、DI 、BX、BP在作为间址寄存器使用时表示为[ ]; 如: MOV AX,[SI] MOV AX,ES:[SI]
8
2、寄存器操作数
AH AL AX BH BL BX • 寄存器操作数存放在CPU的8个通用寄存器或4 CX CH CL 个段寄存器中,既可以用作源操作数也可以用 通 作目的操作数;但CS一般不作为目的操作数; DH DL DX 用 寄 • 个别指令将FLAGS作为操作数; 通用寄存器中AX、BX、CX、 SP 堆栈指针寄存器 存 器 DX、SI、DI、BP、SP存放 BP 基址指针寄存器 字操作数; 源变址寄存器 DI SI 目的变址寄存器
12 计算偏移地址所需要的时间
• 寄存器操作数的指令执行速度最快; • 立即操作数作为指令的一部分存放在指令队列 中,因此执行指令时不需要访问内存; • 存储器操作数放在内存单元中,首先由BIU计 算出20位物理地址,然后再执行存储器的读写 操作,指令的执行速度最慢。
• 例如:CPU的时钟频率为5MHz,即一个时钟周期为 0.2微秒,则寄存器到寄存器之间的传送指令的执行 时间为: • t=2X0.2=0.4微秒 • 再如:立即操作数传送到寄存器的指令执行时间为: • t=4X0.2=0.8微秒
相关文档
最新文档