微处理器原理及应用- 第三章 寻址方式与指令系统教材_第1页
微处理器原理及应用- 第三章 寻址方式与指令系统教材_第2页
微处理器原理及应用- 第三章 寻址方式与指令系统教材_第3页
微处理器原理及应用- 第三章 寻址方式与指令系统教材_第4页
微处理器原理及应用- 第三章 寻址方式与指令系统教材_第5页
已阅读5页,还剩86页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第三章寻址方式与指令系统3.1数据类型及其存储规则3.1.1基本数据类型及存储

一个存储单元——一个字节占用内存的一个地址。基本数据类型:字、双字、四字、双四字字——两个相邻字节组成的16位二进制;双字——4个相邻字节组成的32位二进制数;四字——8个相邻字节组成的64位二进制数;双四字——16个相邻字节组成的128位二进制数。高低高字低字高双字低双字字节字双字四字高四字低四字双四字707015815

031

1631

063

3263

0127

64NNN+1NN+2NN+4NN+8图3.1基本数据类型的结构形式9CH48H2BH6AH7AH1AHC3H23H72H92H8BH3AHABHA2H12H45H…NN+1N+2N+3N+4N+5N+6N+7N+8N+9N+10N+11N+12N+13N+14N+15单元地址图3.2基本数据类型存储规律

3.1.2数字数据类型数据类型包含:无符号整数、带符号整数和浮点数。1.无符号整数(范围:0~2n-1)2.带符号整数(范围:-2n-1~+2n-1-1)带符号整数是用2的补码表示的二进制值。规定操作数的最高位为符号位。3.浮点数浮点数据类型可分为三种:单精度浮点、双精度浮点和双 扩展的精度浮点。

3.1.3指针数据类型在实方式下有两种类型的指针:近指针(16位)和远指针(32 位)偏移Near指针310偏移段选择子Far指针或逻辑地址3104732(a)(b)图3.3指针数据类型(虚拟方式)3.1.4字符串、位及位串数据类型字符串包括字节串、字串和双字串。它们分别是字节、字和双字的相邻序列。707070150150150310310310字节串字串双字串NN+1N+MNN+2N+2MNN+4N+4M………图3.4字节、字、双字字符串数据类型3.2计算机指令格式指令包括两部分:指令操作码部分和地址码部分。指令操作码部分是给出该指令应完成何种操作。地址码部分是用来描述该指令的操作对象。指令格式可分为:零地址指令、一地址指令、二地址指令和三地址指令。零地址指令:只有操作码部分,而没有操作数的指令;一地址指令:只有目的操作数的单操作数指令;二地址指令:有两个地址指出两个操作数的地址;三地址指令优点:操作结束后,原两个操作数的内容均未被破坏;缺点:增加一个地址后,使得指令码加长,增加了存储空间,取指时间变长。

3.2.1指令的助记符格式助记符格式可用以下通式表示:L:opD1,D2,D3其中:L是标号,在标识符后面跟有冒号(:)

op是助记符,具有相同功能的指令操作码的保留名例如:

MOV

AX,[BX]操作码的助记符目的操作数源操作数3.2.280x86指令编码格式指令编码格式包含操作码和操作数两部分。操作码表示计算机执行什么操作。操作数指明参与操作的数的本身,或规定了操作数的地址。图3.58086CPU指令编码的一般形式1)操作码字节它是指令的第一字节,规定指令的操作类型,是指令的必选字节,字节内容如下:

D7D6D5D4D3D2D1D0

操作码字节寻址方式字节偏移量字节(1/2)立即数字节(1/2)OPDW

OP:表示指令操作码,

D:表示指令中数据传送的方向。

W:表示操作数类型。

2)寻址方式字节。它是指令的第二字节,规定操作数的寻址方式。是指令的可选字节,字节内容如下:

D7D6D5D4D3D2D1D0

MOD:表示方式域,D7、D6位能表示4种不同的方式。

