搜档网
当前位置:搜档网 › 8086CPU指令系统

8086CPU指令系统

8086CPU指令系统
8086CPU指令系统

第三章 8086CPU指令系统

本章重点:

1.寻址方式:

立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,基址寻址,变址寻址,基址加变址寻址,串寻址,端口寻址,隐含寻址。

2.8086指令系统:

数据传送指令,算术运算指令,移位指令,程序控制指令,串操作指令,处理器控制指令,I/O指令,中断指令。

学习目标:

1.掌握寻址方式;

2.掌握常用指令的功能和用法。

难点:

区别指令的正确与错误。

§1.寻址方式

指令在存储器中是顺序存放的,而操作数的存放没有规律,因此操作数的寻址方法相对比较复杂。

一、指令的基本格式

1.组成:

一条指令包括操作码和操作数两部分。

操作数:源操作数,目标操作数。

2.寻址方式:

寻找指令中操作数的方法。

3.操作数类型:(8086系统)

寄存器操作数,存储器操作数,立即数(在指令代码中)和I/O端口操作数。

二、寻址方式

1.立即数寻址

⑴方式:

指令中所需的操作数直接包含在指令代码中(即由指令直接提供),立即数可以是8位,也可以是16位。

例:MOV AL,80H ;将十六进制数80H送入AL

MOV AX,1090H;将1090H送AX:90H→AL ,10H→AH

⑵说明:

●采用立即数寻址方式的指令主要用来对寄存器赋值。因为操作数可以从

指令中直接取得,不需要运行总线周期,所以,其显著特点就是速度快。

●规定:立即数只能是整数,不能是小数,变量或者其他类型的数据;另

外,立即数只能作为源操作数。

2.寄存器寻址

⑴方式:

如果操作数就在CPU的内部寄存器中,那么寄存器名可在指令中指出,这种寻址方式就叫寄存器寻址。

对16位操作数来说,寄存器可以为AX,BX,CX,DX,SI,DI,SP或BP,而对8位操作数来说寄存器可以为AH……DH,AL……DL。

例:INC CX ;将CX内容加1

ROL AH,1 ;将AH中的内容循环左移1位。

⑵说明:

●不需要使用总线周期,因此,执行速度快。

●一条指令中,可以对源操作数采用寄存器寻址方式,也可对目的操作数

采用寄存器寻址方式,或两者都用。

※以下各种寻址方式,操作数都在存储器中。

3.直接寻址。

⑴方式:

数据总是在存储器中,存储单元的有效地址由指令直接指出。

例:MOV AX,[1070H];将DS段的偏移量1070H、1071H的内容装入AX。

即,若DS=2000H,则将21070H和21071H两单元的内容取出送AX。

⑵说明:

●直接寻址是对存储器进行访问时可采用的最简单的方式,且可用符号地

址代替数值地址。

●若要对其它段寄存器所指出的存储区进行直接寻址,则必须指出段寄存

器名。

例:MOV BX ,CS:[3000H];

设CS=5100H,则取54000H和54001H两单元内容送BX。

4.寄存器间接寻址

⑴方式:

将操作数所在的存储单元的偏移地址放在指令给出的寄存器中,而不像直接寻址那样直接给出。

例:MOV AX,[SI];AX←DS:[SI]

MOV [BX],AX;DS:[BX]←AX

⑵说明:

●可用于这种寻址方式的寄存器只能是SI、DI、BP和BX。

●SI,DI,BX约定的段寄存器是DS;而BP约定的段寄存器是SS。

5.基址寻址:

⑴方式:

操作数的有效地址偏移量是基址寄存器BX或基址指针BP的内容与指令给

定的位移量(8位或16位)之和。

例:MOV AX,ARRAY[BX]

等价MOV AX,[ARRAY+BX]

将DS:[BX]+ARRAY 的内容→AX

⑵说明:

●BX约定的段寄存器为DS,BP约定SS,可使用段跨越前缀。

●物理地址=16×(DS)+(BX)+位移量(8或16位)

或16×(SS)+(BP)+位移量(8或16位)

6.变址寻址

操作数的有效地址是变址寄存器SI、DI的内容与指令给定的位移量(8位或16位)之和。段寄存器约定在DS中,允许段超越。

例:MOV [DI+12H],AX;DS:[DI+12H]←AX

MOV BX,SS:[DI+45H];BX←SS:[DI+45H]

7.基址变址寻址。

⑴方式:

操作数的有效地址是指令给定的位移量和一个基址寄存器(BX或BP)及一个变址寄存器(SI或DI)的内容之和。段寄存器约定由基址寄存器决定,BX 约定DS,BP约定SS,允许段超越。

例:MOV AX,ARRAY[BX] [SI];

等价MOV AX,[BX+SI+ARRAY];

即:AX←DS:[BX+SI+ARRAY]

⑵说明:

基址寄存器BX,BP不能同时出现在一个方括号内;变址寄存器SI,DI亦如此。

8.串操作寻址方式:

用于串操作指令,其操作数虽然也在寄存器中,但不使用上述寻址方式,而是隐含地运用,SI指出源串偏移地址,DI指出目的串偏移地址。指令执行后,SI和DI的内容根据方向标志DF的值进行增减,DF=0增,DF=1减。若串操作按字节进行,增/减“1”;若串操作按字进行,增/减“2”。

●约定源串段地址在DS中,目的串段地址在ES中,不允许段超越。即

SI→DS DI→ES

例:MOVSB ;字节传送:ES:[DI]←DS:[SI]。传送完后,SI±1,DI±1。

9.I/O端口寻址:操作数在外设端口中。

⑴直接端口寻址:

指令中直接给出的8位常数是外设端口地址。(0~255)

例:IN AL,34H;AL←[34H]

OUT 34H,AL;[34H]←AL

⑵间接端口寻址:指令中外设端口的16位地址在DX中。

例:MOV DX,280H

IN AX,DX;AX←[280H]

§2 指令系统

目前在微机上常见的汇编语言是MASM(Macro Assembler Language 宏汇编语言),因此我们以8086/8088 MASM为主要介绍内容,也涉及一些MASM 5.0,MASM 6.0等版本内容。

OPR 指令助记符

SRC 源操作数

DEST 目的操作数

零操作数在指令中隐含指明了操作数所处的地方。

一、传送类指令

1.数据传送指令(MOVE)

⑴格式:MOV DEST ,SRC (不区分大小写)

⑵功能:

可以进行字节数据传递,也可以进行字数据传送。但SRC和DEST的长度必须一致,不能一个是字节数据,而另一个是字数据。

⑶举例:

①CPU通用寄存器之间传递

MOV CL,AL;8bit

MOV SI,AX;16bit

②通用寄存器与段寄存器之间传递。

MOV DS,AX;AX中16位→DS

MOV AX,ES;ES→AX

③通用寄存器与存储单元之间

MOV AL,[BX];D S数据段(BX)所指存储单元内容→AL

MOV [DI],AX;A X中16位数据→DS:(DI)(DI)+1

MOV [2000H],CX;CX中16位→DS:(2000H)(2001H)

④段寄存器和存储单元之间

MOV DS,[2000H];DS:[2000H] [2001H]→DS

MOV [BX][SI],CS;CS→DS:[BX]+(SI)(BX)+(SI)+1

⑤立即数到通用寄存器。

MOV SP,2000H;2000H→SP

⑥立即数到存储单元。

MOV WORD PTR[SI],4501H;4501H→DS:(SI)(SI)+1 *PTR汇编操作符与WORD一起表示字操作,因为4501H类型不确定。BYTE PTR限定字节。

⑷说明:

MOV指令数据传送方向如下图所示:

①除源操作数SRC是立即数的情况外,MOV指令中DST和SRC必须要用到一个寄存器,不允许用MOV在两个存储单元之间传送数据。若需要时,可借助一通用寄存器为桥梁,即:

MOV AL,[SI]

MOV [DI],AL

②不能用CS和IP作目的操作数,即这两个数的内容不能随便改变。

③不允许在段寄存器之间直接传送数据。

④不允许用立即数作目的操作数。

⑤不能向段寄存器送立即数,因此,对段寄存器初始化赋值时,要通过通用寄存器。

MOV AX,DATA

MOV DS,AX

2.交换指令(Exchange)

⑴格式:

XCHG DST,SRC

⑵功能:

源操作数和目的操作数两者的内容相互交换。

⑶举例;

XCHG BX,[BP] [SI]

设指令执行前:(BX)=6F30H,(BP)=0200H,(SI)=0046H,(SS)=2F00H,(2F246H)=4154H,

SRC物理地址=2F000+0200+0046=2F246

则:(BX)=4154,(2F246H)=6F30H

