80X86的指令系统和寻址方式

合集下载

80X86汇编语言程序设计_8086_8088寻址方式和指令系统解析

80X86汇编语言程序设计_8086_8088寻址方式和指令系统解析

80X86汇编语言程序设计第二章8086/8088寻址方式和指令系统(3~20)一.8086/8088寄存器组:(14个16位寄存器,8个8位寄存器)1.数据寄存器:AX(AH.AL). AX和AL是累加器。

用累加器进行计算操作时间最短。

BX(BH.BL). BX又叫基址寄存器。

唯一作为存储器指针的寄存器。

CX(CH.CL). CX控制循环的次数。

CL保存移位的位数。

DX(DH.DL). DX用于做32位乘除法时,存放被除数或保留余数。

2.指针寄存器:SP堆栈指针. 保存堆栈指针栈顶地址。

BP基址指针.3.变址寄存器:SI源地址.DI目的地址.变址和指针寄存器主要用于存放某个存储单元地址的偏移,或某组存储单元开始地址的偏移,即作为存储器指针使用。

通用寄存器由数据寄存器.指针寄存器.变址寄存器构成。

4.控制寄存器:IP指令指针. 指令指针IP给出接着要执行的指令在代码段中的偏移。

FLAG标志寄存器.包含了9个标志,主要用于反映处理器的状态和运算结果的某些特征。

(1)运算结果标志进位标志CF(Carry F);零标志ZF(Zero F);符号标志SF(Sign F);溢出标志OF(Over F);奇偶标志PF(1的个数为偶数,则PF被置1);辅助进位标志AF;(2)状态控制标志方向标志DF;中断允许标志IF;跟踪标志TF。

5.段寄存器:CS代码段.DS数据段.SS堆栈段.ES附加段.二. 存储器分段和地址的形成:1.存储单元的地址和内容地址是用二进制数来表示的,它是无符号整数,书写格式为十六进制数。

16位二进制数可以表示2的16次方,也就是0~65535的地址范围。

65536个字节单元的存储容量是64K。

一个存储单元中存放的信息成为该存储单元的内容。

字单元的地址采用它的低地址来表示,并采用“高高低低”的原则。

四个连续的字节单元就构成了一个双字单元。

2.存储器地址的分段及物理地址的形成8086/8088 CPU有20根地址线,可直接寻址的物理地址为2的20次方也就是1M字节(用16进制数表示1M字节的地址范围是00000~FFFFF)。

第四章80x86的寻址方式和指令系统3

第四章80x86的寻址方式和指令系统3
将指令指定mem32单元的前两个单元内容(16位偏移量)装入指 定通用寄存器,把后两个单元内容(段地址) 装入到DS段寄存 器。
用于写远地址指针。
例: 假设: (DS)=C 000H
指令: LDS SI, [0010H]
执行指令后: (SI)=0180H (DS)=2000H
(DS) C000H:0010H
(三)目的地址传送指令(Address-object transfer) 8086 /8088 提供三条: 地址指针写入指定寄存器或寄存器对指令。
1、LEA(Load Effective Address) 2、LDS (Load pointer using DS) 3、LES (Load pointer using ES)
必须通过累加器AX(字)或AL(节)输出数据。
例1:实现(29H)(28H)→(DATA_WORD) IN AX,28H MOV DATA_WORD,AX
例2:从端口3FCH 送一个字到AX寄存器 MOV DX,3FCH IN AX,DX ; (AL)←(3FCH), (AH)←(3FDH)
例3:实现将(AL) →(05H) OUT 5,AL;(05H)←(AL)
str_table——表格符号地址(首地址), 只是为了提高可读性而设置,汇编时仍用BX。
XLAT指令使用方法:
• 先建立一个字节表格; • 表格首偏移地址存入BX; • 需要转换代码的序号(相对与表格首地址位移量)存入AL; (表中第一个元素的序号为0) • 执行XLAT指令后,表中指定序号的元素存于AL中。
执行指令后: EA=(BX)+(SI)+0F62H=0400H+003CH+0F62H=139EH

第三章 80x86指令系统

第三章 80x86指令系统

