新编第6章8086指令系统与汇编基础精选文档PPT课件
合集下载
第6章 8086指令系统与汇编基础
第13页
2013年8月1日星期四
第6章
8086指令系统与汇编基础 3.段地址寄存器
有 CS、DS、ES、SS 四 个 , 分 别 表 示 程 序 码 ( code segment register)、 数 据 ( data segment register)、附加(extra segment register)、堆栈 (stack segment register)段地址用。在 DOS 系统 中,每一个段地址容量只有 64KBytes。 当数据段地址不够用时,就可以用附加数据段地址 来补足,例如想要将一个段地址的某些内容复制到 另一段地址中,就可以同时指定 DS、ES 分别表示 这两个段地址。
第17页 2013年8月1日星期四
第6章
6.2.4
8086指令系统与汇编基础
寄存器间接寻址(Register Indirect Addressing) 寄存器间接寻址方式中,操作数存放在存储器 中,但操作数的有效地址EA在基址寄存器BX、BP或 变址寄存器SI、DI中。操作数的物理地址为: 物理地址=16(段寄存器)+(寄存器)
执行结果为:(AX)=8060H 指令中也可指定段跨越前缀以取得其它段中的 数据。如:MOV AX,ES:[BX]指令,则从附加段中 取得数据。
操作码
DS 3000 0 BX + 200 0
代 码
段
30000 32000 AH AL
60 80
3200 0
数 据
段
图 6- 2- 2
例 6 - 5 的执行过程
第3页 2013年8月1日星期四
第6章
8086指令系统与汇编基础
计算机只能识别二进制代码,因此计算机能执行 的指令必须以二进制代码的形式表示,这种以二进制 代码形式表示的指令称为指令的机器码(Machine Code)。 2.汇编指令格式 一条指令一般包含操作码和操作数两部分。
第三章 8086的指令系统()PPT课件
7、串寻址(String addressing)
串寻址方式仅在8086的串指令中 使用。规定源操作数的逻辑地址为 DS:SI;目的操作数的逻辑地址为 ES:DI。当执行串指令的重复操作时, 根据设定的方向标志(DF),SI和 DI会自动调整。
8、I/O(输入/输出)端口寻址 (I/O port addressing)
2、MOV数据传送指令
其格式为:
MOV 目的操作数,源操作数
目的操作数和源操作数均可采用不 同的寻址方式,但两个操作数的类 型必需一致。
二、寻址方式介绍
1.立即寻址(Immediate addressing) 操作数就在指令中,紧跟在操作码后
面,作为指令一部分存放在内存的代 码段中,这种操作数称为立即数。
1、通用数据传送指令
1)、MOV 传送指令 指令格式为: MOV 目的 ,源
2)PUSH 进栈指令
指令格式为:PUSH 源操作数 其操作过程是: a、SP-1,
指示堆栈中可以存放数据的位置,存源 操作数的高8位; 。
3)POP 出栈指令
指令格式为:POP 目的操作数
一、8086的操作码
指令由操作码和操作数(地址码) 组成。8086的指令长度是可变的,一 条指令一般由1-6个字节组成(加上 前缀字节,最长可为7字节)。
二、8086指令中寄存器的编码
8086指令中通常使用一个或两个 操作数,在少数指令中有隐含的第三 个操作数。
三、指令中的操作数
1、单指令操作数
当操作数在外部设备时,使用I/O指令。 此时有两种不同的寻址方式访问I/O端口。 (1) 直接端口寻址方式。 (2) 采用寄存器间接寻址方式 (3) 输入指令中目的操作数可为AL或
AX;输出指令中源操作数可为AL或AX。 例:
《指令系统》幻灯片PPT
通常指令中不出现DS段存放器名称,这种情况叫做默认段存放器〔或叫缺省 段存放器〕。但是也允许段超越,即允许操作数在代码段或堆栈段或附加段中, 只是必须在指令中指明。
【例】MOV AX, SS:[2500H]
指令的执行:AX<--〔SS:2500H〕
该指令将SS指明的堆栈段中偏移量为2500H的字单元的内容送到AX中。
【例】MOV CH,BL
指令的执行:CH<---BL
如果指令执行前,CH=64H,BL=58H,那么指令执行后 CH=58H,BL保持不 变。
立即寻址和存放器寻址指令,执行速度最快,后面要讲到的存储器寻址指令 执行速度较慢。
3、直接寻址方式
直接寻址方式中,操作数一般在内存数据段中,而操作数的有效 地址直接包含在指令中。 操作数的物理地址是由数据段存放器DS 的值乘以16再加上这16位的有效地址得到。
假设初始条件为DS=2000H,SI=1000H,那么该指令源操作数的物理地址为: 2000H×10H+1000H=21000H
指令中也可以不使用缺省的段存放器,而另指定其它的段存放 器,这就是段超越。指令指令中写眀段超越前缀从而指定其它的段 存放器。如指令:
MOV AX, ES:[BX] 原来BX默认的是DS段存放器,现在用段超越前缀指定ES段存放
寻址方式可分为数据的寻址方式和转移地址的寻址方式两种。
3.1.1 数据的寻址方式
1、立即寻址方式 立即寻址方式即操作数直接存放在指令中,紧跟在操作码以后,作为指令的
一局部存放在代码段区域中。这种操作数称为立即数。它只能用于源操作数字段, 不能用于目的操作数字段. 【例】MOV AL,42H
指令的执行:AL<--42H 42H为8位立即数,它是指令的一个组成局部。 指令执行后,AL=42H。 【例】MOV DX,2345H ; 指令的执行:DX<--2345H 2345H为16位立即数,它是指令的一个组成局部。 指令执行后,DX=2345H。
8086指令系统
偏移地址
IP SP SI DI 有效地址EA 有效地址EA
2021/1/23
黄玉清制作
3.3 8086的操作数的寻址方式
任何内存实际地址(PA)都由两部分组成: PA=段基址+段内偏移地址(此单元与段基址的距离) 段内的偏移地址又称为有效地址(EA).
2021/1/23
黄玉清制作
3.3 8086的操作数的寻址方式
黄玉清制作
3.1概述
3.1 概述
80x86结构的基本数据类型
字节:8位 字:16位,2个字节 双字:32位,4个字节 四字:64位,8个字节(80486CPU引入) 双四字:128位,16个字节(Pentium III)
数据在内存中的字节顺序
80X86多字节数据的存放原则是低位字节在低端地址, 高位字节在高端地址。 而最低地址就是操作数的地址。
数据段
黄玉清制作
8086执行某种操作时,预先规定了采用的段和段寄 存器,即有基本的段约定,如果要改变默认的段 约定(即段超越)ห้องสมุดไป่ตู้则需要在指令中明确指出来.
例如:
MOV BX,ES:[3400H];
将附加段ES段中偏移地址为3400H和3401H两单元 的内容送BX中。
若用DATA代替偏移地址3400H :
操作数物理地址PA:
....
8BH
PA=2000H*16+1000H=21000H
07H
将 21000 H、21001 H 单元的内容送 AX。
....
代码段
执行结果: (AX) = 5B40 H 2000:1000 H 40
数据段
2000:1001 H 5B
AH AL
5B 40
汇编完整 第6章ppt课件
4、正确使用堆栈
由于堆栈中保存着主程序调用子程序时的断点地址。
若在子程序中也使用了堆栈,注意各个数据压栈和出栈
的顺序不能错,否则将导致数据错误和子程序返回地址
错误。
精选PPT课件
13
5、编制子程序文件
子程序文件应包括文字说明与子程序本身两个部 分。而文字说明一般包括:
•子程序名
•子程序功能描述
•子程序的入口参数与出口参数
就是段内调用。
...
PROCA PROC
...
RET
...
PROCA ENDP
...
精选CPPOT课D件EA ENDS
3
➢段间调用与返回
调用指令与子程序分别在不同的段,这时,需要同时 修改CS和IP。
下面CODEB段中的CALL FAR PTR PROCB就是段 间调用。
CODEA SEGMENT ...
(1)段内返回——指令编码为 C3H 执行该指令,将从堆栈顶部弹出一个字送入IP。
(2)段间返回——指令编码为 CBH
执行该指令,将从堆栈顶部弹出两个字分别送IP和CS中。
精选PPT课件
9
(3)带弹出值的返回指令
汇编指令格式为:RET n 其中n为一个立即数,长度为2字节。并且是一个偶数。
这条指令既可用于段内返回也可以用于段间返回,但它 们的指令编码不同,分别为C2 n和CA n。
在主程序与子程序之间传递参数,可以选择的方法有: A、使用通用寄存器 B、使用指定的存储单元 C、使用堆栈
精选PPT程序中需要使用某些寄存器或存储单元,为了不 破坏它们原来在主程序中的值,为此需要进行信息保护。
信息的保护可以有两种方法:
A、在主程序中保存子程序中将要使用的一些寄存器的 内容
8086指令系统-1PPT课件
示例
段寄存器属专用寄存器,对他们的操作能力有 限
2021/6/7
20
(2) 交换指令XCHG(exchange)
XCHG
把两个地方的数据进行互换
XCHG reg,reg/mem ;reg reg/mem
➢ 寄存器与寄存器之间对换数据 例题5 ➢ 寄存器与存储器之间对换数据 例题6 ➢ 不能在存储器与存储器之间对换数据
xchg al,[2000h]
;字节交换
;等同于 xchg [2000h],al
2021/6/7
26
(3) 换码指令XLAT(translate) XLAT
将BX指定的缓冲区中、AL指定的位移 处的一个字节数据取出赋给AL
XLAT
;al←ds:[bx+al] 例题7
➢ 换码指令执行前:
在主存建立一个字节量表格,内含要转换成的目的代码 表格首地址存放于BX,AL存放相对表格首地址的位移量
指令对标志的影响——该指令执行后是否对各个 标志位有影响,以及如何影响
其他方面——该指令其他需要特别注意的地方, 如指令执行时的约定设置、必须预置的参数、隐 含使用的寄存器等
2021/6/7
6
汇编语言指令格式
由4部分组成:
标号:指令助记符 目的操作数,源操作数 ;注释
标号表示该指令在主存中的逻辑地址 每个指令助记符就代表一种指令 目的和源操作数表示参与操作的对象 注释是对该指令或程序段功能的说明
2021/6/7
一定要熟悉噢!
10
教学提示
全面而准确地理解每条指 令的功能和应用,是编写 汇编语言程序的关键
逐个展开指令
2021/6/7
11
1 数据传送类指令
第6章8086指令系统与汇编基础-202页PPT资料
9
2020/3/26
第6章 8086指令系统与汇编基础 1.通用寄存器
共有四个,其名称分别是 AX、BX、CX、DX,在汇编 语言程序中大致没有太大的差别,但是其中只有 AX(accumulator,也称为累加器) 可作为除法或乘 法中的被除数与被乘数,当 16 位不够大时,常常 用 DX:AX 来表示 32 位。此外这四个寄存器,只有 BX(base register,也称为基底寄存器) 可以被作 为 地 址 存 取 之 用 。 CX 也 称 为 计 数 寄 存 器 ( count register),用于计算循环之次数或字串处理之计数。 DX也称为数据寄存器(data register),可用来存取 数据。
【例6.2】 MOV DS,3456H
则指令执行后,DS)=3456H
8
2020/3/26
第6章 8086指令系统与汇编基础
回顾8086的寄存器
寄存器是在 CPU 中一个暂时储存数据的地方。 它有点儿像存储器(DRAM),但是不像存储器这 么大,寄存器只有一个、两个或四个字节的大小 而已。 CPU 可以对寄存器作加、减、乘、除、 且、或等等运算。8086/8088 共有 14 个 16 位的 寄存器,其名称都以两个英文字表示,大致可分 为以下四类。
8086的寻址方式有:与数据有关的寻址和与程序 转移有关的寻址。
与数据有关的寻址:立即寻址、寄存器寻址、直 接寻址、寄存器间接寻址、寄存器相对寻址、基址 变址寻址、相对基址变址寻址
与程序转移有关的寻址:段内直接寻址、段内间 接寻址、段间接寻址及段间间接寻址
7
2020/3/26
第6章 8086指令系统与汇编基础
第6章 8086指令系统与汇编基础
6.1 概述
第6章 8086指令系统与汇编基础
【例6.6】 MOV AX,COUNT[SI] 或写为
MOV AX,[COUNT+SI]若 (DS)=3000H, (SI)=2000H,COUNT=3000H
则:物理地址 =30000H+2000H+3000H=35000H
20页
2019/8/7
第6章 8086指令系统与汇编基础
6.2.6 基址变址寻址(Based Indexed Addressing)
一是指令中不需要任何操作数,如空操作指令、 停机指令等;
二是指令的操作数是默认,如加法的ASCII码 调整、十进制调整指令等。 (2)一操作数指令
格式: 操作码 A
5页
2019/8/7
第6章 8086指令系统与汇编基础
其中A为存储器地址或寄存器名
指令中只给出一个地址,该地址既是操作数的地址, 又是操作结果的存储地址。如增量、减量指令等。
21页
2019/8/7
第6章 8086指令系统与汇编基础
有 CS、DS、ES、SS 四 个 , 分 别 表 示 程 序 码 ( code segment register)、 数 据 ( data segment register)、附加(extra segment register)、堆栈 (stack segment register)段地址用。在 DOS 系统 中,每一个段地址容量只有 64KBytes。
这四个寄存器也可以分成两个 8 位的寄存器来使用, 例如 AX 可被分成较低的 8 位称为 AL,以及较高的 8 位 AH 来使用。其余 BX、CX、DX 也都类似。
11页
2019/8/7
第6章 8086指令系统与汇编基础 2.指针与索引寄存器
有五个,其名称分别是 SP、BP、IP、SI、DI。前面 两个 SP (stack pointer,称为堆栈指针)与(base pointer,也称为基底指针)是与堆栈(stack)有关的寄 存器。堆栈是一块区域,用来暂时存放数据用,在 8086中,堆栈是由最高地址中开始存放,每次都必 须存入一个字节的长度,并用一组指针,来表示堆 栈已经使用到那儿了,这组指针就是 SS:SP。也就 是说,当要将数据存入堆栈时,该数据应该存放在 SS:SP 所指的地址再低 2 个字节,然后 CPU 再使 SP 之内容减 2,使 SP 再指到下一个未使用的空间
MOV AX,[COUNT+SI]若 (DS)=3000H, (SI)=2000H,COUNT=3000H
则:物理地址 =30000H+2000H+3000H=35000H
20页
2019/8/7
第6章 8086指令系统与汇编基础
6.2.6 基址变址寻址(Based Indexed Addressing)
一是指令中不需要任何操作数,如空操作指令、 停机指令等;
二是指令的操作数是默认,如加法的ASCII码 调整、十进制调整指令等。 (2)一操作数指令
格式: 操作码 A
5页
2019/8/7
第6章 8086指令系统与汇编基础
其中A为存储器地址或寄存器名
指令中只给出一个地址,该地址既是操作数的地址, 又是操作结果的存储地址。如增量、减量指令等。
21页
2019/8/7
第6章 8086指令系统与汇编基础
有 CS、DS、ES、SS 四 个 , 分 别 表 示 程 序 码 ( code segment register)、 数 据 ( data segment register)、附加(extra segment register)、堆栈 (stack segment register)段地址用。在 DOS 系统 中,每一个段地址容量只有 64KBytes。
这四个寄存器也可以分成两个 8 位的寄存器来使用, 例如 AX 可被分成较低的 8 位称为 AL,以及较高的 8 位 AH 来使用。其余 BX、CX、DX 也都类似。
11页
2019/8/7
第6章 8086指令系统与汇编基础 2.指针与索引寄存器
有五个,其名称分别是 SP、BP、IP、SI、DI。前面 两个 SP (stack pointer,称为堆栈指针)与(base pointer,也称为基底指针)是与堆栈(stack)有关的寄 存器。堆栈是一块区域,用来暂时存放数据用,在 8086中,堆栈是由最高地址中开始存放,每次都必 须存入一个字节的长度,并用一组指针,来表示堆 栈已经使用到那儿了,这组指针就是 SS:SP。也就 是说,当要将数据存入堆栈时,该数据应该存放在 SS:SP 所指的地址再低 2 个字节,然后 CPU 再使 SP 之内容减 2,使 SP 再指到下一个未使用的空间
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
这四个寄存器也可以分成两个 8 位的寄存器来使用, 例如 AX 可被分成较低的 8 位称为 AL,以及较高的 8 位 AH 来使用。其余 BX、CX、DX 也都类似。
12
2020/7/31
第6章 8086指令系统与汇编基础 2.指针与索引寄存器
有五个,其名称分别是 SP、BP、IP、SI、DI。前面 两个 SP (stack pointer,称为堆栈指针)与(base pointer, 也称为基底指针)是与堆栈(stack)有关的寄存器。堆 栈是一块区域,用来暂时存放数据用,在 8086中, 堆栈是由最高地址中开始存放,每次都必须存入一 个字节的长度,并用一组指针,来表示堆栈已经使 用到那儿了,这组指针就是 SS:SP。也就是说,当 要将数据存入堆栈时,该数据应该存放在 SS:SP 所 指的地址再低 2 个字节,然后 CPU 再使 SP 之内 容减 2,使 SP 再指到下一个未使用的空间
一是指令中不需要任何操作数,如空操作指令、 停机指令等;
二是指令的操作数是默认,如加法的ASCII码 调整、十进制调整指令等。 (2)一操作数指令
格式: 操作码 A
6
2020/7/31
第6章 8086指令系统与汇编基础
其中A为存储器地址或寄存器名
指令中只给出一个地址,该地址既是操作数的地址, 又是操作结果的存储地址。如增量、减量指令等。
第6章 8086指令系统与汇编基础
6.1 概述 6.2 8086的寻址方式 6.3 8086的指令系统 6.4 汇编语言程序设计基础 6.5 汇编语言程序设计
1
2020/7/31
第6章 8086指令系统与汇编基础
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
8086的寻址方式有:与数据有关的寻址和与程序 转移有关的寻址。
与数据有关的寻址:立即寻址、寄存器寻址、直 接寻址、寄存器间接寻址、寄存器相对寻址、基址 变址寻址、相对基址变址寻址
与程序转移有关的寻址:段内直接寻址、段内间 接寻址、段间接寻址及段间间接寻址
9
2020/7/31
第6章 8086指令系统与汇编基础
【例6.2】 MOV DS,3456H
则指令执行后,DS)=3456H
Hale Waihona Puke 102020/7/31
第6章 8086指令系统与汇编基础
回顾8086的寄存器
寄存器是在 CPU 中一个暂时储存数据的地方。 它有点儿像存储器(DRAM),但是不像存储器这 么大,寄存器只有一个、两个或四个字节的大小 而已。 CPU 可以对寄存器作加、减、乘、除、 且、或等等运算。8086/8088 共有 14 个 16 位的 寄存器,其名称都以两个英文字表示,大致可分 为以下四类。
3
2020/7/31
第6章 8086指令系统与汇编基础
6.1.2 机器指令和汇编指令格式
1.机器指令
计算机编程语言有机器语言、汇编语言及高级语 言等。 机器语言与计算机的核心CPU相对应,不同类 型的计算机有其独特的机器语言指令系统; 汇编语言仅是机器语言的英文助记符表示形式,也 与相应的计算机系统相对应; 高级语言脱离了具体的计算机,具有通用性。
6.2.1 立即寻址(Immediate Addressing)
立即寻址方式所提供的操作数直接存在指令中, 紧跟在操作码之后,操作数作为指令的一部分存放 在代码段里,这种操作数称为立即数。
立即数可以是8位的或16位的,若是16位数,则 高位字节存放在高地址中,低位字节在低地址中。
【例6.1】 MOV AL,12H 则指令执行后,(AL)=12H
4
2020/7/31
第6章 8086指令系统与汇编基础
计算机只能识别二进制代码,因此计算机能执行的 指令必须以二进制代码的形式表示,这种以二进制代 码形式表示的指令称为指令的机器码(Machine Code)。
2.汇编指令格式
一条指令一般包含操作码和操作数两部分。
操作码用来表示该指令所要完成的操作,不同 的指 令用不同的操作码表示;
操作数用来描述指令的操作对象,操作数可以 是立即数、寄存器和存储器,不同的指令可以有一 个、 二个、三个或无操作数,根据操作数个数的 不同指令格式分为以下几种:
5
2020/7/31
第6章 8086指令系统与汇编基础
(1)零操作数指令 格式: 操作码
即指令中只有操作码,没有操作数,也称为无操 作数指令。有两种情况使用这种指令:
11
2020/7/31
第6章 8086指令系统与汇编基础
1.通用寄存器
共有四个,其名称分别是 AX、BX、CX、DX,在汇编 语言程序中大致没有太大的差别,但是其中只有 AX(accumulator,也称为累加器) 可作为除法或乘 法中的被除数与被乘数,当 16 位不够大时,常常 用 DX:AX 来表示 32 位。此外这四个寄存器,只有 BX(base register,也称为基底寄存器) 可以被作 为 地 址 存 取 之 用 。 CX 也 称 为 计 数 寄 存 器 ( count register),用于计算循环之次数或字串处理之计数。 DX也称为数据寄存器(data register),可用来存取 数据。
(5)多操作数指令
在某些性能较好的大、中型甚至高档微小型计算 机中,往往设置一些功能很强的、用于处理成批数据 的指令。为了描述一批数据,指令中需要多个操作 数来指出数据存放的首地址、长度和下标等信息。
8
2020/7/31
第6章 8086指令系统与汇编基础
6.2 8086的寻址方式
指令的寻址方式(Addressing mode):就是 指令中操作数的表示方式。
(3)二操作数指
令
操作码 A1 A2
格式:
这是最常见的指令格式。A1、A2指出两个源操
作数的地址,其中一个还指出存放结果的目的地址。
对两个操作数完成所规定的操作后,将结果存入目
的地址。
7
2020/7/31
第6章 8086指令系统与汇编基础
(4)三操作数指令 格式: 操作码 A A2 A3
1
A1、A2指出两个源操作数的地址,A3指出存放 结果的目的地址。
第6章 8086指令系统与汇编基础
6.1 概述
6.1.1 指令及指令系统概念
指令(Instruction):是要求计算机执行特定操 作的命令,通常一条指令对应一种特定操作。指 令的执行是在计算机的CPU中完成的。
指令系统(Instruction set):计算机所能执 行的全部指令的集合组成该计算机的指令系统。 不同类型的计算机具有不同的指令系统。
12
2020/7/31
第6章 8086指令系统与汇编基础 2.指针与索引寄存器
有五个,其名称分别是 SP、BP、IP、SI、DI。前面 两个 SP (stack pointer,称为堆栈指针)与(base pointer, 也称为基底指针)是与堆栈(stack)有关的寄存器。堆 栈是一块区域,用来暂时存放数据用,在 8086中, 堆栈是由最高地址中开始存放,每次都必须存入一 个字节的长度,并用一组指针,来表示堆栈已经使 用到那儿了,这组指针就是 SS:SP。也就是说,当 要将数据存入堆栈时,该数据应该存放在 SS:SP 所 指的地址再低 2 个字节,然后 CPU 再使 SP 之内 容减 2,使 SP 再指到下一个未使用的空间
一是指令中不需要任何操作数,如空操作指令、 停机指令等;
二是指令的操作数是默认,如加法的ASCII码 调整、十进制调整指令等。 (2)一操作数指令
格式: 操作码 A
6
2020/7/31
第6章 8086指令系统与汇编基础
其中A为存储器地址或寄存器名
指令中只给出一个地址,该地址既是操作数的地址, 又是操作结果的存储地址。如增量、减量指令等。
第6章 8086指令系统与汇编基础
6.1 概述 6.2 8086的寻址方式 6.3 8086的指令系统 6.4 汇编语言程序设计基础 6.5 汇编语言程序设计
1
2020/7/31
第6章 8086指令系统与汇编基础
整体 概述
一 请在这里输入您的主要叙述内容
二
请在这里输入您的主要 叙述内容
三 请在这里输入您的主要叙述内容
8086的寻址方式有:与数据有关的寻址和与程序 转移有关的寻址。
与数据有关的寻址:立即寻址、寄存器寻址、直 接寻址、寄存器间接寻址、寄存器相对寻址、基址 变址寻址、相对基址变址寻址
与程序转移有关的寻址:段内直接寻址、段内间 接寻址、段间接寻址及段间间接寻址
9
2020/7/31
第6章 8086指令系统与汇编基础
【例6.2】 MOV DS,3456H
则指令执行后,DS)=3456H
Hale Waihona Puke 102020/7/31
第6章 8086指令系统与汇编基础
回顾8086的寄存器
寄存器是在 CPU 中一个暂时储存数据的地方。 它有点儿像存储器(DRAM),但是不像存储器这 么大,寄存器只有一个、两个或四个字节的大小 而已。 CPU 可以对寄存器作加、减、乘、除、 且、或等等运算。8086/8088 共有 14 个 16 位的 寄存器,其名称都以两个英文字表示,大致可分 为以下四类。
3
2020/7/31
第6章 8086指令系统与汇编基础
6.1.2 机器指令和汇编指令格式
1.机器指令
计算机编程语言有机器语言、汇编语言及高级语 言等。 机器语言与计算机的核心CPU相对应,不同类 型的计算机有其独特的机器语言指令系统; 汇编语言仅是机器语言的英文助记符表示形式,也 与相应的计算机系统相对应; 高级语言脱离了具体的计算机,具有通用性。
6.2.1 立即寻址(Immediate Addressing)
立即寻址方式所提供的操作数直接存在指令中, 紧跟在操作码之后,操作数作为指令的一部分存放 在代码段里,这种操作数称为立即数。
立即数可以是8位的或16位的,若是16位数,则 高位字节存放在高地址中,低位字节在低地址中。
【例6.1】 MOV AL,12H 则指令执行后,(AL)=12H
4
2020/7/31
第6章 8086指令系统与汇编基础
计算机只能识别二进制代码,因此计算机能执行的 指令必须以二进制代码的形式表示,这种以二进制代 码形式表示的指令称为指令的机器码(Machine Code)。
2.汇编指令格式
一条指令一般包含操作码和操作数两部分。
操作码用来表示该指令所要完成的操作,不同 的指 令用不同的操作码表示;
操作数用来描述指令的操作对象,操作数可以 是立即数、寄存器和存储器,不同的指令可以有一 个、 二个、三个或无操作数,根据操作数个数的 不同指令格式分为以下几种:
5
2020/7/31
第6章 8086指令系统与汇编基础
(1)零操作数指令 格式: 操作码
即指令中只有操作码,没有操作数,也称为无操 作数指令。有两种情况使用这种指令:
11
2020/7/31
第6章 8086指令系统与汇编基础
1.通用寄存器
共有四个,其名称分别是 AX、BX、CX、DX,在汇编 语言程序中大致没有太大的差别,但是其中只有 AX(accumulator,也称为累加器) 可作为除法或乘 法中的被除数与被乘数,当 16 位不够大时,常常 用 DX:AX 来表示 32 位。此外这四个寄存器,只有 BX(base register,也称为基底寄存器) 可以被作 为 地 址 存 取 之 用 。 CX 也 称 为 计 数 寄 存 器 ( count register),用于计算循环之次数或字串处理之计数。 DX也称为数据寄存器(data register),可用来存取 数据。
(5)多操作数指令
在某些性能较好的大、中型甚至高档微小型计算 机中,往往设置一些功能很强的、用于处理成批数据 的指令。为了描述一批数据,指令中需要多个操作 数来指出数据存放的首地址、长度和下标等信息。
8
2020/7/31
第6章 8086指令系统与汇编基础
6.2 8086的寻址方式
指令的寻址方式(Addressing mode):就是 指令中操作数的表示方式。
(3)二操作数指
令
操作码 A1 A2
格式:
这是最常见的指令格式。A1、A2指出两个源操
作数的地址,其中一个还指出存放结果的目的地址。
对两个操作数完成所规定的操作后,将结果存入目
的地址。
7
2020/7/31
第6章 8086指令系统与汇编基础
(4)三操作数指令 格式: 操作码 A A2 A3
1
A1、A2指出两个源操作数的地址,A3指出存放 结果的目的地址。
第6章 8086指令系统与汇编基础
6.1 概述
6.1.1 指令及指令系统概念
指令(Instruction):是要求计算机执行特定操 作的命令,通常一条指令对应一种特定操作。指 令的执行是在计算机的CPU中完成的。
指令系统(Instruction set):计算机所能执 行的全部指令的集合组成该计算机的指令系统。 不同类型的计算机具有不同的指令系统。