当前位置:文档之家› 微机原理指令整理.

微机原理指令整理.

微机原理指令整理.
微机原理指令整理.

类别指

指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数

传送指令通

基本传输

指令

MOV

将源操作数中的数据传送至目的操

作数,以实现寄存器与寄存器、寄

存器与存储器之间数据传送以及立

即数送往寄存器或存储器

1.MOV WORD PTR [2000],AX

将AX送2000和

2001单元(低位

在低地址,高位

在高地址,下同)

至少有一个是寄存器

(除立即数送存储器

外);

不能在两个存储单元之

间直接传送数据;

不能在两个段寄存器之

间直接传送数据;

不能将立即数直接送至

段寄存器;SS和SP赋

值必须紧邻

指令指针IP既不作目

的操作数也不做源操作

2.MOV AX,ES:[BX+SI+50]

将ES段

(BX+SI+50)字

单元内容送AX

3.MOV SS,BX 将BX内容送SS

4.MOV ES,SS:[DI+200]

将SS段(DI+200)

字单元内容送ES

5.MOV BX,CX 将CS内容送BX

6.MOV WORD PTR

[BX+DI],SS

将SS内容送

(BX+DI)字单元

CS不能作目

的操作数;

立即数不能

作目的操作

7.MOV CL,DH 将DH内容送CL

8.MOV DI,[SI+100]

将(SI+100)字

单元内容送DI

9.MOV WORD PTR [DI],DX

将DX内容送(DI)

字单元

10.MOV CX,3330 立即数3330送

微机原理指令整理 1

微机原理指令整理

2

CX

11.MOV BYTE PTR [DI],0

立即数0送(DI)

字节单元 堆栈操作

指令

PUSH

将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP 指向的栈顶个单元)

1.PUSH AX AX 内容进栈 通用寄存器、段寄存器、存储单元的一个字

CS 不能作目的操作数; 2.PUSH SI

SI 内容进栈 3.PUSH ES

ES 内容进栈 4.PUSH CS

CS 内容进栈 5.PUSH WORD PTR [BX]

(BX)和(BX+1)单元内容进栈

6.PUSH WORD PTR BETA [BX] (BX+BETA)字单元内容进栈 不能使用8位源或目的操作数 POP

将栈顶个单元的内容退出(弹出)到通用寄存器、段寄存器或存储单元

1.POP BX

栈顶2个字节出栈到BX 不能使用8位源或目的操作数 2.POP DX 栈顶2个字节出栈到DX 通用寄存器、段寄存器、存储单元的一个字节;

CS 不能作目的操作数

3.POP ES

栈顶2个字节出栈到ES 4.POP SS

栈顶2个字节出栈到SS 5.POP [BX+50]

栈顶2个字节出栈到(BX+50)字单元

6.POP [BP+DI]

栈顶2个字节出栈到(BP+DI )字单元

交换指令XCHG 实现数据宽度相同的源操作数与目

的操作数之间的数据交换,亦即同

为8位或16位的累加器与寄存器、

寄存器与寄存器以及寄存器与存储

单元之间的数据交换

1.XCHG AL,BL

AL与BL之间字

节交换

段寄存器、CS、IP、立

即数不能作为源或目的

操作数;两个

存储单元之间、段寄存

器与段寄存器之间不能

进行交换

2.XCHG CX,AX

CX与AX之间字

交换

3.XCHG DH,CL

DH与CL之间字

节交换

4.XCHG BX,CX

BX与CX之间字

交换

5.XCHG BL,[1000]

BL与1000单元

内容字节交换

6.XCHG WORD PTR [DI],DX

(DI)字单元内

容与DX字交换

专用累加器传送指令换码指令XLAT

专门使用累加器AL并将其中的值

(比如按二进制、十进制或十六进

制等编码)变换成内存某一表格区

内对应的另一种编码(比如发光二

极管LED的字形码或其他通讯码等)

MOV BX,TABLE_SEGCODE

XLAT

设置SEGCODE表

首址

对表进行检索

有操作码,无操作数。

操作数AL隐藏在操作

码之中

输入指令IN

在I/O口独立编址时,使用专门的

输入指令IN,这种输入操作又是指

定累加器AL或AX来担当,因此,

IN属于专用累加器传送指令

1.IN AL,60H

8位口地址60H

中的1个字节到

AL

不能使用除累加器外的

其他寄存器进行操作;

不能使用大于255的地

址作为8位口地址;

不能使用除DX外的其

他寄存器作为16位间

接口地址,且在间接口

寻址时,须对DX预先置

2.IN AX,60H

60H内容到AL,

61H内容到AH

3.IN AL,DX

16位口地址(DX)

单元内容到AL

4.IN AX,DX (DX)及(DX+1)口

微机原理指令整理 3

内容到AX 地址值

输出指令OUT 在I/O口独立编址时,使用专门的

输出指令OUT,这种输出操作又是指

定累加器AL或AX来担当,因此,

OUT属于专用累加器传送指令

1.OUT 60H,AL

AL中的字节输出

到8位口60H

不能使用除累加器外的

其他寄存器进行操作;

不能使用大于255的地

址作为8位口地址;

不能使用除DX外的其

他寄存器作为16位间

接口地址,且在间接口

寻址时,须对DX预先置

地址值

2.OUT 60H,AX

AX中的字输出到

8位口60H及61H

3.OUT DX,AL

AL中的字节到16

位口地址(DX)

4.OUT DX,AX

AX中的字到(DX)

及(DX+1)口

地址

传送指令有效地址

传送指令

LEA

将存储单元有效(偏移)地址EA(源

操作数)装入一个16位通用寄存器

(目的操作数),以使该寄存器作

为地址指针

1.LEA SP,[1234H]

直接地址1234H

装入SP

存储器操

作数(存储

单元有效

地址EA)作

源操作数

段寄存器、

IP不能作目

的操作数;

16位通用寄

存器(BX、

BP、SI及

DI)作目的

操作数

2.LEA BX,TABLE

标号或变量

TABLE代表的地

址装入BX

3.LEA SI,[BX]

间接地址(BX)装

入SI

4.LEA DI,[BX+100]

基址地址

(BX+100)装入

DI

不能将存储器操作数与

寄存器操作数在源与目

的操作数的位置上互换

(倒置)

5.LEA DX,[SI+200]

变址地址

(SI+200)装入

DX