REG:表示寄存器域,D5、D4、D3位能表示8种不同的寄存器。

R/M:表示寄存器/存储器域,D­2、D1、D0位能表示8种不同的寄存器/存储器。MODREGR/M表3-1mod与r/m域所组合的寻址方式

MODR/M存储器寻址寄存器寻址逻辑地址的计算公式W=0W=1MOD=00B

MOD=01BMOD=10BMOD=11B000001010011100101110111DS:[BX+SI]DS:[BX+DI]SS:[BP+SI]SS:[BP+DI]DS:[SI]DS:[DI]DS:[disp16]Ds:[BX]DS:[BX+SI+disp8]DS:[BX+DI+disp8]SS:[BP+SI+disp8]SS:[BP+DI+disp8]DS:[SI+disp8]DS:[DI+disp8]DS:[disp16+disp8]Ds:[BX+disp8]DS:[BX+SI+disp16]DS:[BX+DI+disp16]SS:[BP+SI+disp16]SS:[BP+DI+disp16]DS:[SI+disp16]DS:[DI+disp16]DS:[disp16+disp16]Ds:[BX+disp16]ALCLDLBLAHCHDHBHAXCXDXBXSPBPSIDI3)

偏移量字节是指令的第三、四字节,是指令的可选字节,给出了存储器操作数的偏移量。4)

立即数字节是指令的可选字节,给出了指令的立即数。3.38086CPU的寻址方式

寻址方式——寻找指令或操作数存放地址的方法。两种寻址方式:一种是用来对操作数进行寻址;另一种是 用来对转移地址或调用地址进行寻址,即 对指令地址进行寻址。3.3.1操作数的寻址方式1、立即寻址立即数寻址特点:指令执行速度快。立即数只能是整数,且只能作为源操作数。图3-6立即数寻址过程代码段1234┇MOVAX,3412H的指令代码34AXAH

AL操作码122、寄存器寻址方式寄存器寻址方式的优点:不但可以减少指令码的长度,而且由 于操作数已存于寄存器中,执行速度 较快。寄存器既能作为源操作数,又能作为目的操作数。例如:MOVAX,CX

该指令将CX(源操作数)的内容传送到AX寄存器(目的操作数)中,其中源操作数CX,目的操作数AX都是寄存器寻址方式。

3、存储器寻址指令给出了操作数在数据区中的地址信息。五种不同的存储器寻址方式:(1)直接寻址方式例如:MOVAX,[7834H]

该指令将有效地址EA=8064H单元中的内容传送到AX寄存器中。若(DS)=2000H,则该指令源操作数的存储单元的物理地址为20000H+7834H=27834H。代码段操作码34数据段┇2000DS20000+783427834

34

12AXMOVAX,[7834H]指令代码┇78┇┇1234图3-7直接寻址方式寻址过程(2)寄存器间接寻址操作数存放在存储单元中。注意两点:一是寄存器中的内容是操作数的有效地址,而不是 操作数本身; 二是只能用CPU中的基址寄存器BX、BP或变址寄存器 DI、SI来间接寻址。如果指令前面没有用前缀指令指明操作数在哪一段,则通常默认段寄存器为DS。即:物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+[BP]例如:MOVAX,[DI]代码段操作码数据段1234┇┇1

2

3

4DS2

4

6

8BX12340+2468147A83412AXMOVAX,[BX]指令代码┇图3-8寄存器间接寻址示意图(3)寄存器相对寻址操作数存放在存储单元中物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+[BP]例如:MOVBX,[DI+10H]基址寻址——用BX、BP为基址寄存器进行寻址变址寻址——用SI、DI为变址寄存器进行寻址代码段操作码24数据段267868┇1

2

3

4DS2

7

3

2BX12340

27321B2967826AXMOV

AX,[BX+6824H]指令代码┇+6824┇图3-9寄存器相对寻址操作过程(4)基址加变址寻址方式操作数存放在存储单元中物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+例如:ADDAX,[BX+SI]+1026