⑷说明:

①两个操作数必须有一个在寄存器中。即可以在寄存器之间或寄存器与存储器之间交换信息。

②不允许使用段寄存器。

③允许字或字节操作,且不影响标志位。

3.堆栈操作指令(PUSH/POP)

堆栈是以“后进先出”的原则暂存一批需要保护的数据或地址的一个特定存储区。

堆栈段段地址由SS提供,偏移地址由SP提供,SP始终指向栈顶。堆栈操作有压栈(PUSH)和出栈(POP)两种,均以字为单位。

●压栈过程:例PUSH AX

①SP←SP-1

②(SP)←AH

③SP←SP-1

④(SP)←AL

●出栈过程:例POP BX

①BL←(SP)

②SP←SP+1

③BH←(SP)

④SP←SP+1

4.标志位传送指令。

对标志位寄存器进行操作有4条指令,都是零操作数。

⑴取标志寄存器指令(Load register AH from Flag)

格式:LAHF

功能:把标志寄存器的低8位传送给AH寄存器,即把SF,ZF,AF,PF

和CF标志位分别送至AH的第7、6、4、2、0位,AH的第5、3、1位是任意的,指令对标志寄存器的各位无影响。

⑵存储标志寄存器(store register AH into Flag)

格式:SAHF

功能:把寄存器AH中的第7、6、4、2、0位的内容送至FR的SF、ZF、AF、PF、CF标志位,而FR的OF、DF、IF、TF各位不受影响。

⑶标志位进栈(Push Flag)

格式:PUSHF

功能:将FR压入堆栈。该指令首先把堆栈指针SP减2,然后将16位标志寄存的全部内容送入SP指向的堆栈顶部字单元中。FR中各标志位本身不受影响。

进栈步骤:SP←SP-1;(SP)←(FR)H

SP←SP-1;(SP)←(FR)L

※堆栈采用“后进先出”原则。

⑷标志位出栈(POP Flag)

格式:POPF

功能:将堆栈顶部的内容弹入标志寄存器。该指令首先根据SP找到堆栈顶部,并将堆栈顶部的一个字的内容送入FR,然后SP加2。FR中各标志位的状态,由从堆栈中弹出内容的相应位决定。

出栈步骤:(FR)L←(SP);SP←SP+1

(FR)H←(SP);SP←SP+1;

●PSHF和POPF一般用在子程序和中断处理程序的首尾,起保存和恢复

主程序标志的作用。

●FR中CF、DF、IF有专门指令进行修改,其余标志位都没有指令对它

们直接进行设置或修改。若要修改这些位,可首先用LAHF把含SF的

FR低8位送入AH,对AH相应位进行修改,然后用SAHF送回FR。

●对TF位修改可先用PSHF将FR压入堆栈,在堆栈中设置TF,然后用

POPF返回。

5.地址传送指令。

该指令传送的是存储单元的地址,而不是它的内容。

⑴装入有效地址(Load effective address):

①格式:LEA DST,SRC

②功能:将源操作数的有效地址(即偏移量EA)送到指定的寄存器。

③举例:

LEA BX,0F62H [BX][SI]

若指令执行前:(BX)=0400H,(SI)=003CH

则指令执行后:(BX)=0400+003C+0F62=139EH

④说明:目的操作数一定是16位的通用寄存器;此指令对FR各位无影响。

▲存放一个存储单元逻辑地址的地址指针需要4个byte,其中高16位(两个高字节)用来存放基址,低16位(两个低字节)用来存放偏移量。

⑵LDS(Load DS with Pointer)指针送寄存器和DS:

①格式:LDS DST,SRC

②功能:把源操作数指定的4个相继字节送到由指令指定的寄存器及DS寄存器中。该指令常指定SI寄存器。

③举例:

LDS SI ,[10H]

若指令执行前:(DS)=C000H,(C0010H)=0180H,(C0012H)=2000H,则指令执行后:(SI)=0180H,(DS)=2000H

⑶LES(Load ES With Pointer)指针送寄存器和ES

①格式:LES DST,SRC

②功能:把源操作数指定的4个相继字节送到由指令指定的寄存器及ES寄存器中。该指令常指定DI。

二、算术运算类指令。

1.加法指令(Addition)

⑴格式:ADD DEST ,SRC

⑵功能:目的操作数和源操作数相加,它们的和存放在目的操作数中,源操作数内容不变,即,DST←(DST)+(SRC)

⑶说明:

●DST:通用寄存器,存储器

●SRC:通用寄存器,存储器,立即数

●FR:影响CF、DF、AF、ZF、SF、OF

●两操作数不能同时为存储器操作数。

●参加运算的数可以是带符号数或无符号数。OF位用来表示带符号数的

溢出,CF位用来表示无符号数的溢出。

⑷例:

ADD AX,BX

ADD AL,CL

ADD CX,34

ADD DL,DA_BYTE

2.带进位加法指令。

格式:ADC DST ,SRC

功能:DST←(DST)+(SRC)+CF

用于双精度加法,即低16位向高16位有进位的情况,其余同ADD指令。3.加“1”指令(Increment)

⑴格式:INC DST

⑵功能:DST←(DST)+1

⑶说明:

●操作数可以是8位或16位通用寄存器或存储单元,但不能是立即数。

●FR:影响PF、AF、ZF、SF、OF;不影响CF

●这条指令一般用在循环程序中修改指针和循环次数(即用于计数器)。4.减法指令

⑴格式:SUB DST ,SRC

⑵功能;DST←(DST)-(SRC)

⑶说明:

●DST:通用寄存器,存储器

●SRC:通用寄存器,存储器,立即数

●FR:影响CF、DF、AF、ZF、SF、OF

●两操作数不能同时为存储器操作数。

●参加运算的数可以是带符号数或无符号数。OF位用来表示带符号数的

溢出,CF位用来表示无符号数的溢出。

⑷例:SUB BX,CX ;BX←(BX)-(CX)

5.带借位减法

⑴格式:SBB DST,SRC

⑵功能:DST←(DST)-(SRC)-CF

⑶说明:同SUB指令。

6.减“1”指令

⑴格式:DEC DST

⑵功能:DST←(DST)-1

⑶说明:

●操作数可以是8位或16位通用寄存器或存储单元,但不能是立即数。

●FR:影响PF、AF、ZF、SF、OF;不影响CF。

●这条指令一般用在循环程序中修改指针和循环次数。

7.求负数指令(Negative)

⑴格式:NEG DST

⑵功能:DST←0-(DST)

⑶说明:也称取补指令。

●影响:CF,PF,AF,ZF,SF,OF

8.乘法指令

⑴无符号数乘法指令:MUL SRC

功能:AX←AL*(SRC)(字节乘法)

DXAX←AX*(SRC)(字乘法)

说明:

●操作数可以是通用寄存器、存储器,不能是立即数。

●字节乘:若乘积高8位AH≠0,则CF=1,OF=1;

若乘积高8位AH=0,则CF=0,OF=0。

●字乘:若乘积高16位DX≠0,则CF=1,OF=1;

若乘积高16位DX=0,则CF=0,OF=0。

●例:MUL BX ;DXAX←AX*BX

MUL BYTE PTR [SI];AX←AL*(DS:[SI])

⑵带符号数乘法指令:IMUL SRC

功能:同MUL指令

说明:同MUL指令,但若乘法结果AH或DX(高位部分)只是低(8或16)位部分的符号扩展,则OF=0,CF=0。

9.除法指令

⑴无符号数除法指令:DIV SRC

功能:AL←AX/(SRC),余数在AH中,(字节除)

AX←DXAX/(SRC),余数在DX中(字除)

说明:若商超过AL(字节除)或AX(字除)的范围(FFH或FFFFH)时,系统会自动产生0类中断,且商和余数都不确定。其他与乘法指令同。对FR无定义。

⑵带符号数除法指令:IDIV SRC

功能:同上

说明:余数符号和被除数符号相同。

三、位操作类指令。

1.逻辑运算指令。

⑴格式:逻辑“与”:AND DST,SRC

逻辑“或”:OR DST,SRC

逻辑“异或”:XOR DST,SRC

逻辑“非”:NOT DST

⑵功能:对字节或字进行逻辑运算。主要用于字节或字中某些位的组合,分离或位设置。例:

AND AL,0FH;分离AL低4位

AND AL,F0H;分离AL高4位

OR AL,04H;AL第4位置“1”

⑶说明:

●SRC可以是寄存器,存储器或立即数。而DST只能是通用寄存器或存

储器。且二者不能同为存储器。

●运算结果均送回目的操作数。

●FR:NOT指令对FR各位无影响;其它三条指令影响相同,SF、ZF、