(3) CPUID读取CPU的标识等有关信息 获得Pentium处理器的类型等有关信息。
二 80x86的指令系统
(4) RDMSR读取模式专用寄存器的指令 Pentium模式专用寄存器中的值。 (5) WRMSR 写入模式专用寄存器的指令
将EDX∶EAX中64位数写入模式专用寄存器。
(6) RSM 复位到系统管理模式
二 80x86的指令系统
(3)PUSH
还可将立即数推入堆栈 (4)PUSHAD 将EAX、ECX、EDX、EBX、ESP、 EBP、ESI、EDI推入堆栈
二 80x86的指令系统
(2) 累加器传送指令 包括: IN OUT XLAT XLATB
二 80x86的指令系统
(3) 标志传送指令
在 LAHF 、 SAHF 、 PUSHF 、 POP 基 础上,增加了: PUSHFD POPFD
(2) CMPXCHG r/m, r 32位比较指令 将目的寄存器或存储器中数和累加器中数比较, 如等则ZF为1,并将源操作数送目的操作数;否 则ZF为0,并将目的操作数送累加器。
二 80x86的指令系统
(3) XADD r/m, r 字交换加法指令 将源操作数和目的操作数相加,结果 送目的操作数处,而目的操作数送源 操作数处。 (4) INVD Cache清除指令
一 80x86的寻址方式
(3) 基址寻址方式
如: MOV
ECX,[EAX+24]
;由EAX中内容加24组成有效地址
(4) 变址寻址方式
如: ADD EAX,[ESI],5
;ESI的内容加5组成有效地址
一 80x86的寻址方式
(5) 带比例因子的变址寻址方式 如: IMUL EBX,[ESI*4+7] (6) 基址变址寻址方式 如: MOV EAX,[ESI][EBX]

汇编语言程序设计-80X86指令系统和寻址方式

汇编语言程序设计-80X86指令系统和寻址方式

1.数据传送类指令 • 数据传送类指令用于实现CPU的内部寄存器之间 • CPU内部寄存器和存储器之间 • CPU累加器AX或AL和I/O端口之间的数据传送 此类指令除了SAHF和POPF指令外均不影响标志寄存器的
内容。 在数据传送指令中,源操作数和目的操作数的数据长度
必须一致。
(1)MOV指令
指令功能:把AX中的16位数或AL中的8位数输出到指定端口。
例 3.26
OUT 22H, AL
(4)段间间接寻址方式 这种寻址方式是由指令中给出的存储器数据寻址方式,包括存
放转移地址的偏移量和段地址。其低位字地址单元存放的 是偏移地址,高位字地址单元中存放的是转移段基值。这 样既更新了IP内容又更新了CS的内容,故称为段间间接寻 址。 例 JMP WORD PTR[BX] ;转移到当前代码位置内 ;有效地址存放在BX寻址的单元中
;物理地址=DS×16+SI
MOV [DI], DX
;物理地址=DS×16+DI
2) 以BP进行寄存器间接寻址(BP作为地址指针)的方式
隐含的段寄存器为堆栈段寄存器SS,操作数存放在堆栈段区域, 将堆栈段寄存器SS的内容左移4位,再加上基址寄存器BP的 内容,即为操作数的物理地址。

MOV [BP], BX
OP
DW
OP
SW
操作码格式
8086指令格式
几点说明: ① 一条指令可以包含一个操作数,也可以包含一个以上的操作
数;一个操作数的指令称为单操作数指令,单操作数指令中 的操作数可能由指令本身提供,也可能由指令隐含地指出。 ② 若位移量或立即数为16位,那么在指令代码中,将低位字节 放在前面,高位字节放在后面。 ③ 8086指令系统中大多数指令的操作码只占用第一个字节,但 有几条指令是特殊的,其指令中的第一个字节不但包含操作 码成分,而且还隐含地指出了寄存器名,从而整个指令只占 一个字节,成为单字节指令。这些指令字节数最少,执行速 度最快,用得也最频繁。

第5章一台计算机的数据处理能力--80X86型微处理器具有的寻址方式及指令系统