003412340代码段操作码数据段7856┇┇1

2

3

4DS1

0

2

6SI1339A5678AXMOVAX,[BX+SI]指令代码┇0

0

3

4BX图3-10基址加变址寻址方式操作过程(5)相对的基址和变址寻址方式操作数存放在存储单元中物理地址=[DS]×10H+EA=[DS]×10H+或物理地址=[SS]×10H+例如:MOVAH,[BX+SI+2468H]MOVAH,[BX+SI+2468H]指令代码

0110

010020000代码段操作码68数据段2623┇2

0

0

0DS0

11

0SI2267826AH┇0

1

0

0BX+246824┇图3-11相对的基址和变址寻址方式操作过程过程4、I/O端口寻址操作数在I/O端口中。两种编址方式:与存储器统一编址方式独立的I/O空间编址方式与存储器统一编址方式,上述五种存储器寻址方式均可采用。独立的I/O空间编址方式则对I/O端口有两种寻址方式:(l)直接端口寻址方式端口地址的寻址范围是0~0FFH,端口地址直接由指令给出。(2)间接端口寻址方式端口地址的寻址范围是0~0FFFFH,端口地址由DX寄存器给出。

3.3.2指令地址的寻址方式指令地址的寻址方式以下4种:(1)段内直接寻址方式转移的指令地址是由当前的IP内容和指令中规定的8位或16位偏移量之和给出。

+2101

0121

12340代码段操作码操作码0121┇┇1

2

3

4CS14562段内直接转移指令代码┇0

1

2

1IP目标指令代码图3-12段内直接寻址方式过程(2)段内间接寻址方式转移的指令地址是由用寄存器或一个字存储单元的内容给出。代码段操作码操作码数据寻址方式┇┇CS段内间接转移指令代码┇根据数据寻址方式计算EAIP目标指令代码Σ图3-13段内间接寻址方式过程(3)段间直接寻址方式转移的指令地址是由指令码字节直接给出。

3412+78560代码段操作码操作码1234┇┇7856CS7B972段间直接转移代码┇3412IP目标指令代码5678图3-14段间直接寻址过程(4)段间间接寻址方式转移的指令地址由一个双字存储单元的内容给出。

图3-15段间间接寻址方式过程代码段操作码操作码数据寻址方式┇┇段间间接转移指令代码┇目标指令代码DSCSIPΣΣ数据段┇12345678┇根据数据寻址方式计算EA3.48086指令系统指令系统按功能可分为6类:①数据传送类指令;②算术运算类指令;③逻辑运算与移位类指令;④字符串指令;⑤控制转移类指令;⑥处理器控制类指令。3.4.1数据传送类指令分为4种:①通用数据传送指令②累加器专用传送指令③地址传送指令④标志传送指令。1.通用数据传送指令(1)最基本的传送指令格式:MOV

目的操作数,源操作数举例:①MOVBL,AL②

MOVDS,AX③

MOVDL,[DI]④MOV[BX],AX⑤

MOVDX,[1000]⑥

MOVBH,120⑦

MOVDX,1234H(2)堆栈操作指令堆栈是一种数据结构,是在内存中开辟了一个比较特殊的存储区,这个区域中数据的存取采用“后进先出”的原则。1000SS0018SP┇605040302010┇100181001A栈顶栈底1000SS0016SP┇605040302010┇ABCD100181001A栈顶栈底1000SS001ASP┇40302010┇1001A栈顶栈底10016图3.16

8086系统椎栈及其操作(a)堆栈原始状态(b)执行pushAX(c)执行POPAX

(AX)=CDABHPOPBX后的状态(a)(b)(c)堆栈段——8086CPU在存储器分段管理时,划分了一个专门的 堆栈区。格式:PUSH源操作数

POP目的操作数举例:①PUSHBX②PUSHES③PUSHDS④PUSH[SI]⑤POPAX⑥POPBX⑦POSH[DI]