PF,另外,CF和OF总是置“0”,AF不确定。

2.测试指令(TEST)

格式:TEST DST,SRC

功能:与AND指令相同,但运算结果不送回DST,只根据运算结果设置FR。该指令主要用来测试一个操作数的某一位或某几位的状态。

●通常将被测试数置于DST,测试用的位模式置于SRC。

例:TEST AL,01H ;测试AL最低位是否为“1”

若AL最低位为“0”,则ZF=1;

若AL最低位为“1,则ZF=0;

3.移位/循环,移位指令

⑴算术左移SAL DST,COUNT

逻辑左移SHL DST,COUNT

←0

SAL指令相当于乘以2n,n为左移位数。

说明:

COUNT为移位次数,可以是1,若COUNT大于1时,必须放在CL 中,移位结束后,CL

值不变。因此移位位数可以是0~255,一般选0~16即可。

⑵算术右移SAR DST,COUNT

功能:

●等效于除以2n,n为右移次数。

⑶逻辑右移SHR dst,count

功能:0

⑷循环左移ROL dst ,count

功能:

⑸循环右移ROR dst, count

⑹带进位循环左移RCL dst, count

⑺带进位循环右移RCT dst count

功能:

△说明:

●每条指令只需一个操作数,可以是字或字节,也可以是寄存器或存储器

操作数。

●影响AF以外的各标志位,而AF不定;当Count= 1时,OF才有意义,

当移位前操作数的最高两位相同时,移位后OF=0;当最高两位不同时,

OF=1。

四、串操作指令

串操作指令中源操作数地址由DS:[SI]提供,目的串操作数地址由ES:[DI]提供。每条串操作数指令每次仅对串中一个字或一个字节单元进行查找,且根据DF标志自动修改SI/DI。

为了便于对串中多个字或字节单元进行串操作,指令系统设置有重复前缀,重复次数由CX中的内容确定,每执行一次,CX内容减1,而对CX的检测是在执行指令前进行的,最多64K。

1.重复前缀(Repeat)

⑴REP

功能:若CX≠0,重复执行后缀的串指令,CX←CX-1

若CX=0,重复执行结束。

例:REP MOVSB

⑵REPE/REPZ 当相等/为零时重复串操作。

功能:若CX≠0,且ZF=1,重复执行后缀的串指令,CX←CX- 1

若CX=0,或ZF=0,重复停止。

⑶REPNE/REPNZ 当不相等/不为零时重复串操作。

功能:若CX≠0,且ZF=0,重复执行后缀的串指令,CX←CX- 1

若CX=0或ZF=1,重复停止。

△说明;

●LODS、STOS、MOVS不影响FR,所以使用REP。

●CMPS、SCAS,结果要反映在FR上,所以常使用REPE/REPZ和

REPNE/REPNZ。

2.串传送:不影响FR

⑴MOVSB

功能:ES:[DI]←DS:[SI],DI←DI±1,SI←SI±1

⑵MOVSW

功能:ES:[DI]←DS:[SI],但DI←DI±2,SI←SI±2

3.串取出:不影响FR

⑴LODSB

功能:AL←DS:[SI],SI←SI±1

⑵LODSW

功能:AX←DS:[SI],SI←SI±2

4.串存入:不影响FR

⑴STOSB

功能:ES:[DI]←AL,DI←DI±1

⑵STOSW

功能:ES:[DI]←AX,DI←DI±2

5.串比较:

比较方法:将源串中的一个字或字节减去目的串中的一个字或字节,不保留相减结果,但在FR中反映。

⑴CMPSB

功能:DS:[SI]——ES:[DI]

⑵CMPSW

功能:同上,按字比较。

6.串搜索:

在目的串中查找AX或AL指定的内容。查找方法是用AX或AL的内容减去目的串中一个字或一个字节,相减结果反映在FR中。

⑴SCASB

⑵SCASW

五、循环和转移指令

1.转移指令

转移指令分为:无条件转移指令和条件转移指令

⑴无条件转移指令

格式:JMP DST

功能:使程序无条件的转移到“目标”处,“目标”通常用标号来表达。

例:JMP TARGET

TARGET:……

说明:JMP指令不影响FR。段内转移:只改变IP指针的内容,有直接寻址

和间接寻址两种;段间转移:CS、IP都改变,也分直接寻址和间接寻址两种。

①段内转移:只改IP,CS不变。

I.段内转移直接寻址:格式同上,DST只需使用符号地址。

●短转:IP←IP+8bit位移

如:JMP SHORT DST

●近转:IP←IP+16bit位移

如:JMP NEAR PTR DST

II.段内转移间接寻址:目标地址在某一个通用寄存器或某一字存储单元中。

例:JMP CX 或JMP WORD PTR[BX] 即DS:[BX]→IP

②段间转移:CS,IP都要修改

标”地址在指令中直接给出。

例:JMP FAR PTR TARGET

即TARGET所对应物理地址应为

20250H

II.段间转移间接寻址:目标地址在

一个做地址指针的双字单元中。地址指针的前2个byte存放偏移量(IP),后2个byte存放目标的段基址(CS)。

例:JMP DWORD PTR ADDR[BX]

JMP DWORD PTR [BX][SI]

⑵条件转移指令:8086共有18条

格式:JXX DST

①简单条件转移指令:10条

功能:根据单个条件(状态)标志的设置情况转移。一般适用于测试某一次运算的结果并根据其不同特征产生程序分支作不同处理的情况。

②无符号数条件转移指令:4条

功能:在条件转移指令前使用比较指令(CMP),比较两个无符号的数(A ——B),并根据比较的结果转移。

说明:

A:ABOVE 高于,B:BELOW低于,E:EQUAL 等于

③带符号数条件转移指令:4条

功能:在条件转移指令前使用比较指令(CMP),比较两个带符号数,并根据比较的结果转移。

说明:

G:Greater 大于,L:Less 小于

⑶比较指令

格式:CMP DST,SRC

功能:减法类型指令。(DST)-(SRC),其结果不送回(DST),仅根据结果设置FR。

说明:

ZF=1时,表示(DST)=(SRC)

无符号数:CF=0,表示(DST)≥(SRC);

CF=1,表示(DST)<(SRC)

有符号数:OF=SF,表示(DST)>(SRC);

OF≠SF,表示(DST)<(SRC)

2.循环指令:4条

特点:都是段内短距离相对转移指令,转移范围在-128~+127(8bit)之间;都隐含使用CX寄存器作为循环次数计数器,都需要把循环次数送给CX;执行后对FR均无影响。

⑴LOOP指令

格式:LOOP DST

功能:CX←CX-1,若CX≠0则转移到目标地址;若CX=0则顺序执行。

例:有一个首地址为ARRAY的M个字的数组,试编一程序,求出该数组的内容之和(不考虑溢出),并把结果存入TOTAL中。

MOV CX,M

MOV AX,0

MOV SI,AX START-LOOP:ADD AX,ARRAY[SI] ADD SI,2

LOOP START-LOOP MOV TOTAL,AX

⑵LOOPE/LOOPZ指令

格式:LOOPE DST 或LOOPZ DST

功能:CX←CX-1

若CX≠0,且ZF=1,则转移到目标地址;否则顺序执行。

⑶LOOPNE/LOONZ指令

格式:LOOPNE DST 或LOOPNZ DST

功能:CX←CX-1

若CX≠0,且ZF=0,则转移到目标地址;否则顺序执行。

△LOOPZ、LOOPNZ指令提供了提前结束循环的可能性。譬如,有时需要在字符串中查找一个字符,找到后可提前结束循环而不需要一查到底。

例:NEXT:……

……

CMP AL,ASCⅡSTR[SI]

LOOPNE NEXT

……

⑷JCXZ 指令 格式:JCXZ DST

功能:若CX=0,则转移到目标地址;否则顺序执行。 六、 子程序的调用和返回指令

● ● 断点:子程序调用指令的下一条指令的首字节地址。 1.子程序调用指令 格式:CALL 过程名

功能:先保护程序断点 段内调用:当前IP 内容压栈保护。

段间调用:先把CS 压栈,再把IP 内容压栈保护。

然后无条件转移到目标地址。 2.返回指令

格式:RET 或RET n

功能:执行与CALL 相反的操作,从子程序返回主程序。 若指令不带操作数 段内返回:IP ←SP SP ←SP+2

段间返回:IP ←SP ,SP ←SP+2;CS ←SP ,SP ←SP+2

若带立即操作数,上述功能完成后,再次修改SP 的值,即:SP ←SP+n ,n 为偶数。

七、 输入输出指令 1.输入指令

格式:IN OPRN1,OPRN2