6.LEA AX,[BP+DI+500] 基(址)变址地

微机原理指令整理 4

址(BP+DI+500)

装入AX

使用DS段

的地址指针传送指

令LDS

将双字地址指针(包括偏移地址和

段地址)分别传送到指令中给出的

16位寄存器及数据段寄存器DS中,

双字地址指针从源操作数的双字内

容即(EA)和(EA+2)字单元得到

1.LDS BX,[3250H]

由直接地址得到

双字地址指针

存储器操

作数(存储

单元有效

地址(EA)

作为源操

作数

16位寄存器

REG(BX、BP、

SI及DI)作

为目的操作

2.LDS SI,TMP

由标号(符号地

址)的内容得到

双字地址指针

3.LDS BP,[BX]

由间接地址(BX)

的内容得到双字

地址指针

4.LDS DI,[BX+20]

由基址地址

(BX+20)的内容

得到双字地址指

5.LDS BX,[DI+40]

由变址地址

(DI+40)的内容

得到双字地址指

不能将存储器操作数

(存储单元有效地址

EA)与寄存器操作数在

源与目的操作数的位置

上互换(倒置)

6.LDS BX,[BP+SI+500]

由基(址)变址

地址

(BP+SI+500)的

内容得到双字地

址指针

使用ES段的地址指LES

功能与上基本相同,差别在于能提

供偏移地址直接访问和使用ES段的

微机原理指令整理 5

针传送指

令只有DI,而BX、SI及BP可通过段超越前缀(ES:)由默认的DS段或SS段改为访问ES段

标志传送指令低8位标

志取入AH

指令

LAHF

将标志寄存器中低8位FL取入寄存

器AH中(AH<-FL),以便于阅读和

校核

低8位

FL(SF、ZF、

AF、PF、CF)

寄存器AH

存AH到低

8位标志

指令

SAHF

将AH内容存到低8位标志寄存器FL

中(FL<-AH),以便于设置标志状况

影响低8位

标志位

寄存器AH 低8位

FL(SF、ZF、

AF、PF、CF) 标志进栈

指令

PUSHF

将16位标志寄存器F(FH、FL)的内

容进栈,SP<-SP-2,F的内容不变

无16位标志

寄存器F

(FL、FH)

堆栈

标志出栈

指令

POPF

将堆栈栈顶的2个字节弹出送16位

标志寄存器F(FH、FL),SP<-SP+2,

影响标志寄存器的内容

影响16位标

志位

堆栈栈顶

的2个字节

16位标志寄

存器F(FL、

FH)

术运算类指令加

加法指令ADD

将源操作数与目的操作数的内容相

加,其结果(两者之和)存放于目

的操作数,或者说将源操作数的内

容加到目的操作数中

CF、PF、AF、

ZF、SF及OF

1.ADD DI,SI

寄存器SI的内容

加到DI中

源与目的操作数不能同

时为存储器操作数

2.ADD CX,[5000]

5000和5001单

元内容加到CX中

寄存器、存

储器或立

即数

寄存器或存

储器;

不能是立即

3.ADD WORD PTR

[BP+DI+30],DX

寄存器DX的内容

加到(BP+DI+30)

字单元中

4.ADD WORD PTR

[SI+100],2040

立即数2040加到

(SI+100)字单

元中

微机原理指令整理 6

5.ADD BH,86H 立即数86H加到BH中

6.ADD AX,FED0H 立即数FED0H加到累加器AX中

带进位的加法指令ADC

功能与上基本相同,唯一不同之处

是,在源操作数与目的操作数的内

容相加时,还要加上进位位CF的值

CF、PF、AF、

ZF、SF及OF 与ADD相同与ADD相同

与ADD相同与ADD相同

增量(加1)指令INC

将目的操作数的内容(8位或16位)

加1,源操作数1隐含在操作码中。

目的操作数为寄存器或存储器,但

不能是段寄存器或立即数

PF、AF、ZF、

SF及OF,

不影响CF

1.INC AL AL中的内容加1 源操作数

为1

为寄存器或

存储器;

不能是段寄

存器或立即

2.INC DI DI中的内容加1

3.INC BYTE PTR [2000]

2000存储单元内

容加1

4.INC WORD PTR

[BP+SI+50]

(BP+SI+50)存储

器字单元内容加

1

减法

类指令减法指令SUB

将目的操作数的内容与源操作数的

内容相减,其结果(两者之差)存

放于目的操作数,或者说从目的操

作数的内容中减去源操作数的内容

CF、PF、AF、

ZF、SF及OF。

CF=1,表示借

位;

OF=1,溢出

1.SUB CH,DL

CH中的内容减去

DL中的内容,结

果在CH中

源与目的操作数不能同

时为存储器操作数

2.SUB BL,[DI]

在BL中减去(DI)

单元的内容

寄存器、存

储器或立

即数

寄存器或存

储器;

不能是立即

3.SUB [BP+4},cl

在SS段的(BP+4)

单元中减去CL的

内容

4.SUB WORD PTR

[BX+DI+50],300

在(BX+DI+50)字

单元中减去立即

数300

微机原理指令整理7

5.SUB BX,3050H 在BX中减去立即数3050H

6.SUB AL,56 在AL中减去立即数56

带借位的减法指令SBB

在SUB的基础上再减去CF的值。适

合于多字节或多字的减法

与SUB相同

与SUB相同与SUB相同

与SUB相同与SUB相同

减量(减1)指令DEC

将目的操作数的内容(8位或16位)

减1,源操作数1隐含在操作码中。

目的操作数为寄存器或存储器,但

不能是段寄存器或立即数

与INC相同 1.DEC CL CL中的内容减1 源操作数

为1

为寄存器或

存储器;

不能是段寄

存器或立即

2.DEC AX AX中的内容减1

3.DEC BYTE PTR [BX]

(BX)存储单元内

容减1

4.DEC WORD PTR

[BX+DI+20]

(BX+DI+20)存储

器字单元内容减

1

求补指令NEG 用0去减目的操作数的内容(8位或

16位),其实质即为求取目的操作

数内容的(2的)补码

CF、PF、AF、

ZF、SF及OF。

与SUB相同

1.NEG AL

AL中的内容求补

源操作数

为0

为寄存器或

存储器;

不能是段寄

存器或立即

2.NEG BX

BX中的内容求补

3.NEG BYTE PTR [BX]

(BX)存储单元内

容求补码

4.NEG WORD PTR [BX+SI+5]

(BX+SI+5)存储

器字单元内容求

补码

比较指令CMP 将目的操作数的内容减去源操作数

的内容,但其结果(两者之差)不

回送于目的操作数

CF、PF、AF、

ZF、SF及OF。

ZF=1,两数相

1.CMP SI,BP

SI与BP内容比

源与目的操作数不能同

时为存储器操作数

2.CMP CH,[3000] CH与(3000)存储寄存器、存寄存器或存

微机原理指令整理8

等;ZF=0,两数不等

CF=1,有借位;CF=0,无借位(无符号) SF⊕OF=1,被减数大于减数;SF⊕OF=0,被减数小于减数

单元内容比较储器或立

即数

储器;

不能是立即

3.CMP WORD PTR

[BX+DI+100],DX

(BX+DI+100)字

单元与DX内容比

4.CMP BYTE PTR

[BX+SI],40H

(BX+SI)字节单

元与立即数40H

比较

5.CMP DI,0550H

DI内容与立即数

0550H比较

6.CMP AL,80

累加器AL内容与

立即数80比较

乘法类指令无符号数

乘法指令

MUL

不影响PF、

AF、ZF、SF

只影响CF、

OF

1.MUL DL

AL与DL内容相

乘,乘积在AX中

寄存器或

存储器;

不能是立

即数(8位

或16位)

累加器AL(8

位)或AX(16

位)、DX

2.MUL CX

AX与CX内容相

乘,乘积在DX和

AX中

3.MUL BYTE PTR [SI+2]

AL与(SI+2)字节

单元内容相乘,

结果在AX中

4.MUL WORD PTR [DI]

AX与(DI)字单元

内容相乘,结果

在DX和AX中

带符号数

乘法指令

IMUL

又称整型数乘法,即被乘数与乘数

都是有符号的整数

不影响PF、

AF、ZF、SF

只影响CF、

1.IMUL BL

AL中的带符号数

与BL中的带符号

数相乘,乘积在

寄存器或

存储器;

不能是立

累加器AL(8

位)或AX(16

位)、DX

微机原理指令整理9

微机原理指令整理

10

OF AX 中

即数(8位

或16位)

2.IMUL DX

AX 中的带符号数与DX 中的带符号数相乘,乘积在DX 和AX 中

3.IMUL BYTE PTR [BX]

AL 中的带符号数与(BX)字节单元

中的带符号数相乘,乘积在AX 中

4.IMUL WORD PTR [BX+SI+5]

AX 中的带符号数与(BX+SI+5)字单元中的带符号数相乘,乘积在DX 和AX 中

除法

指令

无符号数除法指令 DIV

不影响CF 、PF 、AF 、ZF 、SF 及OF

1.DIV BL AX 内容除以BL 内容,商在AL ,余数在AH 寄存器或存储器; 不能是立即数(8位或16位) 累加器AX (16位)或DX 、AX (前者高16位,后者低16

位,共32位,DX 看做AX 的扩展) 2.DIV BX

DX 与AX 内容除以BX 内容,商在AX ,余数在DX

3.DIV BYTE PTR [3040]

AX 内容除以

(3040)字节单元内容,商在AL ,

余数在AH 4.DIV WORD PTR [DI]

DX 与AX 内容除

以(DI)字单元内容,商在AX,余数在DX

有符号数除法指令IDIV

不影响CF、

PF、AF、ZF、

SF及OF

1.IDIV CL

AX与CL符号数

相除,商在AL,

余数在AH

寄存器或

存储器;

不能是立

即数(8位

或16位)

累加器AX

(16位)或

DX、AX(前

者高16位,

后者低16

位,共32

位,DX看做

AX的扩展)

2.IDIV BX

DX、AX与BX符号

数相除,商在AX,

余数在DX

3.IDIV BYTE PTR [SI]

AX与(SI)字节单

元符号数相除,

商在AL,余数在

AH

4.IDIV WORD PTR [5500H]

DX、AX与(5500H)

字单元符号数相

除,商在AX,余

数在DX

号扩展类指令字节扩展

成字指令

CBW

为单字节指令。执行CBW时,将AL

中的最高位(符号位)扩展到AH中,

亦即AH中每一位的值与AL中的符

号位相同。当AL<80H,为正数,执行

CBW后,AH=00H;当AL>=80H,为负

数,执行CBW后,AH=FFH=-1(补码)

字扩展成

双字指令

CWD

执行CWD,将AX中的最高位(符号

位)扩展到DX中,亦即DX中每一

微机原理指令整理11

位的值与AX中的符号位相同。当AX<8000H,为正数,执行CWD后,DX=0000H;当AX>=8000H,为负数,执行CWD后,DX=FFFFH=-1(补码)

十进制调整类指令加

加法

ASCII

调整

指令

AAA

针对两个非组合BCD码相加在AL中

的结果,将其调整为BCD码。被调

整的操作数隐含在AL中,调整后的

正确结果在AH和AL即AX中

只影响AF、

CF,对PF、

SF、ZF及OF

无影响

加法

的十

进制

调整

指令

DAA

针对两个组合BCD码相加在AL中的

结果,将其调整为BCD码。被调整

的操作数隐含在AL中,调整后的正

确结果仍在AL中

影响AF、CF、

PF、SF和ZF,

对OF无影响

减法

ASCII

调整

指令

AAS

两个非组合BCD码相减在AL中的结

果,若低4位大于9或AF=1(此处

表示向高4位借位),就从AL中减

去6,从AH中减去1,CF=1(此处表

示AL从AH借位);AL减6后再和

OFH相“与”,调整的结果在AL中,

其高4位为0,低4位为0-9之间的

一个数,即为正确的非组合BCD码

只影响AF、

CF,对PF、

SF、ZF及OF

无影响

减法

的十

进制

调整

DAS

两个组合BCD码相减在AL中的结

果,若低4位大于9或AF=1,则低

4位减6(06H),AF=1;若高4位

大于9亦即(AL&F0H)>90H或CF=1,

影响AF、CF、

PF、SF和ZF,

对OF无影响

微机原理指令整理12

指令则高4位减6,亦即AL-60H,CF=1 乘

法的十进制调整乘法

ASCII

调整

指令

AAM

将被乘数和乘数均转换为非组合

BCD码,其乘积也要求是非组合BCD

码放在AX中

影响PF、SF

及ZF,不影

响AF、CF及

OF

法的十进制调整除法

ASCII

调整

指令

AAD

将被除数和除数均转换为非组合

BCD码,其商也要求是非组合BCD码

放在AL中,余数也要求是非组合BCD

码放在AH中。但在做除法之前,先

对AX中的被除数的非组合BCD码进

行ASCII调整,其指令为AAD

影响PF、SF

及ZF,不影

响AF、CF及

OF

辑运算指令取反(逻

辑非)指

NOT 执行该指令时,对操作数取反

使CF=0、

OF=0;

影响PF、ZF

及SF;

对AF不确定

1.NOT BL

BL内容取反,结

果在BL中

操作数只有一个,可以

是寄存器或存储器操作

数,但不能是立即数

2.NOT AX

AX内容取反,结

果在AX中

3.NOT BYTE PTR [2000H]

(2000H)单元内

容取反,结果在

2000H中

逻 4.NOT WORD PTR [SI+2] (SI+2)字单元内

微机原理指令整理13

容取反,结果“与”(逻

辑乘)指

令AND

将源操作数和目的操作数相“与”,

结果存入目的操作数。相“与”时,

两数对应位均为1,则该结果为1,

其他情况下均为0

与NOT相同

1.AND CX,DI

DI和CX内容相

“与”,结果在

CX中

寄存器、存

储器或立

即数

寄存器、存

储器或单独

列出的累加

器(也可含

在寄存器

中),但

不能为立即

数(因为不

能存放结

果)

2.AND DH,[2000]

(2000)字节单元

和DH内容相

“与”,存入

(DI+4)字单元

3.AND WORD PTR [DI+4],DX

DX和(DI+4)字单

元内容相“与”,

存入(DI+4)字单

4.AND BYTE PTR

[BX+10],50

50和(BX+10)字

节单元内容相

“与”,存入

(BX+10)字节单

5.AND BL,01100110B

66H和BL内容相

“与”,存入AX

6.AND AX,3344H

3344H和AX内容

相“与”,存入

AX

“或”(逻

辑和)指

令OR

将源操作数和目的操作数相“或”,

结果存入目的操作数。用1去相“或”

时,该位结果为1,起到置位的作用;

与AND相同

格式与AND相同

与AND相同与AND相同

微机原理指令整理14

而用0去相“或”时,则保留原来位的结果

“异或”指令XOR

将源操作数与目的操作数取“异

或”,结果存入目的操作数。用1

去“异或”时,使对应位取反;而

用0去“异或”时,则保留原来位

的结果(对应位相同,结果为0;对

应位不同,结果为1)

与AND相同

格式与AND相同

与AND相同与AND相同

测试指令TEST 将源操作数与目的操作数相“与”,

但结果不送回到目的操作数。依据

对ZF(最低位是否为0,是,为1,

否则为0)、SF(最高位是否为1,

是,为1,否则为0)的判断,来决

定程序转移是否

与AND相同与AND相同与AND相同与AND相同

位指令逻辑左移

指令

SHL

对无符号数而言,左移1位相当于

乘以2,左移若干位相当于乘以2的

幂次。但当CF首次出现1(表示已

到扩展位)之后,便不遵循此规则

影响CF、PF、

ZF、SF及OF;

对AF不确定

1.SHL AH,1 AH内容左移1位寄存器或存

储器,

其内容可以

是8位或16

位,、

但不能为立

即数

2.SHL CX,1 CX内容左移1位

3.MOV CL,4

4.SHL DL,CL DL内容左移4位

5.SHL AX,CL AX内容左移4位

6.SHL BYTE PTR [DI+2],1

(DI+2)字节单元

内容左移1位

7.SHL WORD PTR

[BX+100],1

(BX+100)字单元

内容左移1位

8.MOV CL,3

9.SHL BYTE PTR [1000] (1000)字节单元

微机原理指令整理15

微机原理全部指令用法

一.机械码,又称机器码. ultraedit打开,编辑exe文件时你会看到 许许多多的由0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F组成的数码,这些数码 就是机器码. 修改程序时必须通过修改机器码来修改exe文件. 二.需要熟练掌握的全部汇编知识(只有这么多) 不大容易理解,可先强行背住,混个脸儿熟,以后慢慢的就理解了 cmp a,b 比较a与b mov a,b 把b的值送给a ret 返回主程序 nop 无作用,英文“no operation”的简写,意思是“do nothing”(机器码90)***机器码的含义参看上面 (解释:ultraedit打开编辑exe文件时你看到90,等同于汇编语句nop) call 调用子程序 je 或jz 若相等则跳(机器码74 或0F84) jne或jnz 若不相等则跳(机器码75或0F85) jmp 无条件跳(机器码EB) jb 若小于则跳 ja 若大于则跳 jg 若大于则跳 jge 若大于等于则跳 jl 若小于则跳 jle 若小于等于则跳 pop 出栈 push 压栈 三.常见修改(机器码) 74=>75 74=>90 74=>EB 75=>74 75=>90 75=>EB jnz->nop 75->90(相应的机器码修改) jnz -> jmp 75 -> EB(相应的机器码修改) jnz -> jz 75->74 (正常) 0F 85 -> 0F 84(特殊情况下,有时,相应的机器码修改) 四.两种不同情况的不同修改方法 1.修改为jmp je(jne,jz,jnz) =>jmp相应的机器码EB (出错信息向上找到的第一个跳转)jmp的作用是绝对跳,无条件跳,从而跳过下面的出错信息

微机原理之名词解释

CPU:中央处理器,是一台计算机的运算核心和控制核心 EU:执行部件,负责指令的译码、执行和数据的运算 BIU:总线接口部件,管理CPU与系统总线的接口,负责CPU对存储器和外设进行访问 IP:指令指针寄存器,指示主存储器指令的位置 SP:堆栈指示寄存器,指示堆栈栈顶的位置(偏移地址) CS:代码段寄存器,指示当前代码段的起始位置 DS:数据段寄存器,指示当前数据段的起始位置 SS:堆栈段寄存器,指示当前对战短的起始位置 时钟周期:CLK时钟信号的周期,是CPU的最小时间单位,也叫T状态 总线周期:CPU通过系统总线对存储器或接口进行一次访问的时间 指令周期:完整执行一条指令所用时间 段寄存器:是因为对内存的分段管理而设置的,8086/8088具有4个16位段寄存器:CS、DS、SS、ES 字节:相邻八位二进制数 物理地址:1MB存储区域中某一单元的实际地址 逻辑地址:由段基地址和偏移地址(偏移量)组成,存储单元的地址可以用段基地址和段内偏移量来表示,段基地址确定它所在的段居于整个存储空间的位置,偏移量确定它在段内的位置,这种地址表 示方式称为逻辑地址 BCD码:用四位二进制数表示一位十进制的编码 ASCII码:由8位二进制数组成,用来表示26个英文大小写字母以及一些特殊符号,便于计算机的识别的一种编码 堆栈:一种数据项按序排列的数据结构,采用“先进后出”或“后进先出”的存取操作方式 汇编程序:把汇编语言书写的程序翻译成与之等价的机器语言程序的翻译程序 指示性语句:不可执行语句,汇编时不产生目标代码,用于指示汇编程序如何编译源程序 指令性语句:可执行语句,在汇编中要产生相应的目标代码,CPU根据这些代码执行相应操作 伪指令:即指示性语句 OFFSET:返回变量或标号的偏移地址 ASSUME:明确段寄存器与逻辑段之间的关系 SEGMENT:定义一个逻辑段,并给逻辑段赋予一个段名 ORG:控制位置计数器,把表达式的值赋给当前位置计数器$ RAM:随机存取存储器,CPU可对RAM的内容进行随机的读写访问 ROM:只读存储器,存储器的内容只能随机的读出而不能写入 EPROM:用紫外光擦除,擦除后可编程,允许用户多次擦除和编程的只读存储器 接口:CPU和存储器、外部设备或者两种外部设备,或者两种机器之间通过系统总线进行连接的逻辑部件(或称电路),它是CPU与外界进行信息交换的中转站,是CPU与外界交换信息的通道 I/O 端口:输入输出端口,用于CPU和外部设备连接和数据交换的接口,能被指令直接寻址的输入输出口 I/O 端口独立编址:从存储空间划出一部分地址空间给I/O设备,把I/O接口中的端口当作存储器单元一样进行访问,不设置专门的I/O指令的编址方式,也称存储器映射编址 I/O 端口统一编址:对接口中的端口单独编址而不占用存储空间,使用专门的I/O指令对端口进行操作的编址方式,也叫I/O映射编址 总线:连接两个以上数字系统元器件的信息通路,是传递信息的一组共用信号线(导线) 中断:指计算机在执行程序的过程中,当出现异常情况或特殊请求时,计算机停止现行程序的运行,转向对这些异常情况或特殊请求的处理,处理结束后再返回现行程序的间断处,继续执行原程序。 中断源:引起中断的原因或发出中断申请的来源 软件中断:CPU执行指令引起的中断

微机原理指令整理..

类别指 令 类 型 指令名称指令缩写指令功能影响标志格式格式含义源操作数目的操作数 传送指令通 用 传 输 指 令 基本传输 指令 MOV 将源操作数中的数据传送至目的操 作数,以实现寄存器与寄存器、寄 存器与存储器之间数据传送以及立 即数送往寄存器或存储器 无 1.MOV WORD PTR [2000],AX 将AX送2000和 2001单元(低位 在低地址,高位 在高地址,下同) 至少有一个是寄存器 (除立即数送存储器 外); 不能在两个存储单元之 间直接传送数据; 不能在两个段寄存器之 间直接传送数据; 不能将立即数直接送至 段寄存器;SS和SP赋 值必须紧邻 指令指针IP既不作目 的操作数也不做源操作 数 2.MOV AX,ES:[BX+SI+50] 将ES段 (BX+SI+50)字 单元内容送AX 3.MOV SS,BX 将BX内容送SS 4.MOV ES,SS:[DI+200] 将SS段(DI+200) 字单元内容送ES 5.MOV BX,CX 将CS内容送BX 6.MOV WORD PTR [BX+DI],SS 将SS内容送 (BX+DI)字单元 CS不能作目 的操作数; 立即数不能 作目的操作 数 7.MOV CL,DH 将DH内容送CL 8.MOV DI,[SI+100] 将(SI+100)字 单元内容送DI 9.MOV WORD PTR [DI],DX 将DX内容送(DI) 字单元 10.MOV CX,3330 立即数3330送 微机原理指令整理 1

微机原理指令整理 2 CX 11.MOV BYTE PTR [DI],0 立即数0送(DI) 字节单元 堆栈操作 指令 PUSH 将来自通用寄存器、段寄存器或存储单元的一个字(16位)内容压入堆栈(SP 指向的栈顶个单元) 无 1.PUSH AX AX 内容进栈 通用寄存器、段寄存器、存储单元的一个字 CS 不能作目的操作数; 2.PUSH SI SI 内容进栈 3.PUSH ES ES 内容进栈 4.PUSH CS CS 内容进栈 5.PUSH WORD PTR [BX] (BX)和(BX+1)单元内容进栈 6.PUSH WORD PTR BETA [BX] (BX+BETA)字单元内容进栈 不能使用8位源或目的操作数 POP 将栈顶个单元的内容退出(弹出)到通用寄存器、段寄存器或存储单元 无 1.POP BX 栈顶2个字节出栈到BX 不能使用8位源或目的操作数 2.POP DX 栈顶2个字节出栈到DX 通用寄存器、段寄存器、存储单元的一个字节; CS 不能作目的操作数 3.POP ES 栈顶2个字节出栈到ES 4.POP SS 栈顶2个字节出栈到SS 5.POP [BX+50] 栈顶2个字节出栈到(BX+50)字单元 6.POP [BP+DI] 栈顶2个字节出栈到(BP+DI )字单元

微机原理指令汇总情况

我现将指令系统中各种助记符的英文全名写出来,各种助记符的记忆就会变得很简单o(∩_∩)o... 在这之前,先说一下寄存器: 数据寄存器分为: AH&AL=AX(accumulator):累加寄存器,常用于运算;在乘除等指令中指定用来存放操作数,另外,所有的I/O指令都使用这一寄存器与外界设备传送数据. BH&BL=BX(base):基址寄存器,常用于地址索引; CH&CL=CX(count):计数寄存器,常用于计数;常用于保存计算值,如在移位指令,循环(loop)和串处理指令中用作隐含的计数器. DH&DL=DX(data):数据寄存器,常用于数据传递。他们的特点是,这4个16位的寄存器可以分为高8位: AH, BH, CH, DH.以及低八位:AL,BL,CL,DL。这2组8位寄存器可以分别寻址,并单独使用。 另一组是指针寄存器和变址寄存器,包括: SP(Stack Pointer):堆栈指针,与SS配合使用,可指向目前的堆栈位置; BP(Base Pointer):基址指针寄存器,可用作SS的一个相对基址位置; SI(Source Index):源变址寄存器可用来存放相对于DS段之源变址指针; DI(Destination Index):目的变址寄存器,可用来存放相对于ES 段之目的变址指针。 指令指针IP(Instruction Pointer) 标志寄存器FR(Flag Register) OF(overflow flag) DF(direction flag) CF(carrier flag) PF(parity flag) AF(auxiliary flag) ZF(zero flag) SF(sign flag) IF(interrupt flag) TF(trap flag) 段寄存器(Segment Register)

微机原理[第三版]课后练习答案解析

1 思考与练习题 一、选择题 1.计算机硬件中最核心的部件是( )。C A.运算器 B.主存储器 C.CPU D.输入/输出设备 2.微机的性能主要取决于( )。 A (B——计算机数据处理能力的一个重要指标) A.CPU B.主存储器 C.硬盘 D.显示器 3.计算机中带符号数的表示通常采用( )。C A.原码 B.反码 C.补码 D.BCD码 4.采用补码表示的8位二进制数真值范围是( )。C A.-127~+127 B.-1 27~+128 C.-128~+127 D.-128~+128 5.大写字母“B”的ASCII码是( )。B A.41H B.42H C.61H D.62H 6.某数在计算机中用压缩BCD码表示为10010011,其真值为( )。C A.10010011B B.93H C.93 D.147 二、填空题 1.微处理器是指_CPU_;微型计算机以_CPU_为核心,配置_内存和I/O接口_构成;其特点是_(1)功能强 (2)可靠性高 (3)价格低 (4)适应性强 (5)体积小 (6)维护方便_。P8 P5 2.主存容量是指_RAM和ROM总和_;它是衡量微型计算机_计算机数据处理_能力的一个重要指标;构成主存的器件通常采用_DRAM和PROM半导体器件_。P5 P9 3.系统总线是_CPU与其他部件之间传送数据、地址和控制信息_的公共通道;根据传送内容的不同可分成_数据、地址、控制_3种总线。P9 4.计算机中的数据可分为_数值型和非数值型_两类,前者的作用是_表示数值大小,进行算术运算等处理操作_;后者的作用是_表示字符编码,在计算机中描述某种特定的信息_。P12 5.机器数是指_数及其符号在机器中加以表示的数值化_;机器数的表示应考虑_机器数的范围、机器数的符号、机器数中小数点位置_3个因素。P15 P16 6.ASCII码可以表示_128_种字符,其中起控制作用的称为_功能码_;供书写程序和描述命令使用的称为_信息码_。P18 P19 三、判断题 1.计算机中带符号数采用补码表示的目的是为了简化机器数的运算。( )√ 2.计算机中数据的表示范围不受计算机字长的限制。( )× 3.计算机地址总线的宽度决定了内存容量的大小。( )√ 4.计算机键盘输入的各类符号在计算机内部均表示为ASCII码。( )× (键盘与计算机通信采用ASCII码) 2 思考与练习题 一、选择题 1.在EU中起数据加工与处理作用的功能部件是( )。A A.ALU B.数据暂存器 C.数据寄存器 D.EU控制电路 2.以下不属于BIU中的功能部件是( )。 B A.地址加法器 B.地址寄存器 C.段寄存器 D.指令队列缓冲器

微机原理指令合集

地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断(INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src)比较指令:CMP dst,src(相减但不送回目的操作数,结果都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量)段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回:RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则循环) LOOPZ/LOOPE OPRD 地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计 数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位 向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为 1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断 (INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例: MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src) 比较指令:CMP dst,src(相减但不送回目的操作数,结果 都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作 数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字 将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着 的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的 一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指 令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量) 段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向 SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向 SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回: RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则 循环) LOOPZ/LOOPE OPRD 地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计 数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位 向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为 1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断 (INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例: MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src) 比较指令:CMP dst,src(相减但不送回目的操作数,结果 都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作 数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字 将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着 的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的 一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指 令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量) 段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向 SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向 SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回: RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则 循环) LOOPZ/LOOPE OPRD 地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计 数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI 目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位 向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为 1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断 (INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址: 直接寻址:MOV AX,[2000H] 寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 寄存器相对寻址:MOV AX,COUNT[SI] 例: MOV BP:[DI+45H] 基址加变址寻址:MOV AX, [SI+BP] 相对基址加变址寻址指令MOV AX, [SI+BP+1234H] 指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLA T[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src) 比较指令:CMP dst,src(相减但不送回目的操作数,结果 都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作 数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字 将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0) 移位指令 算术左移指令SAL dst, CL;移位位数 逻辑左移指令SHL dst ,CL;移位位数 算术右移指令:SAR dst ,CL;移位位数 逻辑右移指令:SHR dst,CL ;移位位数 循环移位指令: 循环左移指令:ROL dst,CL;移位位数 循环右移指令:ROR dst,CL;移位位数 带进位循环左移:RCL dst,CL;移位位数 带进位循环右移:RCR dst,CL;移位位数 串操作指令: 串传送指令:MOVS/W 串比较指令:CMPSB/W 串搜索指令:SCASB/W 取串指令:LODS/W 存串指令:STOSB/W 重复前缀指令:REP SOPR 重复执行REP指令后紧跟着 的一个串操作指令,知直到CX寄 存器中的值为0 REPE/REPZ执行REPE/REPZ后紧跟的 一个串操作指令,当相等、为0时重复,直到CX=0/ZF=0 REPNE/REPNZ 执行REPNE/REPNZ后紧跟的串操作指 令当不为0、不相等时重复,直到CX=0/ZF=0 转移指令: 远程转移:JMP FAR PTR OPRD(IP=IP+16位移量) 近程转移:JMP NEAR PTR OPRD (IP=IP+8位移量) 段内间接转移:JMP reg16 JMP men16 (IP)←reg16或men16 段间间接转移:JMP DWORD PTR [BX+SI] 调用和返回指令: 段内直接调用:CALL dst(SP=SP-2,SP+1,IP指向 SP,IP=IP+16 段内直接调用:CALL dst (同,同,EA指向IP) 段间直接调用:CALL dst(SP=SP-2,SP+1,CS指向 SP,SP=SP-2,SP+1,IP指向SP, 偏移地址指向IP,段地址指向CS) 段间间接调用:CALL dst 段内返回: RET(IP=SP+1,SP,SP=SP+2) 段内带立即数返回:RET n 循环控制指令: LOOP OPRD(CX=CX-1,若CX≠0则循环 LOOPNZ/LOOPE OPRD(CX=CX-1,若CX≠0ZF=0则 循环) LOOPZ/LOOPE OPRD

微机原理简答

1.一般微处理器内部结构由哪三部分组成?P6 运算器(算术逻辑单元),控制器,内部寄存器 2.接口按功能可分为那几类?P242 通用接口和专用接口 3.3.接口的主要功能有那几种?P243 缓冲锁存数据,地址译码,传送命令,码制转换,电平转换 4.典型的微机硬件结构是用什么将各部位连接起来的? 总线 5.什么是计算机的位长?P8 计算机数据总线上一次能处理的信息的位数即位长 6.什么是CPU总线的带宽?P23 总线的带宽是指总线能同时传输的数据位数量 7.什么是CPU总线的工作频率?P23 用于协调总线上各种操作的时钟频率 8.什么是Intel8086指令的直接寻址方式?P77 指令中以位移量方式直接给出操作数的有效地址EA 9.64*1bit的DRAM芯片通常有多少个地址线引脚和数据线引脚? 6地址线引脚和1数据线引脚 10.Intel8086系统中条件转移指令的转移范围有什么限制? -128—127 11.中断向量表: 也称中断入口地址表。该表说明了中断类型号和中断服务程序的入口地址之间的联系。P235 12.中断:就是使CPU暂停运行原来的程序,按照更为急迫事件的需要转去执行为中断源服务的程序,待该程序处理完后,再返回运行原程序,此即中断。P223 13.总线:是用来传送信息的公共导线,可分为数据总线,地址总线,控制总线。P4??? 14.有效地址:表示所寻址的地址单元距离段起地址的之间的偏移字节的多少,也称偏移地址。P69 15.指令周期:指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,是从取指令、分析指令到执行完所需的全部时间。百度百科。P10

微机原理常用命令

一、数据传输指令 它们在存贮器和寄存器、寄存器和输入输出端口之间传送数据。 1. 通用数据传送指令 MOV 传送字或字节. MOVSX 先符号扩展,再传送. MOVZX 先零扩展,再传送. PUSH 把字压入堆栈. POP 把字弹出堆栈. PUSHA 把AX,CX,DX,BX,SP,BP,SI,DI依次压入堆栈. POPA 把DI,SI,BP,SP,BX,DX,CX,AX依次弹出堆栈. PUSHAD 把EAX,ECX,EDX,EBX,ESP,EBP,ESI,EDI依次压入堆栈. POPAD 把EDI,ESI,EBP,ESP,EBX,EDX,ECX,EAX依次弹出堆栈. BSWAP 交换32位寄存器里字节的顺序 XCHG 交换字或字节.( 至少有一个操作数为寄存器,段寄存器不可作为操作数) CMPXCHG 比较并交换操作数.( 第二个操作数必须为累加器AL/AX/EAX ) XADD 先交换再累加.( 结果在第一个操作数里) XLAT 字节查表转换. ── BX 指向一张256 字节的表的起点, AL 为表的索引值(0-255,即 0-FFH); 返回AL 为查表结果. ( [BX+AL]->AL ) 2. 输入输出端口传送指令. IN I/O端口输入. ( 语法: IN 累加器, {端口号│DX} ) OUT I/O端口输出. ( 语法: OUT {端口号│DX},累加器) 输入输出端口由立即方式指定时, 其范围是0-255; 由寄存器DX 指定时, 其范围是0-65535. 3. 目的地址传送指令. LEA 装入有效地址. 例: LEA DX,string ;把偏移地址存到DX. LDS 传送目标指针,把指针内容装入DS. 例: LDS SI,string ;把段地址:偏移地址存到DS:SI. LES 传送目标指针,把指针内容装入ES. 例: LES DI,string ;把段地址:偏移地址存到ES:DI. LFS 传送目标指针,把指针内容装入FS. 例: LFS DI,string ;把段地址:偏移地址存到FS:DI. LGS 传送目标指针,把指针内容装入GS. 例: LGS DI,string ;把段地址:偏移地址存到GS:DI. LSS 传送目标指针,把指针内容装入SS. 例: LSS DI,string ;把段地址:偏移地址存到SS:DI.

微机原理指令集合

微机原理8086 指令集合 地址总线:AB(单向输出) 数据总线:DB(双向总线) 控制总线:CB(输出输入或双向) 4个16位数据寄存器:AX累加器.BX基址寄存器.CX计数寄存器.DX数据寄存器 高八位记作:AH.BH.CH.DH低八位ALBLCLDL 指针寄存器:SP 堆栈指针寄存器BP基址指针寄存器 变址寄存器:SI 源变址寄存器(源操作数偏移地址)DI目的变址寄存器 进位标志位:CF最高位 奇偶标志位:PF 低8位1的个数为偶时为1 辅助进位标志位:AF低4位向高4为有进位时 零标志位:ZF算术逻辑运算为零时为1 符号标志位:SF运算结果最高位为1时为1 溢出标志位:OF结果超出有符号数补码表示的范围时为1 跟踪标志位:TF单步中断方式逐条检查 方向标志位:DF 中断允许标志位:IF为1时CPU可以响应可屏蔽中断(INTR)请求 立即数寻址:MOV BL,5BH 寄存器寻址:MOV DS,AX 存储器寻址:1直接寻址:MOV AX,[2000H] 2寄存器间接寻址:MOV AX,[BP] 操作数有效地址在BX,BP,SI,DI,当在BX ,SI,DI中 默认DS为基址,在BP中默认SS为基址 3寄存器相对寻址:MOV AX,COUNT[SI] 例:MOV BP:[DI+45H] 4基址加变址寻址:MOV AX, [SI+BP] 5相对基址加变址寻址指令MOV AX, [SI+BP+1234H]

指令 数据传送指令MOV dst,src 交换指令:XCHG dst,src 查表指令:XLAT[表首址]DS:(BX+AL)给AL 堆栈传送指令:PUSH src 取偏移地址指令;LEA dst,src 指针送寄存器和DS:LDS dst,src 指针送寄存器和ES:LES dst,src 标志传送指令:LAHF SAHF PUSHF POPF 输入、输出指令:IN.OUT 加法指令:ADD dst,src 带进位加法指令:ADC dst,src (CF也要加) 加1指令:INC dst 减法指令:SUB dst,src 带借位减法指令:SBB dst,src(也要减CF) 减1指令:DEC src111 求补指令:NEG src (0减src) 比较指令:CMP dst,src(相减但不送回目的操作数,结果都不变) 乘法指令:MUL src 字节操作数:AL*src给AX 字操作数:AX*src给AX 带符号数乘法指令:IMUL src 字运算AX字节运算AL 除法指令:DIV src 字节将AX/src给AL余数该AH 字将(DX,AX)/src给AX 余数给DX 带符号数除法指令:IDIV src CBW 将字节转换为字CWD将字转换为字节 逻辑运算: 逻辑与:AND dst,src 逻辑或:OR dst,src 非:NOT dst 异或:XOR dst,src 测试:TEST dst,src(测试判断某些位知否同时为0)

微机原理 debug指令详解

微机原理debug指令详解 一、DEBUG概述 DEBUG是在DOS状态下面供程序员使用的程序调试工具。它可以用来检查内存中任何地址中的内容以及修改特定地址中的内容。DEBUG还可以用于逐指令执行某个程序,追踪程序的执行过程,比较一条指令执行前后数值变化情况,读写文件与磁盘扇区。此外,DEBUG 还可以用于读写端口中的数值。 在DEBUG状态下,所有数据都作为字节序列,可以用DEBUG把任何类型的文件读入内存中。DEBUG能够处理的数据为两种: 十六进制数和ASCⅡ码,使用两位数表示十六进制数据(0~9,A~F)。在DEBUG中涉及内存中的数据时,要指定数据所在的内存单元的地址,地址的输入格式是: [段地址]: [位移]。如果没有输入地址,DEBUG将假定为当前内存段,从位于地址100H的字节开始。前100H字节保留给程序段前缀使用(称PSP结构,包含程序执行的各种信息),该区域用于建立DOS与程序之间的联系。在DEBUG中,使用四位十六进制数表示地址(0~9,A~F)。 DEBUG输入数据时有两种方法: 提示方法和非提示方法。在提示方法下,输入要求输入数据的命令,后跟保存数据的地址。执行后可以看到该地址中已有的内容及一个冒号提示符。此时可以在提示符下输入一个新的值或者按下回车键或CTRL+C回到“—”提示符。在非提示方法下,输入保持数据的内存地址以及要输入的数据。DEBUG的启动:进入DOS 状态下,键入DEBUG ?,按ENTER键,如: C:\>DEBUG ?,则屏幕显示:- 符号“-”是进入DEBUG的提示符,在该提示符下可键入任意DEBUG命令。 DEBUG的退出: 在DEBUG的提示符后输入Q命令,按ENTER键,则退出DEBUG返回DOS。 DEBUG的使用: 在DEBUG的提示符后输入DEBUG命令,按ENTER键。 二、DEBUG 命令详解 ★A命令 格式:A[地址] 功能:将指令直接汇编成机器码输入到内存中。 参数说明:[地址]指定存放键入汇编语言指令的内存单元的位置。 ★C命令 格式:C[源地址范围][目的地址] 功能:比较两内存区域中的内容是否相同。若不同则按字节显示其地址和内容,若相同则不

微机原理与接口技术汇编语言指令详解吐血版

第一讲 第三章 指令系统--寻址方式 回顾: 8086/8088的内部结构和寄存器,地址分段的概念,8086/8088的工作过 程。 重点和纲要:指令系统--寻址方式。有关寻址的概念;6种基本的寻址方式及 有效地址的计算。 教学方法、实施步骤 时间分配 教学手段 回 顾 5”×2 板书 计算机 投影仪 多媒体课件等 讲 授 40” ×2 提 问 3” ×2 小 结 2” ×2 讲授内容: 3.1 8086/8088寻址方式 首先,简单讲述一下指令的一般格式: 操作码 操作数 …… 操作数 计算机中的指令由操作码字段和操作数字段组成。 操作码:指计算机所要执行的操作,或称为指出操作类型,是一种助记符。 操作数:指在指令执行操作的过程中所需要的操作数。该字段除可以是操作数本身外,也可以是操作数地址或是地址的一部分,还可以是指向操作数地址的指针或其它有关操作数的信息。 寻址方式就是指令中用于说明操作数所在地址的方法,或者说是寻找操作数有效地址的方法。8086/8088的基本寻址方式有六种。 1.立即寻址 所提供的操作数直接包含在指令中。它紧跟在操作码的后面,与操作码一起放在代码段区域中。如图所示。 例如:MOV AX ,3000H

立即数可以是8位的,也可以是16位的。若是16位的,则存储时低位在前,高位在后。 立即寻址主要用来给寄存器或存储器赋初值。 2.直接寻址 操作数地址的16位偏移量直接包含在指令中。它与操作码—起存放在代码段区域,操作数一般在数据段区域中,它的地址为数据段寄存器DS加上这16位地址偏移量。如图2-2所示。 例如: MOV AX,DS:[2000H]; 图2-2 (对DS来讲可以省略成 MOV AX,[2000H],系统默认为数据段)这种寻址方法是以数据段的地址为基础,可在多达64KB的范围内寻找操作数。 8086/8088中允许段超越,即还允许操作数在以代码段、堆栈段或附加段为基准的区域中。此时只要在指令中指明是段超越的,则16位地址偏移量可以与CS或SS或ES相加,作为操作数的地址。 MOV AX,[2000H] ;数据段 MOV BX,ES:[3000H] ;段超越,操作数在附加段 即绝对地址=(ES)*16+3000H 3.寄存器寻址 操作数包含在CPU的内部寄存器中,如寄存器AX、BX、CX、DX等。 例如:MOV DS,AX MOV AL,BH 4.寄存器间接寻址 操作数是在存储器中,但是,操作数地址的16位偏移量包含在以下四个寄

相关主题
文本预览
相关文档 最新文档