(3)交换指令实现两个操作数之间进行直接交换,方便程序的编写。格式:XCHG目的操作数,源操作数举例:①XCHGAH,BL②

XCHGDX,BX③

XCHG[505H],AX2.累加器专用传送指令累加器是8086CPU进行数据传输的核心。有两类指令:①输入/输出指令②换码指令(1)输入/输出指令——工业控制中常用的指令格式:INAC,源操作数

OUT目的操作数,AC举例:①INAL,20H②OUTDX,AX

(2)换码指令该指令用来将一个代码值转换成相应的另一种代码值,格式:XLAT代码段D779数据段┇40┇780

3

0

0BX07

03008030707ALXLAT指令代码┇+80000┇┇8

0

0

0DS803008030180307图3-17

XLAT指令执行过程举例:若要将十进制数0~9转换成共阳极LED显示的字形代码,则列表如表3-2所示。十进制数(BCD码)字形代码040H179H224H330H419H512H602H778H800H918H表3-2十进制数0~9转换成LED显示的字形代码

3.地址传送指令它包括3条指令:①取有效地址指令LEA;②将地址指针装入DS指令LDS;③将地址指针装入ES指令LES。格式:LEA寄存器,源操作数

LDS寄存器,源操作数

LES寄存器,源操作数举例:①LEAAX,[DI+1000]②LEAAX,[3721H]③LDSSI,[2130H]④LESDI,[SI]

代码段C578数据段┇5600201

0

0

0DS初值+2130121307856SILDSSI,[2130H]指令代码┇┇┇36213010000图3-18

LDS指令执行过程2

0

0

0DS终值4.标志传送指令标志传送指令包括4条指令:①标志读取指令LAHF②标志设置指令SAHF③标志寄存器压入堆栈指令PUSHF④标志寄存器从堆栈弹出指令POPF格式:LAHFSAHFPUSHFPOPF举例:①PUSHF

②POPBX③

PUSHCX④

POPF

OFDFIFTFSFZFAF

PFCF15

11109876543210FLAGSLAHFSAHFAH图3-19LAHF和SAHF指令传送操作3.4.2算术运算类指令1.加法指令格式:ADD目的操作数,源操作数

ADC目的操作数,源操作数

INC目的操作数举例:①ADDBL,15H

②ADDBX,SI

③ADCCX,[BX]④INCDX

2.减法指令格式:SUB

目的操作数,源操作数

SBB

目的操作数,源操作数

DEC

目的操作数

NEG

目的操作数

CMP

目的操作数,源操作数举例:①SUBAX,BX

②SUBAH,110

③SBB

[BX],AX④DECBX

3.乘法指令格式:MUL

源操作数

IMUL

源操作数举例:

①MULDL②

IMULBX

AL操作数乘积AH

ALAX操作数乘积DX

AX(a)(b)图3-20乘法运算操作数及其运算结果间关系(a)字节操作数(b)字操作数4.除法指令格式:DIV

源操作数

IDIV

源操作数

CBW

CBD举例:①DIVDL②

IDIVBX③

MOVAL,72H④

CBW⑤

MOVAX,8600H

⑥CWDALAH商余数操作数AX8位16位AXDX商余数操作数DXAX16位32位(a)(b)图3-21除法运算操作数及其运算结果存放关系(a)字节操作数(b)字操作数5.BCD码运算的调整指令分为两类:组合式BCD码和分离式BCD码格式:DAAAAADASAASAAMAAD举例:①ADCAL,[SI]②

DAA③

ADDAL,[DI]④

AAA⑤SUBAL,[BX]

⑥DAS

⑦MULDL

⑧AAM

⑨AAD⑩

DIVBL3.4.3逻辑运算和移位指令两组处理指令:逻辑运算指令和移位指令。1.逻辑运算指令指令格式:AND目的操作数,源操作数

OR目的操作数,源操作数

NOT目的操作数

XOR目的操作数,源操作数