说明:OPRN1是AL 或AX ;OPRN2是端口地址。若采用直接寻址,OPRN2可以是立即数形式,端口地址在0~255(8位)之间;间接寻址时,需要用DX 寄存器存放16位端口地址,地址范围在0~65535之间。 2.输出指令

格式:OUT OPRN1,OPRN2

说明;OPRN1为端口地址;OPRN2为累加器AL 或AX 。端口地址的确定方法同站上。

无影响对间接寻址(间接调用)

直接寻址(直接调用)

段间调用与返回段内调用与返回类型FR

?????

微机原理与接口技术知识点复习总结汇编

第一章计算机基础知识 本章的主要内容为不同进位计数制计数方法、不同进位制数之间相互转换的方法、数和字符在计算机中的表示方法、简单的算术运算以及计算机系统的组成。下边将本章的知识点作了归类,图1为本章的知识要点图,图1.2为计算机系统组成的示意图。 本章知识要点 数制 二进制数(B) 八进制数(Q) 十六进制数(H) 十进制数(D) B) 码制 带符号数编码 奇偶校验码 字符编码 原码 反码 补码 ASCII码 BCD码 压缩BCD码 非压缩BCD码计算机系统组成 计算机系统组成硬件 主机 外部设备 中央处理器(CPU) 半导体存储器 控制器 运算器 ROM RAM 输入设备 输出设备 软件 系统软件 应用软件 操作系统:如DOS、Windows、Unix、Linux等 其他系统软件 用户应用软件 其他应用软件 各种计算机语言处理软件:如汇编、解释、编译等软件

第二章8086微处理器 本章要从应用角度上理解8086CPU的内部组成、编程结构、引脚信号功能、最小工作模式的系统配置、8086的存储器组织、基本时序等概念。下面这一章知识的结构图。 本章知识要点 Intel 8086微处理器 时钟发生器(8284) 地址锁存器(74LS373、8282) 存储器组织 存储器逻辑分段 存储器分体 三总线(DB、AB、CB) 时序 时钟周期(T状态) 基本读总线周期 系统配置 (最小模式) 8086CPU 数据收发器(8286、74LS245) 逻辑地址物理地址 奇地址存储体(BHE) 偶地址存储体(A0) 总线周期指令周期 基本写总线周期 中断响应时序 内部组成 执行单元EU(AX、BX、CX、DX、SP、BP、SI、DI、标志寄存器) 总线接口单元BIU(CS、DS、SS、ES、IP) 地址/数据 控制 负责地址BHE/S7、ALE 引脚功能(最小模式)地址/状态 数据允许和收发DEN、DT/R 负责读写RD、WR、M/IO 负责中断INTR、NMI、INTA 负责总线HOLD、HLDA 协调CLK、READY、TEST 模式选择MN/MX=5V

8086指令系统精析解析

8086指令系统精析 3.1基本数据类型 1.IA-32结构的基本数据类型是字节(8位)、字(16位)、双字(32位)、四字 (64位,486中引入的)和双四字(128位,Pentium3中引入的)。 2.低字节占用内存中的最低地址,该地址也是此操作数的地址。图:P44 图3-1 3.字、双字、四字的自然边界是偶数编号的地址,字的自然边界是偶数编号的 地址,双字和四字的自然边界地址要分别能被4和8除尽。 4.数据结构要尽可能在自然边界上对齐 5.对于不对齐的存储访问,处理器要求做两次存储访问操作;而对于对齐的访 问,只要进行一次存储访问操作。 6.数字数据类型(学生自学)PPT 3.28086的指令格式 一、指令格式 Label(标号):mnemonic(助记符)argument1(参数1),argument2(参数2),argument3(参数3)其中: 1.标号是一个标识符,后面跟有冒号 2.助记符是一类具有相同功能的指令操作码的保留名 3.操作数的三个参数是任选的,可以有零到三个操作数,操作数参数的数量取 决于操作码 4.操作数参数可能是文字或数据项的标识符,也可能是寄存器的保留名或在程 序的另一部分声明的赋予数据项的标识符。 5.在算术和逻辑指令中存在两个操作数时,右边的操作数是源,左边的操作数 是目的。例如:LOADREG: MOV AX, SUBTOTAL 功能是把由SUBTOTAL表示的源操作数传送至AX寄存器。 3.38086/8088指令的操作数寻址方式

寻找操作数,操作数能定位在指令中、寄存器中、存储单元中以及I/O端口中。 1.立即数 用包含在指令中的操作数作为源操作数,这些操作数即为立即操作数。 立即数可以是8位或16 例1 MOV AX , 2056H 结果( AH ) = 20H ( AL ) = 56H 例2 MOV AL , 78 H 结果( AL ) = 78H 2.寄存器操作数 操作数在寄存器中,指令中指定寄存器名 8 位操作数,用8 位寄存器: AH、AL、BH、BL、CH、CL、DH、DL 16 位操作数,用16 位寄存器: AX、BX、CX、DX、SP、BP、SI、DI CS、DS、SS、ES 例1 MOV AX , 2056H 执行后:(AX)=2056H 例2 MOV BL , AH 执行前:(BL) = 12H, (AH) = 78H 执行后:(BL) = 78H (AH) = 78H ▲立即数寻址、寄存器寻址的操作数,不用在取完指令后再到内存中取数。 ▲以下的 5 中寻址方式,操作数存放在内存中,取完指令后,还需到内存取数。指令中给出的是该操作数的地址,包括段地址和偏移地址。 3. 内存操作数 ▲指令MOV DS: [ DI ] , CL 完成将CL寄存器中的内容传送到以DS为段值,DI为偏移值的内存单元中。例编程将CL寄存器的内容传送到21000H单元中。PPT 地址21000H=2000:1000H ,编程时,DS 存放段地址2000H,DI 存放偏移地址1000H MOV AX, 2000H MOV DS, AX ; (DS) = 2000H

8086指令总结

8086指令系统总结 学习微处理器及其程序设计,必须掌握微处理器的指令系统。本章以8086 微处理器为例介绍微型计算机的指令系统,包括指令格式、寻址方式和各类指令功能。要明确各种寻址方式的区别和特点,掌握有效地址和物理地址的计算方法,要正确使用指令,掌握各类指令的功能、对标志位的影响和使用上的一些特殊限制。能够编写小汇编程序,初步掌握汇编程序的编写和调试方法。 本章的重点难点内容是:8086 的指令格式及寻址方式,8086 的常用指令和8086 指令前缀的使用。 下面我们分别进行总结: 一.8086寻址方式 (1)操作数是数字,指令中立即写出数字------------立即数寻址 MOV AX,1234H 解释此句意义 (2)操作数是寄存器内容,指令中写出寄存器的符号---------寄存器寻址 MOV AX,BX (3)操作数是存储单元内容,用括号括出存储单元有效地址-----直接寻址 MOV AX,[1234H] MOV AX,ES:[1234H] (4)操作数是存储单元内容,用括号括出寄存器或其表达式,寄存器或其表达式的值为存储单元有效地址-------------间接寻址MOV AH,[BX] MOV AX,ES:[SI] MOV AL,[BX+SI+5]===5[BX+SI]===5[BX][SI] 二.8086指令系统 1.数据传送指令 (一)通用传送指令 (1)MOV指令 指令格式:MOV 目,源 功能:将源操作数传送给目标操作数。 (2)堆栈操作指令 进栈指令:PUSH 格式:PUSH 源 功能:将源操作数压入堆栈。 例:用堆栈指令完成上例的功能。 MOV AX,3000H MOV DS,AX ;段寄存器填充 MOV SI,0100H ;基本指令执 MOV DI,2000H ;行前的初值 MOV CX,50 NT: PUSH [SI] ;程序从这 POP [DI] ;开始设计 INC SI INC SI INC DI INC DI LOOP NT MOV AH,4CH INT 21H

实验6 CPU组成与机器指令执行实验