第5章一台计算机的数据处理能力--80X86型微处理器具有的寻址方式及指令系统
在IA-32系列的CPU中,包含了由大量的具有各种各 样作用的指令构成的指令系统。 在IA-32CPU中,在实地址模式下,采用16位指令 模式(16位寄存器和16位偏移量);采用32位指令 模式(32位寄存器和32位偏移量)
一台计算机中所有机器指令的集合,称为这台计算机的指令系 统。 70年代末期,计算机硬件结构随着VLSI技术的飞速发展而越来 越复杂化,大多数计算机的指令系统多达几百条。我们称这些计算 机为复杂指令系统计算机,简称CISC。 如此庞大的指令系统不但使计算机的研制周期变长,难以保证正确 性,不易调试维护,而且由于采用了大量使用频率很低的复杂指令 而造成硬件资源浪费。所以在1989年随着80486 DX CPU计算机的诞 生,人们又提出了便于VLSI技术实现的精简指令系统计算机,简称 RISC,有效地减少了指令的执行周期。而且它以RISC技术为基础, 通过几条RISC指令和并行流水线方式来支持经典的CISC型指令。同 时由于组成指令周期的机器周期变得很规整,所以可以用组合逻辑 控制器代替微程序控制器来提高CPU处理速度。
4、程序控制指令:程序控制指令也称转移指令。计算机在执行程 序时,通常情况下按指令计数器的现行地址顺序取指令。但有时会 遇到特殊情况:机器执行到某条指令时,出现了几种不同结果,这 时机器必须执行一条转移指令,根据不同结果进行转移,从而改变 程序原来执行的顺序。这种转移指令称为条件转移指令。转移条件 来自于程序状态字(标志)寄存器PSW如下特征位:进位标志 (C)、结果为零标志(Z)、结果为负标志(S)、结果溢出标志 (V)等。 5、输入输出指令:主要用来启动外围设备,检查测试外围设备的 工作状态,并实现外部设备和CPU之间,或外围设备与外围设备之 间的信息传送。(单独编址和统一编址) 6、字符串处理指令:是一种非数值处理指令,一般包括字符串传 送、字符串转换(把一种编码的字符串转换成另一种编码的字符 串)、字符串比较、字符串查找(查找字符串中某一子串)、字符 串抽取(提取某一子串)、字符串替换(把某一字符串用另一字符 串替换)等。这类指令在文字编辑中对大量字符串进行处理。

计算机原理a03b:80x86的指令系统

计算机原理a03b:80x86的指令系统
功能:把BX值作为内存字节数组的首地址、下标为 AL的数组元素的值传给AL
XLAT OPR:OPR为表格首地址,仅仅为了增强程 序的可读性,实际首地址以BX为准
3送指令

MOV BX,offset table ;(BX)=0040H
MOV AL,3 XLAT
12
3.3.1 数据传送指令
堆栈段 SS→ SS=5000H
AX 31 25
SP→
28
SP=2500H
16
A7
50000
52500 52501 52502
堆栈段
SS→ SS=5000H
AX
31 25
SP→
25
31
SP=24FEH
28
16
A7
50000
524FE 524FF 52500 52501 52502
IN AX,DX
;把端口2F8H,2F9H按“高高
低低”组成一个字读入AX中
3.3 80x86的指令系统
18
3.3.1 数据传送指令
OUT输出指令
用来将累加器的内容送入指定的外部设备
基本作用:把寄存器AL,AX的内容输出的到指定端 口
如果输出设备的端口地址在0~255内,可以用OUT 指令直接给出,采用长格式:
3.3 80x86的指令系统
10
3.3.1 数据传送指令
堆栈:
先进后出
用途:
寄存器在用作多种用途的时候,堆栈可以方便的作为其 临时保存区域,在寄存器使用完毕后可恢复其原始值
CALL指令执行的时候,CPU用堆栈保存当前过程的返 回地址
调用过程的时候可以通过堆栈传递输入值 过程内的局部变量在堆栈上创建,过程结束的时候被丢

第3章 80x86指令系统与寻址方式1精品PPT课件