TEST目的操作数,源操作数举例:①ANDBL,0FH②ORCX,[BX+DI]③XORAX,0FF00H④TESTBX,8000H⑤NOTDH2.移位指令分为两大类:非循环移位指令和循环移位指令。(1)非循环移位指令指令格式:SAL目的操作数,计数值

SHL目的操作数,计数值

SAR目的操作数,计数值

SHR目的操作数,计数值举例:①SALAX,1②SHLAX,CL③SARWORDPTR[SI],1④SHRDI,1CF0MSBLSBCFCFMSBLSBMSBLSB0(a)(b)(c)图3-22非循环移位指令操作示意图(a)SHL/SAL算术左移(b)SHR

逻辑右移(c)SAR算术右移(2)循环移位指令指令格式:ROL目的操作数,计数值

ROR目的操作数,计数值

RCL目的操作数,计数值

RCR目的操作数,计数值举例:①ROLAX,1②RORAH,CL③RCLBYTEPTR[BX],1④RCRBX,1图3.23循环移位移位指令操作示意图(a)ROL不带进位循环左移(b)ROR不带进位循环右移(c)RCL带进位循环左移(d)RCR带进位循环右移CFMSBLSBCFCFMSBLSBMSBLSB(a)(b)(d)CFMSBLSB(c)3.4.4串操作指令串操作指令-----用一条指令实现对一串字符或数据的操作。串操作指令的特点:①通过加重复前缀来实现串操作,规定CX寄存器存放要处理的字符串的元素个数,即:字节数或字数。②可以对字节串进行操作,也可以对字串进行操作。③串操作时,SI和DI的增减规定由方向标志DF设定,当DF=1时,SI和DI作自动减量修改,当DF=0时,SI和DI作自动增量修改,对字节串操作增减量为1,对字串操作增减量为2。④重复的字符串处理过程可以被中断。5条串操作指令:串传送指令MOVS、串比较指令CMPS、串检索指 令SCAS、LODS串装入指令和串存储指令STOS。3条重复前缀:重复前缀REP、相等时重复REPE和不相等时重复REPNE。1.指令的重复前缀格式:REP串操作指令

REPE串操作指令或REPZ串操作指令

REPNE串操作指令或REPNZ串操作指令2.字符串指令(1)字符串传送指令指令格式:MOVSBMOVSW举例:①MOVDS,2000H②

MOVES,3000H③

CLD④

MOVCX,20⑤

MOVSI,200H⑥

MOVDI,100H⑦

REPMOVSW

(2)字符串比较指令指令格式:CMPSBCMPSW举例:编程比较从逻辑地址2000H:100H开始的10个字节与逻辑地址4000H:200H开始的10个字节是否对应相等,相等则转DONE。

MOVDS,2000H

MOVES,4000H

MOVDI,200H

MOVSI,100H

CLDMOVCX,10REPZCMPSBJZDONERETDONE┇(3)字符串检索指令指令格式:SCASW

SCASB功能:SCASB/SCASW在字符串中查找一个与已知数值相同或不同的元素。举例:从逻辑地址9000H:100H开始的10个单元中如果有一个单元的内容为2CH,则BX加1。MOVES,9000HMOVDI,100HCLDMOVCX,10MOVAL,2CHREPNZSCASBJNZAAAINCBXAAA:┇(4)取字符串指令指令格式:LODSBLODSW举例:将100H:20H单元开始10个字节的内容均加5。CLD;方向标志清0,SI递增MOVCX,10;置计数初值10MOVDS,100H;置DS为100H

MOVSI,20H;置SI为20,作为初始地址指针LL1:

LODSB;取1个字节到AL中,并使SI增1

ADDAL,5;加5处理MOV[SI],AL;处理结果送回

DECCX;计数值减1JNZLL1;如未处理完,转LL1HLT;暂停(5)存字符串指令指令格式:STOSB