肇庆学院计算机学院/软件学院 实验报告 专业计算机学院班级姓名学号 课程名称:CPU组成与机器指令执行实验学年2014—2015 学期1□/ 2□ 课程类别专业必修 限选□任选□实践□ 评分:批阅老师:2016年月日 ●实验目的 (1)将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机; (2)用微程序控制器控制模型机数据通路; (3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。 ●实验电路 本次实验用到前面四个实验中的所有电路,包括运算器、存储器、通用寄存器堆、程序计数器、指令寄存器、微程序控制器等,将几个模块组合成为一台简单计算机。因此,在基本实验中,这是最复杂的一个实验,也是最能得到收获的一个实验。 在前面的实验中,实验者本身作为“控制器”,完成数据通路的控制。而在本次实验中,数据通路的控制将由微程序控制器来完成。CPU从内存取出一条机器指令到执行指令结束的一个机器指令周期,是由微指令组成的序列来完成的,即一条机器指令对应一个微程序。 ●实验设备 (1)TEC-9计算机组成原理实验系统一台 (2)双踪示波器一台 (3)直流万用表一只 (4)逻辑测试笔一支 ●实验任务 (1)对机器指令系统组成的简单程序进行译码。 将下表的程序按指令格式手工汇编成十六进制机器代码,此项任务应在预习时完成。 地址指令机器代码 00H LDA R0,[R2] 58H 01H LDA R1,[R3] 5DH 02H ADD R0,R1 04H 03H JC +4 94H 04H AND R2,R3 3EH 05H SUB R3,R2 1BH 06H STA R3,[R2] 4BH 07H STP 60H 08H JMP [R1] 84H (2)按照下面框图,参考前面实验的电路图完成连线,控制器是控制部件,数据通路(包括上面各模块)是执行部件,时序产生器是时序部件。连线包括控制台、时序部分、数据通路和微程序控制器之间的连接。其中,为把操作数传送给通用寄存器组RF,数据通路上的RS1、RS0、RD1、RD0应分别与IR3至IR0连接,WR1、WR0也应接到IR1、IR0上。 开关控制

cpu指令运行说明

cpu指令运行说明 cpu指令运行说明一计算机每执行一条指令都可分为三个阶段进行。即取指令-----分析指令-----执行指令。 取指令的任务是:根据程序计数器pc中的值从程序存储器读出现行指令,送到指令寄存器。 分析指令阶段的任务是:将指令寄存器中的指令操作码取出后进行译码,分析其指令性质。如指令要求操作数,则寻找操作数地址。 计算机执行程序的过程实际上就是逐条指令地重复上述操作过程,直至遇到停机指令可循环等待指令。 一般计算机进行工作时,首先要通过外部设备把程序和数据通过输入接口电路和数据总线送入到存储器,然后逐条取出执行。但单片机中的程序一般事先我们都已通过写入器固化在片内或片外程序存储器中。因而一开机即可执行指令。 下面我们将举个实例来说明指令的执行过程: 开机时,程序计算器pc变为0000h。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。 例如执行指令:mov a,#0e0h,其机器码为“74h e0h”,该指令的功能是把操作数e0h送入累加器,

0000h单元中已存放74h,0001h单元中已存放e0h。当单片机开始运行时,首先是进入取指阶段,其次序是: 1 程序计数器的内容(这时是0000h)送到地址寄存器; 2 程序计数器的内容自动加1(变为0001h); 3 地址寄存器的内容(0000h)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000h的单元被选中; 4 cpu使读控制线有效; 5 在读命令控制下被选中存储器单元的内容(此时应为74h)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。至此,取指阶段完成,进入译码分析和执行指令阶段。 由于本次进入指令寄存器中的内容是74h(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到a累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(e0h)从存储器中取出送到cpu,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时pc已为0001h。指令译码器结合时序部件,产生74h操作码的微操作系列,使数字e0h 从0001h单元取出。因为指令是要求把取得的数送到a累加器,所以取出的数字经内部数据总线进入a累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中pc="0002h",pc 在cpu每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。cpu就是这样一条一条地执行指令,完成所有规定cpu指令运行说明二首先,cpu的内部结构可以分为控制

CPU的工作过程

CPU的工作过程 CPU的工作过程 CPU的基本工作是执行存储的指令序列,即程序。程序的执行过程实际上是不断地取出指令、分析指令、执行指令的过程。 CPU从存放程序的主存储器里取出一条指令,译码并执行这条指令,保存执行结果,紧接着又去取指令,译码,执行指令……,如此周而复始,反复循环,使得计算机能够自动地工作。除非遇到停机指令,否则这个循环将一直进行下去。其过程如图3-3所示 图3-3 程序的执行过程 3.2.1 指令的执行过程 几乎所有的冯?诺伊曼型计算机的CPU,其工作都可以分为5个阶段:取指令、指令译码、执行指令、访存取数和结果写回。如图3-4所示。 图3-4 指令的执行过程 1.取指令阶段 取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程。 PC,依此类推。?PC,若为双字长指令,则(PC)+2?程序计数器PC中的数值,用来指示当前指令在主存中的位置。当一条指令被取出后,PC中的数值将根据指令字长度而自动递增。若为单字长指令,则(PC)+1

2.指令译码阶段 取出指令后,计算机立即进入指令译码(Instruction Decode,ID)阶段。 在指令译码阶段,指令译码器按照预定的指令格式,对取回的指令进行拆分和解释,识别和区分出不同的指令类别及各种获取操作数的方法。 在组合逻辑控制的计算机中,指令译码器对不同的指令操作码产生不同的控制电位,以形成不同的微操作序列;在微程序控制的计算机中,指令译码器用指令操作码找到执行该指令的微程序的入口,并从此入口开始执行。 在传统的设计里,CPU中负责指令译码的部分是无法改变的硬件。不过,在众多运用微程序控制技术的新型CPU中,微程序有时是可重写的,可以通过修改成品CPU来改变CPU的译码方式。 3.执行指令阶段 在取指令和指令译码阶段之后,接着进入执行指令(Execute,EX)阶段。 此阶段的任务是完成指令所规定的各种操作,具体实现指令的功能。为此,CPU 的不同部分被连接起来,以执行所需的操作。 例如,如果要求完成一个加法运算,算术逻辑单元(ALU)将被连接到一组输入和一组输出,输入端提供需要相加的数值,而输出端将含有最后的运算结果。 4.访存取数阶段 根据指令需要,有可能要访问主存,读取操作数,这样就进入了访存取数(Memory,MEM)阶段。 此阶段的任务是:根据指令地址码,得到操作数在主存中的地址,并从主存中读取该操作数用于运算。 5.结果写回阶段 作为最后一个阶段,结果写回(Writeback,WB)阶段把执行指令阶段的运行结果数据“写回”到某种存储形式。结果数据经常被写到CPU的内部寄存器中,以便被后续的指令快速地存取。在有些情况下,结果数据也可被写入相对较慢、但较廉价且容量较大的主存。许多指令还会改变程序状态字寄存器中标志位的状态,这些标志位标识着不同的操作结果,可被用来影响程序的动作。 在指令执行完毕、结果数据写回之后,若无意外事件(如结果溢出等)发生,计算机就接着从程序计数器PC中取得下一条指令地址,开始新一轮的循环,下一个指令周期将正常地顺序取出下一条指令。 许多新型CPU可以同时取出、译码和执行多条指令,体现出并行处理的特性。

习题3-8086指令系统

习题三8086指令系统 主要内容:8086指令系统。主要介绍8086的基本数据类型、寻址方式和指令系统,重点掌握8086指令系统的寻址方式、堆栈操作指令、算术运算指令及其对标志位的影响,串操作指令,控制传送指令。 1.单选题: (1)执行下面指令序列后,结果是(A)。 MOV AL,82H CBW A、(AX)=0FF82H B、(AX)=8082H C、(AX)=0082H D、(AX)=0F82H (2)与MOV BX,OFFSET VAR指令完全等效的指令是(D )。 A、MOV BX,VAR B、LDS BX,VAR C、LES BX,VAR D、LEA BX,VAR (3)编写分支程序,在进行条件判断前,可用指令构成条件,其中不能形成条件的指令有(D )。 A、CMP B、SUB C、AND D、MOV (4)下面指令执行后,改变AL寄存器内容的指令是(D )。 A、TEST AL,02H B、OR AL,AL C、CMP AL,B D、AND AL,BL (5)设DH=10H,执行NEG DH指令后,正确的结果是(D )。 A、(DH)=10H,CF=1 B、(DH)=0F0H,CF=0 C、(DH)=10H,CF=0 D、(DH=0F0H,CF=1 (6)设DS=8225H,DI=3942H,指令NEG BYTE PTR[DI]操作数的物理地址是(A )。 A、85B92H B、86192H C、BB690H D、12169H (7)下列指令中,执行速度最快的是(C )。 A、MOV AX,100 B、MOV AX,[BX] C、MOV AX,BX D、MOV AX,[BX+BP] 2.8086 CPU执行如下指令后的结果,以及标志SF、AF、CF、OF的值。 (1)MOV AL,0110 0100B SUB AL,58H ;(AL)=0CH,AF=1 DAS ;(AL)=06H, AF=1 ADD AL,89H ;(AL)=8FH, AF=0 DAA ;(AL)=95H,AF=1,SF=1 结果: (AL)=95H, SF=1, AF=1, CF=0, OF=0 (2)MOV AL,05H MOV BL,09H MUL BL ;(AX)=002DH, SF、AF、CF、OF=0 AAA ; (AX)=0103H ;AAM ; ; (AX)=0405H 结果: (AX)=0103H, CF=1 , SF=0、AF=1、OF=0 3.分析执行下列指令序列后的结果: MOV AL,10110101B AND AL,00011111B ;(AL)=0001 0101B OR AL,11000000B ;(AL)=1101 0101B XOR AL,00001111B ;(AL)=1101 1010B NOT AL ;(AL)=0010 0101B 4.假设(AL)=10101111B,CF=0,CL=2,写出分别执行下列指令后的结果以及标志位CF、ZF、OF的值。 (1)SHL AL,CL ;(AL)=1011 1100B, CF=0、ZF=0、OF=1 (2)SHR AL,CL ;(AL)=0010 1011B, CF=1、ZF=0、OF=0 (3)SAR AL,CL ;(AL)=1110 1011B, CF=1、ZF=0、OF=0 (4)ROL AL,CL ;(AL)=1011 1110B, CF=0、ZF=0、OF=1 (5)RCR AL,CL ;(AL)=1011 1101B, CF=0、ZF=0、OF=1 5.设(IP)= 3D8FH,(CS)=4050H,(SP)=0F17CH,当执行CALL 2000:0094H后,试求出IP、CS、SP的

指令的执行过程

举个实例来说明指令的执行过程: 开机时,程序计算器PC变为0000H。然后单片机在时序电路作用下自动进入执行程序过程。执行过程实际上就是取出指令(取出存储器中事先存放的指令阶段)和执行指令(分析和执行指令)的循环过程。 例如执行指令:MOV A,#0E0H,其机器码为“74H E0H”,该指令的功能是把操作数E0H送入累加器,0000H单元中已存放74H,0001H单元中已存放E0 H。当单片机开始运行时,首先是进入取指阶段,其次序是: 1 程序计数器的内容(这时是0000H)送到地址寄存器; 2 程序计数器的内容自动加1(变为0001H); 3地址寄存器的内容(0000H)通过内部地址总线送到存储器,以存储器中地址译码电跟,使地址为0000H的单元被选中; 4 CPU使读控制线有效; 5 在读命令控制下被选中存储器单元的内容(此时应为74H)送到内部数据总线上,因为是取指阶段,所以该内容通过数据总线被送到指令寄存器。 至此,取指阶段完成,进入译码分析和执行指令阶段。 由于本次进入指令寄存器中的内容是74H(操作码),以译码器译码后单片机就会知道该指令是要将一个数送到A累加器,而该数是在这个代码的下一个存储单元。所以,执行该指令还必须把数据(E0H)从存储器中取出送到CPU,即还要在存储器中取第二个字节。其过程与取指阶段很相似,只是此时PC已为0001H。指令译码器结合时序部件,产生74H操作码的微操作系列,使数字E0H从0001H 单元取出。因为指令是要求把取得的数送到A累加器,所以取出的数字经内部数据总线进入A累加器,而不是进入指令寄存器。至此,一条指令的执行完毕。单片机中PC=0002H,PC在CPU每次向存储器取指或取数时自动加1,单片机又进入下一取指阶段。这一过程一直重复下去,直至收到暂停指令或循环等待指令暂停。CPU就是这样一条一条地执行指令,完成所有规定的功能

微机原理知识点总结

第一章 1.辨析三个概念:微处理器、微型计算机、微型计算机系统 微处理器:简称μP或MP(Microprocessor)是指由一片或几片大规模集成电路组成的具有运算器和控制器功能的中央处理器部件,又称为微处理机。 微型计算机: 简称μC或MC,是指以微处理器为核心,配上存储器、输入/输出接口电路及系统总线所组成的计算机(又称主机或微电脑)。 微型计算机系统(主机+外设+软件配置)(Microcomputer system) 简称μCS或MCS,是指以微型计算机为中心, 以相应的外围设备、电源和辅助电路(统称硬件)以及指挥微型计算机工作的系统软件所构成的系统。 2.微机系统结构(三种总线结构):数据总线,地址总线,控制总线 第三章 内部结构 由两部分组成:总线接口单元BIU(Bus Interface Unit); 执行单元EU(Execution Unit). (1).总线接口单元BIU 组成:4个16位的段寄存器(CS、DS、ES、SS); 1个16位的指令指针寄存器IP; 1个20位的地址加法器; 1个指令队列(长度为6个字节); I/O控制电路(总线控制逻辑); 内部暂存器。 BIU的功能:根据EU的请求负责CPU与内存或I/O端口传送指令或数据。 ①BIU从内存取指令送到指令队列 ②当EU执行指令时,BIU要配合EU从指定的内存单元或I/O端口中读取数据,或者把EU的操作结果送到指定的内存单元或I/O端口去。 (2)执行单元EU(Execution Unit) 组成:①ALU(算术逻辑单元); ②通用寄存器组AX,BX,CX,DX(4个数据寄存器) BP(基址指针寄存器) SP(堆栈指针寄存器) SI(源变址寄存器) DI(目的变址寄存器) ③数据暂存寄存器 ④标志寄存器FR ⑤EU控制电路 作用:负责执行指令,执行的指令从BIU的指令队列中取得;运算结果和所需数据,则由EU向BIU发出请求,经总线访问内存或I/O端口进行存取。

计组实验-CPU组成与机器指令执行

对机器指令系统组成的简单程序进行译码 接线 本实验接线比较多,需仔细 接线表

只要把上表同列的信号用线连接即可,一共接线33条. 接好线后,将编程开关拨到"正常位置",合上电源,按CLR#按钮,使TEC-5实验系统处于初始状态. (3)存程序代码,设置通用寄存器R0,R1,R2,R3的第一组值及存储器相关单元的数据 本组的寄存器数据是R0=35H, R1=43H, R2=10H, R3=07H.存储器10H 单元的内容为55H.选择这组数据的目的 是执行ADD R1,R0指令时不产生进位C,从而在执行JC R3指令时不产生跳转,而是顺序执行. ●设置通用寄存器R0,R1,R2,R3的值. 本操作中我们使R0=35H, R1=43H, R2=10H, R3=07H. 1.令DP=0,DB=0,使系统处于连续运行状态.令SWC=0, SWB=1, SWA=1,使系统处于写寄存器状态WRF.按CLR#,使实验 系统处于初始状态.

2.在SW7-SW0上设置一个存储器地址,该存储器地址供设置通用寄存器使用.(该存储器地址最好是不常用的一个地 址,以免设置通用寄存器操作破坏重要的存储器单元的内容.)这里我们将该地址设置为0FFH.按一次QD按钮,将 0FFH写入左端口地址寄存器AR. 3.在SW7-SW0上设置00H,作为通用寄存器R0的寄存器号.按一次QD按钮,将00H写入指令寄存器IR. 4.在SW7-SW0上设置35H.按一次QD按钮,将35H写入IR指定的R0寄存器. 5.在SW7-SW0上设置01H,作为通用寄存器R1的寄存器号.按一次QD按钮,将01H写入指令寄存器IR. 6.在SW7-SW0上设置43H.按一次QD按钮,将35H写入IR指定的R1寄存器. 7.在SW7-SW0上设置02H,作为通用寄存器R2的寄存器号.按一次QD按钮,将02H写入指令寄存器IR. 8.在SW7-SW0上设置10H.按一次QD按钮,将10H写入IR指定的R2寄存器.

CPU组成与机器指令执行实验

CPU组成与机器指令执行实验 一、实验目的 (1)将微程序控制器同执行部件(整个数据通路)联机,组成一台模型计算机; (2)用微程序控制器控制模型机数据通路; (3)通过CPU运行九条机器指令(排除中断指令)组成的简单程序,掌握机器指令与微指令的关系,牢固建立计算机的整机概念。 二、实验电路 本次实验用到前面四个实验中的所有电路,包括运算器、存储器、通用寄存器堆、程序计数器、指令寄存器、微程序控制器等,将几个模块组合成为一台简单计算机。因此,在基本实验中,这是最复杂的一个实验,也是最能得到收获的一个实验。 在前面的实验中,实验者本身作为“控制器”,完成数据通路的控制。而在本次实验中,数据通路的控制将由微程序控制器来完成。CPU从内存取出一条机器指令到执行指令结束的一个机器指令周期,是由微指令组成的序列来完成的,即一条机器指令对应一个微程序。 三、实验设备 (1)TEC-4计算机组成原理实验系统一台 (2)双踪示波器一台 (3)直流万用表一只 (4)逻辑测试笔一支 四、实验任务 (1)对机器指令系统组成的简单程序进行译码。 将下表的程序按指令格式手工汇编成十六进制机器代码,此项任务应在预习时完成。 (2)按照下面框图,参考前面实验的电路图完成连线,控制器是控制部件,数据通路(包括上面各模块)是执行部件,时序产生器是时序部件。连线包括控制台、时序部分、数据通路和微程序控制器之间的连接。其中,为把操作数传送给通用寄存器组RF,数据通路上的RS1、RS0、RD1、RD0应分别与IR3至IR0连接,WR1、WR0也应接到IR1、IR0上。

开关控制 控制台时序发生器 时序信号 开关控制指示灯信号控制信号时序信号 控制信号 微程序控制器数据通路 指令代码、条件信号 模型计算机连线示意图 (3)将上述任务(1)中的程序机器代码用控制台操作存入内存中,并根据程序的需要,用数码开关SW7—SW0设置通用寄存器R2、R3及内存相关单元的数据。注意:由于设置通用寄存器时会破坏内存单元的数据,因此一般应先设置寄存器的数据,再设置内存数据。 (4)用单拍(DP)方式执行一遍程序,列表记录通用寄存器堆RF中四个寄存器的数据,以及由STA指令存入RAM中的数据(程序结束后从RAM的相应单元中读出),与理论分析值作对比。单拍方式执行时注意观察微地址指示灯、IR/DBUS指示灯、AR2/AR1指示灯和判断字段指示灯的值,以跟踪程序中取指令和执行指令的详细过程(可观察到每一条微指令)。 (5)以单指(DZ)方式重新执行程序一遍,注意观察IR/DBUS指示灯、AR2/AR1指示灯的值(可观察到每一条机器指令)。执行结束后,记录RF中四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值作对比。注意:单指方式执行程序时,四个通用寄存器和RAM中的原始数据与第一遍执行程序的结果有关。 (6)以连续方式(DB、DP、DZ都设为0)再次执行程序。这种情况相当于计算机正常运行程序。由于程序中有停机指令STP,程序执行到该指令时自动停机。执行结束后,记录RF中四个寄存器的数据,以及由STA指令存入RAM中的数据,与理论分析值作对比。同理,程序执行前的原始数据与第二遍执行结果有关。 五、实验步骤和实验结果 (1)对机器指令系统组成的简单程序进行译码。 (2)接线 本实验的接线比较多,需仔细。 1.将跳线开关J1用短路子短接。时序发生器的输入TJI接控制存储器的输出TJ。控制器

8086/8088指令系统

CH02 8086/8088指令系统 习题与思考题 1.假定DS=2000H,ES=2100H,SS=1500H,SI=00A0H,BX=0100H,BP=0010H,数据变量V AL的偏移地址为0050H,请指出下列指令源操作数是什么寻址方式?源操作数在哪里?如在存储器中请写出其物理地址是多少? (1)MOV AX,0ABH (2)MOV AX,[100H] (3)MOV AX,V AL (4)MOV BX,[SI] (5)MOV AL,V AL[BX] (6)MOV CL,[BX][SI] (7)MOV V AL[SI],BX (8)MOV [BP][SI],100 解答: (1)MOV AX,0ABH 寻址方式:立即寻址;物理地址:无 (2)MOV AX,[100H] 寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+100H=2000H*16+100H=20100H (3)MOV AX,V AL 寻址方式:直接寻址;源操作数在存储器中;物理地址:DS*16+V AL=2000H*16+0050H=20050H (4)MOV BX,[SI] 寻址方式:寄存器间接寻址;源操作数在存储器中;物理地址:DS*16+SI=2000H*16+00A0H=200A0H (5)MOV AL,V AL[BX] 寻址方式:变址寻址;源操作数在存储器中;物理地址:DS*16+V AL+BX=2000H*16+0050H+0100 =20150H (6)MOV CL,[BX][SI] 寻址方式:基址加变址寻址;源操作数在存储器中;物理地址:DS*16+BX+SI=2000H*16+0100H+00A0H =201A0H (7)MOV V AL[SI],BX 寻址方式:寄存器寻址;源操作数在寄存器中;物理地址:无 (8)MOV [BP][SI],100 寻址方式:立即寻址;物理地址:无 2.设有关寄存器及存储单元的内容如下: DS=2000H,BX=0100H,AX=1200H,SI=0002H,[20100H]=12H,[20101H]=34H,

8086指令系统

通用寄存器: 数据寄存器:累加器AX,基址寄存器BX,计数器CX,数据寄存器DX 变址寄存器:源地址寄存器SI,目的变址寄存器DI 指针寄存器:基址指针BP,堆栈指针SP 段寄存器: 代码段寄存器CS,堆栈段寄存器SS,数据段寄存器DS,附加段寄存器ES 标志寄存器:FLAGS,指令指针:IP 数据寄存器 8086有4个16位数据寄存器:AX,BX,CX,DX;它们都可以分为两个独立的8位寄存器:AH/AL,BH/BL,CH/CL,DH/DL;对其中的某8位操作,并不影响另外对应8 位寄存器的数 据.数据寄存器是通用的,用来存放计算结果和操作数, 但每个寄存器又有它们各自专用目的,主要是: AX称为累加器,使用程度最高,用于算术,逻辑运算及与外设传送信息等; BX称为基地址寄存器,常用做存放存储器的地址; CX称为计数器,作为循环和串操作等指今中隐含的计数器; DX称为数据寄存器,常用来存放双字节长数据的高16位,或存放外设端口地址. 指针及变址寄存器 指针及变址寄存器包括SI,DI,BP,SP四个16位寄存器,常用于存储器寻址时提供地址.SI源变址寄存器,DI 目的变址寄存器,一般与DS联用确定数据段中某一存储单元地址.SP堆栈指针寄存器,指示栈顶的偏移地址;BP基址指针寄存器, 表示堆栈段中的基地址.IP16位指令指针寄存器,指示代码段中指令的偏移地址,它与代码段寄存器CS 联用,以确定下一条指令的物理地址.处理器利用CS:IP取得下一条要执行的指令,然后修改IP的内容,使之指向下一条指令的存储器地址.

标志寄存器(FLAGS) 也称为状志标志寄存器PSW 0 CF(Carry Flag) 进位标志 1 2 PF(Parity Flag)零标志 3 4 AF(Auxiliary Carry Flag)辅助进位标志 5 6 ZF(Zero Flag)零标志 7 SF(Sign Flag)符号标志:运算结果最高有效位的状态就是符号位的状态. 8 TF(Trap Flag)陷井标志 9 IF(Interrupt-enable Flag)中断允许标志 10 DF(Direction Flag)方向标志 11 OF(Overflow Flag)溢出标志 12 13 14 15 状态标志:CF,ZF,SF,PF,OF,AF 控制标志:DF,IF,TF 8086的字长是16位的,但其地址线是32位的. 8086处理器将1M存储器空间分成许多逻辑段(Segment),每个段的最大限为16KB. 这样,每个存储单元就可以用"段地址:段内偏移地址"表达其准确的物理位置."段地址:偏移地址"的形式称为逻辑地址 .将逻辑地址中的段地址左移4位(这是对二进制而言,若是十六进制,只要左移一位),加上偏移地址就得到20位物理地址. 例如逻辑地址"1460H:100H"表示物理地址14700H, 同一个物理地址可以有多个逻辑地址形式. 8位通用寄存器AH/AL/BH/BL/CH/CL/DH/DL

微机原理与接口技术:指令系统简介

3.1 概述 指令系统是微处理器的基本功能描述,是各种程序设计语言的基础。8086/8088指令系统是Intel 80X86系列微处理器的基本指令集,包括数据传送指令、算术运算指令、逻辑运算指令和移位指令、控制转移指令和处理器控制指令。这些指令是汇编语言程序设计基础。 程序是人操纵驾驭计算机的工具,程序设计语言是编制程序的工具。程序设计语言主要分类为机器语言、汇编语言和高级语言。这些语言的使用环境不同,操纵计算机的方法不同,各有优缺点。 3.1.1 机器语言与汇编语言 机器语言能被计算机硬件直接识别并执行,它由二进制代码组成。机器语言中的每一条称为指令,计算机能够识别的所有指令的集合称为指令系统。指令是计算机能够执行的最小功能单位,机器语言程序就是由一条条的指令按一定顺序组织起来的指令序列。计算机的CPU不同,指令系统也不同。INTEL公司的80X86系列CPU,因其硬件结构设计上的包容性,指令系统具有兼容性,用8088/8086CPU的指令系统设计的程序可以在80X86系列的CPU上执行。8088/8086CPU的指令系统常被称为80X86系列CPU的基础指令。本章以8086CPU为主,介绍常用计算机指令的格式、寻址方式和用法。 一条指令一般由操作码和操作数两部分组成。操作码详细地说明指令要执行的操作,操作数是指令执行时需要的数据。机器语言中操作码和操作数都是二进制代码,因而难于记忆、书写和输入,即使对于计算机的设计者也一样难于使用。因此,对指令中的操作码和操作数用便于记忆的符号代替,编程语言因而有了第一次发展,由机器语言进化到汇编语言。符号化的操作码称为指令助记符,操作数称为操作数助记符。 汇编语言是一种符号语言。用汇编语言编制的程序称为汇编语言源程序,计算机不能直接识别执行,必须翻译成机器语言程序。翻译的过程称为汇编,完成汇编工作的程序称为汇编程序。汇编程序属于系统程序,是汇编语言的命令处理程序。 汇编语言是一种面向机器的语言,它可以高效地控制计算机硬件,但计算机的CPU不同,汇编语言也不同,它的兼容性差。机器语言和汇编语言统称为低级语言。本章以8086CPU 为主,介绍常用的汇编语言指令格式、寻址方式和用法。 3.1.2 指令的基本构成 1. 指令的一般格式 一条指令包含操作码和操作数两部分。任何指令都含有操作码,操作数可以有一个也可以有两个,还可以没有。只有一个操作数的指令常称为单操作数指令,有两个操作数的指令常称为双操作数指令。形式上无操作数的指令,通常操作数是隐含的。操作数有源操作数和目的操作数之分。 1~6个字节 8086CPU指令由1~6个字节组成。操作码占1~2个字节,操作数占2~4字节。操作码的长度取决于指令系统的规模大小。操作数的长度与指令的寻址方式有关。

8086CPU指令系统

第三章 8086CPU指令系统 本章重点: 1.寻址方式: 立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,基址寻址,变址寻址,基址加变址寻址,串寻址,端口寻址,隐含寻址。 2.8086指令系统: 数据传送指令,算术运算指令,移位指令,程序控制指令,串操作指令,处理器控制指令,I/O指令,中断指令。 学习目标: 1.掌握寻址方式; 2.掌握常用指令的功能和用法。 难点: 区别指令的正确与错误。

§1.寻址方式 指令在存储器中是顺序存放的,而操作数的存放没有规律,因此操作数的寻址方法相对比较复杂。 一、指令的基本格式 1.组成: 一条指令包括操作码和操作数两部分。 操作数:源操作数,目标操作数。 2.寻址方式: 寻找指令中操作数的方法。 3.操作数类型:(8086系统) 寄存器操作数,存储器操作数,立即数(在指令代码中)和I/O端口操作数。 二、寻址方式 1.立即数寻址 ⑴方式: 指令中所需的操作数直接包含在指令代码中(即由指令直接提供),立即数可以是8位,也可以是16位。 例:MOV AL,80H ;将十六进制数80H送入AL MOV AX,1090H;将1090H送AX:90H→AL ,10H→AH ⑵说明: ●采用立即数寻址方式的指令主要用来对寄存器赋值。因为操作数可以从 指令中直接取得,不需要运行总线周期,所以,其显著特点就是速度快。 ●规定:立即数只能是整数,不能是小数,变量或者其他类型的数据;另 外,立即数只能作为源操作数。 2.寄存器寻址 ⑴方式: 如果操作数就在CPU的内部寄存器中,那么寄存器名可在指令中指出,这种寻址方式就叫寄存器寻址。 对16位操作数来说,寄存器可以为AX,BX,CX,DX,SI,DI,SP或BP,而对8位操作数来说寄存器可以为AH……DH,AL……DL。 例:INC CX ;将CX内容加1

第三章_8086指令系统

第三章 8086指令系统 课时分配: 10学时 教学要求: 1、掌握8086的寻址方式; 2、了解8086的指令编码格式和指令系统概况; 3、掌握每一个指令的功能、汇编格式及用法; 教学内容: 1、寻址方式 2、指令系统 重点及难点: 掌握8086CPU的寻址方式、指令系统中指令的分类及其常用指令的格式和功能; 根据需要能够灵活运用指令; §1寻址方式 一、概述 1、指令与指令系统 指令:控制计算机完成指定操作的命令; 指令系统:其所有指令的集合,就称为该计算机的指令系统; 8086的指令系统包括92种基本指令,按照所实现的功能,可分为6大类:数据传送指令;算术运算指令;逻辑运算和移位指令;串操作;控制转移指令;处理器控制指令。 2、指令格式 操作码 [操作数],[操作数] 操作码:也称为指令码,指计算机所要执行的操作,来实现的具体功能,用助记符来表示。 操作数:指在指令执行操作的过程中所需要的操作对象。可以有0个、1个或2个。 3、操作数分类 1)立即数操作数:也就是常数,在程序执行过程中,不会发生变化。8位或16位。只能用作元 操作数,不能用于目的操作数。 举例: 2)寄存器操作数:存放在通用寄存器中或段寄存器中。既可作源操作数,也可用于目的操作数, 但CS除外。可以是8位,也可以是16位

举例: 3)存储器操作数:可以是字节、字,也可以是双字。既可作源操作数,也可用于目的操作数。 但不允许源操作和目的操作数同时为存储器操作数。 MOV AH,[3120] MOV AX,[3120] LDS SI,[BX];地址传送指令;将把BX所指的32位地址指针的段地址部分送入DS,偏移量部分送入SI; 4、存储器操作数的地址 能够唯一标示一个存储器单元的是物理地址,由段地址和偏移地址组成。要寻找一个存储器操作数,首先要确定所在段的段地址。如果指令中没有指明所涉及到段寄存器,CPU就采用默认的段寄存器来确定操作数所在的段。 操作数的偏移地址:也称为有效地址,可以通过不同的寻址方式由指令给出。 5、指令的执行时间 了解指令的执行时间,在有时是非常重要的。例如用软件产生定时或延时时,需要估算出一段时间的运行时间。由于8086系统的指令种类很多,详细讨论比较繁琐也没不要,这里只作一般讨论。 一条指令的执行时间包括:取指令、取操作数、执行指令、传送结果。单位用时钟周期数表示。 不同指令的执行时间有较大的差别,书上列出了部分常用指令的执行时间及访问存储器的次数,如P96中表3-4所示。 存取操作数的时间与采用的寻址方式有关,寄存器操作数占用的时间最短,而存储器操作数占用的时间长一些,因为还需要考虑计算偏移地址所花费的时间。 二、寻址方式 寻址方式:主要是指获得操作数所在地址,也就是操作数的偏移地址(有效地值)。一般是指源操作数的地址。 在8086系统中,一般将寻址方式分为两种不同的类型,一类是寻找操作数的地址,另一类是寻找要执行的下一条指令的地址,即程序的地址。主要在程序转移或过程调用时用来寻找目的地址或入口地址。这将在调用指令CALL和程序转移指令JMP中详细介绍。 本章节主要讨论针对操作数地址的寻址方式。 共有7种寻址方式:

8086指令系统汇编实训实例

8086指令系统实训实例 一、80x86微处理器中的寄存器 图1-1 80x86微处理器的基本结构寄存器 标志寄存器对照表 标志名称 设置 未设置 标志名称 设置 未设置 溢出 OV(溢出) NV(未溢出) 零位 ZR (为0) NZ(不等于零) 方向 UP(增加) DN (减少) 辅助进位 AC (有进位)NA(无进位) 中断 EI(许可) DI(禁止) 奇偶标志 PE(偶) PO(奇) 符号 NG(负) PL(正) 进位 CY (有进位) NC(清除进位) 累加器基址寄存器 计数寄存器 数据寄存器 堆栈指针寄存器 基址指针寄存器 源变址寄存器 目的变址寄存器 指令指针寄存器 标志寄存器 代码段寄存器 段寄存器 附加段寄存器 堆栈段寄存器 数据寄存器 地址指针和 变址寄存器 控制寄存器 通用寄存器 数据段寄存器

二、用DEBUG软件学习汇编语言 DEBUG的几点规则说明: 1.所有数据默认为16进制数,后缀“H”不用加; 2.DEBUG命令都是一个字母,字母大小写不分,后面的参数可以用空格分开, 也可以不用;命令与数字之间可以不分开,但是两个十六进制数字之间必须分开,如: L100 = L 100;100 110 ≠100110 ; 3.DEBUG中的地址表示格式有如下几种: 1)段寄存器:偏移量,如:cs:100 2)段地址:偏移量,如:04ba:100 或4ba:100 3)默认段寄存器不写,只写偏移量,如:100; 4)确定地址范围可以有两种表示方式: a)段地址:起始地址的偏移量结束地址的偏移量,如:cs:100 110; b)段地址:起始地址的偏移量L(长度),如:cs:100 L10; DEBUG软件基本指令用法一览表

相关主题