寻址方式选择得正确与否,直接影响程序的执行效率。 next
第3章 80x86指令系统与寻址方式
3.2 寻址方式
寻址方式 分类
与数据有关的寻址方式 与转移地址有关的寻址方式
next
第3章 80x86指令系统与寻址方式
对源操作数分别使用7 种寻址方式: (1)立即掌寻握址寻方址式方(式Im的m要edi点ate:Addressing ) (2)寄存❖器特寻点址(方区式别(于R其eg他iste寻r A址dd方re式ssin)g ;) (3)直接❖寻使址用方方式法((D语ir法ect形Ad式dr)ess;ing ) (4)寄存❖器用间途接(寻什址么方情况式下(使Re用gis)ter Indirect Addressing ) (5)寄存器相对寻址方式 ( Register Relative Addressing ) (6)基址变址寻址方式( Based Index Addressing ) (7)相对基址变址寻址方式( Relative Based Index Addressing )
next
第3章 80x86指令系统与寻址方式
例如: MOV AX,[BX] ;PA=(DS) ×16+(BX) 特点: (寄存器) = 操作数的偏移地址 用途: 可用于处理数组
next
第3章 80x86指令系统与寻址方式
(5)寄存器相对寻址方式 ( Register Relative Addressin
限制:只能用于源操作数
next
第3章 80x86指令系统与寻址方式
(2)寄存器寻址方式(Register Addressing ) 例如: MOV SI, CX
特点:操作数存在寄存器中。 用途:用寄存器提供操作数时存取速度快。

第四章80x86的寻址方式和指令系统6


助记符 LOOP LOOPZ LOOPNZ
转移条件 CX≠0 CX≠0且ZF=1 CX≠0且ZF=0
不转移条件 CX=0 CX=0或ZF=0 CX=0或ZF=1
与条件转移指令不同的是:循环指令隐含 ( CX ) 减1操作。 LOOP指令
……
DEC CX JNZ next ……
LOOP next
循环指令说明:
注意:CS—段地址 IP—偏移量
转移地址 调用地址寻址
➢控制和非控制转移指令 • 非控制转移指令:指令本身对CS和IP均无操作,形成顺序执行
结构。 顺序执行结构: 顺序存放,顺序执行
• 控制转移指令: 以CS和IP为主要操作对象,改变CS和IP寄存 器的值, 就改变了程序执行的流程。
▪程序是指令的集合 ▪指令在内存中顺序存放
(SP)←(SP)-2 ((SP)+1,(SP))←(CS) (SP)←(SP)-2 ((SP)+1,(SP))←(IP) (IP)←(EA) (CS)←(EA)+2 转子程序入口 EA—由DST的寻址方式确定的有效地址。
(2)、 RET( Reture from procedure)返回
• RET返回指令
例:比较(AX)、(BX)的大小,将大数存于( max )单元。
great:
CMP AX, BX JGE great XCHG AX, BX MOV [max], AX
(1)、JMP(Jump)无条件转移指令
JMP(jmp)跳转指令。 JMP指令必须指定转移的目标地址(或转向地址)。 转移分成两类:段内或段间转移。 段内转移:只要改变IP寄存器的内容
…… CMP AX,BX JE action_1

80X86指令系统解析

31
指令执行前堆栈段 指令执行后堆栈段 低 地 址 (SP) → 07 21 (SP) →
出栈方向 低地址
07 21
(AX) = ?
(AX)=2107
32
3.3.3 地址传送指令
• 1. 取有效地址指令 • 格式:LEA REG,MEM • 功能:将源操作数的有效地址传送到通用 寄存器,操作数REG为16位或32位通用寄 存器,源操作数为16位或32位存储器操作 数。 • 执行的操作:(REG) ← (MEM)
18
• 例3.7 假设指令:MOV AX, [BX+SI+200H], 在执行时,(DS)=3000H,(BX)=2100H, (SI)=0010H,内存单元32310H的内容为 5678H。问该指令执行后,AX的值是什么?
19
• 解:根据相对基址加变址寻址方式的规则,在执 行本例指令时,源操作数的有效地址EA为: EA=(BX)+(SI)+200H= 2100H+0010H+200H=2310H • 该操作数的物理地址应由DS和EA的值形成,即: • PA=(DS)*16+EA= 3000H*16+2310H= 32310H. 所以,该指令的执行效果是:把从物理地址为 32310H开始的一个字单元中的值传送给AX寄存 器。执行后(AX) =5678H
25
3.3.2 堆栈操作指令
• • • • 1. 入栈指令 1) 源操作数入栈 格式:PUSH SRC 功能:将源操作数压入堆栈,源操作数允 许为16位或32位通用寄存器、存储器和立 即数以及16位段寄存器
26
• 执行的操作: • 16位指令:(SP) ← (SP) -2 • ((SP)+1,(SP)) ← (SRC) • 32位指令:(ESP) ← (ESP) -4 • ((ESP)+3, (ESP)+2,(ESP)+1,(ESP)) ← (SRC)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档