STOSW举例:将100H:20H开始的128个单元清0。CLD;清除方向标志,DI递增MOVCX,0080H;置计数初值128MOVES,100H;置ES为100HMOVDI,20H;置DI为20H,作为初始地址指针XORAL,AL;AL清0REPSTOSB;将128个字节清03.4.5控制转移类指令5种转移指令:无条件跳转指令条件跳转指令循环控制指令子程序调用和返回指令中断指令

1.无条件跳转指令指令格式:JMP

目标地址举例:①JMPSHORTMULTI②JMPNEARPRTMULT2③JMPCX④JMPFARPTRMULT3⑤

JMPDWORDPTR[SI]2.条件跳转指令(1)简单条件跳转指令指令格式:JC目标地址

JNC目标地址

JZ目标地址

JNZ目标地址

JS目标地址

JNS目标地址JO目标地址

JNO目标地址

JP目标地址

JNP目标地址

JCXZ目标地址举例:用条件跳转指令实现程序的循环

MOVSI,1000HMOVDI,2000HMOVCX,100KKK:MOVSBDECCXJNZKKK┇(2)带符号数条件跳转指令指令格式:JG/JNLE目标地址

JGE/JNL目标地址

JL/JNGE目标地址

JLE/JNG目标地址举例:设有2个互不相等的带符号字节数存放在以100H单元为首地址的数据缓冲区中,试编程把较大的数送200H单元中。

(3)无符号数条件跳转指令指令格式:JB/JNAE目标地址

JNB/JAE目标地址

JA/JNBE目标地址

JNA/JBE目标地址

MOVSI,100H;首址100H送SIMOVAL,[SI];取第一个数据CMPAL,[SI+1];与第二个数相比较JGL1;如果比第二个数大,转L1MOVAL,[SI+1];取第二个数L1:MOVSI,200H;将较大的数送至200HMOV[SI],AL3.循环控制指令指令格式:LOOP目标地址

LOOPZ/LOOPE目标地址

LOOPNZ/LOOPNE目标地址举例:编程求1+2+3+4+…+100MOVCX,100;置循环计数初值100MOVAX,0;求和寄存器AX清0,SUM:ADDAX,CX;把CX计数值累加入AXLOOPSUM;CX=CX-1,当CX≠0时再循环RET;返回,结果在AX中

4.子程序调用和返回指令指令格式:CALL目标地址

RETRET参数举例:①CALL200H②

CALLBX③

CALL500H:600H④

CALLDWORDPTR[BX]⑤RET4主程序┇MOVAL,3AHCALLPROGMOVBX,AX┇CALLPROGMOVDX,AX┇子程序PROG:MOVBL,AL┇┇

RET图3-24调用子程序的过程5.中断指令3.4.6处理器控制类指令1.标志操作指令指令格式:STC

CLC

CMC

STD

CLD

STI

CLI

2.8086CPU与外部事件同步指令指令格式:HLT

WAIT

ESC外部操作码,源操作数

LOCK指令3.空操作指令指令格式:NOP3.580X86的寻址方式及新增的指令

3.5.1虚地址方式下的寻址方式1.立即数寻址方式例如:MOVEAX,12345678H

2.寄存器寻址方式

例如:MOVEAX,ECX

3.存储器寻址方式偏移量可以由下列公式计算得到:

EA=基址十变址×比例因子十位移量基址——任何通用寄存器都可作为基址寄存器,其内容即为基址。位移量——在指令操作码后面的32位、16位或8位的数。变址——除了ESP寄存器外,任何通用寄存器都可以作为变址寄存器,其内容即为变址值。比例因子——变址寄存器的值可以乘以一个比例因子,比例因子可以是1,2,4或8。属性CS段界限值段基地址属性DS段界限值段基地址属性ES段界限值段基地址属性FS段界限值段基地址属性GS段界限值段基地址属性SS段界限值段基地址描述符寄存器选择子CSDSESFSGSSS基址寄存器变址寄存器比例因子1、2、4或8位移量存储器┇┇目标地址┇┇目标地址┇┇图3-25寻址计算图解9种存储器寻址方式(1)直接寻址方式例如:INCWORDPTR[1234567H](2)寄存器间接寻址方式例如:MOVEBX,[EAX]MOVAX,[ECX]MOVBL,[CX]

(3)基址寻址方式例如:MOVECX,[EAX+124]

MOVDX,[EBP+12345H]与8086CPU不同之处:①位移量可以是32位,②任何一个通用寄存器均可(4)变址寻址方式例如:MOVEAX,CNT[EBP]MOVEDX,CNT[EAX]与8086CPU不同之处:①位移量可以是32位,②任何一个通用寄存器均可看成基址寄存器(5)带比例因子的变址寻址方式

EA=变址寄存器内容*比例因子+位移量其中:比例因子可以为1、2、4或8例如:MOVEAX,CNT[ESI*4]

MOVEAX,VAR[EDI*2](6)基址加变址寻址方式EA=基址寄存器内容+变址寄存器内容例如1:MOVEAX,[EBX][EDI]MOVEAX,[ESP][EBP]例如2:MOVEAX,[EDX][EBP]MOVEAX,EBP][EDX]

(7)带比例因子的变址再加基址寻址方式

EA=变址寄存器内容*比例因子+基址例如:MOVEBX,[EDX*8][EBP]MOVEAX,EDX][EBP*2](8)带位移量的基址加变址寻址方式

例如:ADDEDX,[EDI][EBP+123H]

EA=基址寄存器内容+变址寄存器内容+位移量(9)带比例因子的变址加基址加位移量的寻址方式

例如:MOVEAX,[ESI*8][EBP+180H]EA=基址寄存器内容+(变址寄存器内容×比例因子)+位移量注意:在实模式下,操作数和地址的默认长度是16位。3.5.280286CPU新增指令新增指令包括两个方面,一是增加了一些新功能指令,二是对一些原有指令增强了其功能。80286CPU新增指令见表3-3.3-4。下面就其中一些常用指令进行介绍1.数据传送类指令指令格式:PUSH源操作数

PUSHA

POPA举例:PUSH-5

2.算术运算类指令指令格式:①IMUL寄存器,立即数②IMUL寄存器1,寄存器2或存储器,立即数举例:

IMULBX,50IMULDI,[BX+TABLE],3IMULBX,CX,345H

3.移位和循环移位指令指令格式:SHL目的操作数,COUNT

SAL目的操作数,COUNTSHR目的操作数,COUNTSAR目的操作数,COUNTROL目的操作数,COUNTROR目的操作数,COUNTRCL目的操作数,COUNTRCR目的操作数,COUNT举例:

SHLDX,94.串输入/输出指令指令格式:INSBINSWOUTSBOUTSW举例:要从端口地址为125H的外设端口中输入200个字节,存放在以逻辑地址2000H:100H为首址的内存单元中,则可采用如下串输入指令:

CLDMOVES,2000HLEADI,100HMOVCX,200MOVDX,125HREPINSB5.高级语言类指令指令格式:BOUND寄存器,存储器地址

ENTER立即数1,立即数2LEAVE3.5.380386/80486CPU新增指令1.数据传送类指令指令格式:MOVSX目的操作数,源操作数

MOVZX目的操作数,源操作数举例:

MOVDX,0FB20HMOVSXEAX,DXMOVCL,0FBHMOVZXAX,CL2.算术运算类指令格式:XADD目的操作数,源操作数3.逻辑运算与移位指令指令格式:

SHRD第一操作数,第二操作数,第三操作数

SHLD第一操作数,第二操作数,第三操作数

举例:设CX中有内容为1234H,DX中有内容为5678H,则SHLDCX,DX,

7指令是把DX左移

7位,移入

CX中,结果(CX)=1A2BH4.位操作类指令指令格式:BT第一操作数,第二操作数

BTC第一操作数,第二操作数

BTR第一操作数,第二操作数

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论