第三章(4)8086指令系统_第1页
第三章(4)8086指令系统_第2页
第三章(4)8086指令系统_第3页
第三章(4)8086指令系统_第4页
第三章(4)8086指令系统_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

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

文档简介

第3章8086/8088微处理器及其系统1.8086/8088微处理器结构微处理器功能结构寄存器结构(编程结构)2.8086/8088存储器组织3.8086/8088工作方式时序和引脚信号最大和最小模式4.8086/8088寻址方式5.8086/8088指令系统2024/6/121第3章8086/8088微处理器及其系统

8086/8088指令系统

92种基本指令,全部公开六个功能组(六大类)1.数据传送(Datatransfer)2.算术运算(Arithmetic)3.逻辑运算和移位指令(Logic&Shift)4.串操作(Stringmanipulation)5.控制转移(ControlTransfer)6.处理器控制(ProcessorControl)2024/6/122第3章8086/8088微处理器及其系统8086/8088指令系统指令系统的符号约定八位寄存器:AH/AL,BH/BL,CH/CL,DH/DL

十六位通用寄存器:AX/BX/CX/DX/SP/BP/SI/DI堆栈指针SP,指令指针IP,标志寄存器F/FLAG/PSW目的和源变址寄存器 DI/SI段寄存器 CS/DS/ES/SS

SEG/seg通用寄存器 R/REG/r/reg

存储器M/MEM/mem/m

累加器ACC/acc:代表AX/AH/AL2024/6/123第3章8086/8088微处理器及其系统8086/8088指令系统指令系统的符号约定src(s),dest(d)源,目的操作数(下列寻址方式都可以用)[BX+SI+n],[BX+DI+n],[BP+SI+n],[BP+DI+n][SI+n],[DI+n],[BP+n],[BX+n][N],r[]存储器单元的内容(正常在数据段)ES:[]附加存储器段的内容OPRD操作数 N/n(im)立即数(n8位, nn16位,nnnn32位)2024/6/124第3章8086/8088微处理器及其系统8086/8088指令系统8086/8088指令一览表2024/6/125第3章8086/8088微处理器及其系统8086/8088指令系统8086/8088指令一览表2024/6/126指令类型指令格式指令功能状态标志位备注OSZAPC通用数据传送MOV目标,源PUSH源POP目标XCHG目标,源XLAT传送字节或字字压入堆栈字弹出堆栈交换字节或字字节翻译------------------......------源:R、M、立即数目标:R、M源:R、M目标:R(CS除外)、M源:通用R、M目标:通用R、M目标地址传送LEA目标,源LDS目标,源LES目标,源装入有效地址装入数据段指针到DS装入附加段指针到ES------------------源:内存操作数目标:16位通用R源:内存操作数目标:16位通用R源:内存操作数目标:16位通用R标志位传送LAHFSAHFPUSHFPOPF把FR低字节装入AH把AH内容装入FR低字节把FR内容压入堆栈从堆栈中弹出FR内容-------·····------······I/O数据传送IN累加器,端口OUT端口,累加器输入字节或字输出字节或字------------累加器:AL或AX端口:地址0~255或间接寄存器DX第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)2024/6/127第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类字节或字传送MOV堆栈PUSH和POP字节或字交换XCHG字节翻译XLAT语句格式:MOVd, s;(dest)

(src)功能:把一个字节(B)或一个字(W)操作数由源传送至目的,源操作数内容不变。2024/6/128第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类R

RIm

RM

R,R

MIm

Md和s类型要匹配2024/6/129第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类CPU内部寄存器之间的数据的任意传送MOVDL,CH ;8位寄存器

8位寄存器MOVAX,DX ;16位寄存器

16位寄存器MOVSI,BPMOVDS,BX ;通用寄存器

段寄存器MOVAX,CS ;段寄存器

通用寄存器段寄存器之间不能互相传送,即两操作数不能同为SEGCS和IP不能作为目标寄存器2024/6/1210第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类立即数传送至CPU内部通用寄存器组AX、BX、CX、DX、BP、SP、SI、DIMOVCL,04H ;立即数

8位寄存器MOVAX,03FFH ;立即数

16位寄存器立即数不能传送到段寄存器中,即不能直接给段寄存器赋值2024/6/1211第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类立即数传送至存储器(所有寻址方式)MOVWORDPTR[SI],057BH;立即数

存储器MOVBYTEPTRMEM,5;立即数

存储器目的操作数不能是立即数2024/6/1212第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类CPU内部寄存器与存储器之间数据传送(CS和IP除外)MOVMEM,AX ;累加器存储器MOVMEM,DS ;段寄存器存储器MOVDISP[BX],CX ;寄存器存储器MOVAX,DISP[SI] ;存储器累加器MOVDS,MEM ;存储器段寄存器MOVCX,DISP[BX][SI];存储器累加器存储单元之间不能直接传送,即操作数不能同为M2024/6/1213第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类错误的MOV指令MOVAX,BLMOVDS,1000HMOV[BX],[SI]MOVES,CSMOVCS,AX例:设B为已定义字节变量,判断指令正确性。MOVAX,BMOVAL,0MOVIP,AX;MOVAX,IP;;类型不匹配;不允许立即数送段寄存器;不允许内存操作数之间传送;不允许段寄存器之间传送;CS不能作为目的操作数;错误,类型不匹配;正确,MASM可以判断出要送字节02024/6/1214第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类错误的MOV指令:对字节操作指令0~FFH0~255对字操作指令0~FFFFH0~65535

MOVAL,260MOVAX,70000MOVAL,1FFHMOVAL,2ABCDH2024/6/1215第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/通用数据传送类IP和CSCS和IP的值只在控制转移指令中修改。对非控制转移指令,取完指令后IP值自动增加,指向下条指令。段寄存器CS的值,只在MOV、PUSH中可作操作数,下两条指令执行结果不改变CS值MOVAX,CSPUSHCS2024/6/1216第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/堆栈

堆栈:按照先进后出LastInFirstOut(LIFO)原则组织的一段内存区域,(PUSHPOP)特点:随着推入堆栈内容增加,SP的值减少堆栈作用:在调用一个过程时,保存返回地址;响应中断,保护断点时;暂时存放寄存器或存储器单元操作数的内容;可以用

MOVSP,im给SP赋初值,以确定SP在SS段中的位置。2024/6/1217第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/堆栈堆栈是按照字操作,每次16位操作数进栈操作PUSHsrc;(SP)

(SP)-2((SP)+1,(SP))

(SRC)出栈操作POPdest;(DST)

((SP)+1,(SP))(SP)

(SP)+22024/6/1218第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/堆栈设:(SS)=9000H,堆栈段为64KBMOVSP,0E200H则:(SP)=0E200H;堆栈段的容量为:90000H~9FFFFH栈顶的物理地址为:9E200H2024/6/1219SP7AH45H2000H:10F9H2000H:10FAH2000H:10FBH2000H:10FCH2000H:10FDH2000H:10F8H(AX)=H,(BX)=H,(SS)=2000HPUSHAX2F4DPOPBX3C1E2F4D2024/6/1220第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/交换XCHG格式:XCHGdest,src可以将源操作数和目的操作数按字节或字交换;交换过程可以在CPU的内部寄存器之间进行,也可以在内部寄存器和存储单元之间进行;不能在两个存储单元之间执行数据交换过程。举例:XCHG

AL,BL;AL和BL之间进行字节交换XCHG

BX,CX;BX和CX之间进行字交换XCHG[2530],CX;CX中的内容和2530,2531两单元的内容交换2024/6/1221第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/交换XCHG举例:XCHGBL,DLXCHGAX,SIXCHGCOUNT[DI],AX XCHG[BX],[DI] (错)

XCHGDS,AX(错)2024/6/1222第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/字节翻译XLAT完成字节翻译功能的指令,它可以使累加器中的一个值变换为内存表格中的某一个值,又称查表指令;一般用来实现编码制的转换。实现过程:将(BX)为首址,(AL)为位移量的字节存储单元中的数据送AL寄存器。([BX+AL])→AL。2024/6/1223第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/字节翻译XLATXLAT指令使用举例:内存的数据段中有一张十六进制数字的ASCII码表。首地址为:ASCTAB,欲查出表中第10个元素(‘A’),用XLAT编程。已知:(DS)=F000H,

ASCTAB=0040H30H31H32H...39H41H42H...46H...ASCTABASCTAB

+1ASCTAB

+2ASCTAB+0AHASCTAB+0BHASCTAB+0FH'F''B''A''9''1''2''0'2024/6/1224第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/字节翻译XLATXLAT指令使用举例:MOVBX,0040HMOVAL,0AHXLAT则:(AL)=(F004AH)=41H30H31H32H...39H41H42H...46H...ASCTABASCTAB

+1ASCTAB

+2ASCTAB+0AHASCTAB+0BHASCTAB+0FH'F''B''A''9''1''2''0'2024/6/1225将16位通用寄存器CX的内容压入堆栈,然后,弹出栈顶至CX中已知:(SS)=0200H,(SP)=0008H,(CX)=12FAH。第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/堆栈举例2024/6/1226第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/端口数据传输I/O输入指令IN用于CPU从外设端口接受数据,输出指令OUT用于CPU向外设端口发送数据。无论接受还是发送数据,必须通过累加器AX(字)或AL(字节),又称累加器专用传送指令。输入、输出指令不影响标志位。输入字节或字IN输出字节或字OUT2024/6/1227第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/端口数据传输I/O2024/6/1228IBMPCI/O机端口在IBMPC机里,可以配接许多外部设备,每个外设与CPU之间交换数据,状态信息和控制命令,每一种信息交换都要通过一个端口来进行。端口数:外部设备最多有65536个I/O端口。

A0~A15译码形成。端口号:端口号(即外设端口地址)为0000H~FFFFH。PC机仅使用A0~A9译码形成I/O口地址,即1024H个口地址 端口号:0000H~03FFH其中:A9=1,表示扩充槽上的口地址。2024/6/1229第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/端口数据传输I/O对IN或OUT指令,有两种寻址方式:直接端口寻址指令 端口号中前256个端口(0~FFH),可以直接写在指令中,称为直接端口寻址指令。间接端口寻址指令 当端口号≥256时,必须先把端口号放到DX寄存器中,指令中的端口号以DX表示,称为间接端口寻址指令。2024/6/1230第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/端口数据传输I/OIN(Inputbyteorword)输入指令格式:INacc,port;(acc)

(port)具体形式有四种:

INAL,data8;端口地址8位,输入一个字节

INAX,data8;端口地址8位,输入一个字

INAL,DX ;端口地址16位,输入一个字节

INAX,DX ;端口地址16位,输入一个字必须通过累加器AX(字)或AL(节)输入数据。2024/6/1231第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/端口数据传输I/OOUT(Outputbyteorword)输出指令格式:OUTport,acc ;(port)

(acc)具体形式有四种:

OUTdata8,AL;端口地址8位,输出一个字节

OUTdata8,AX;端口地址8位,输出一个字

OUTDX,AL;端口地址16位,输出一个字节

OUTDX,AX;端口地址16位,输出一个字必须通过累加器AX(字)或AL(节)输出数据。2024/6/1232第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/端口数据传输I/O例1:实现(29H)(28H)→(DATA_WORD)INAX,28HMOVDATA_WORD,AX例2:从端口3FCH送一个字到AX寄存器MOVDX,3FCHINAX,DX;(AL)←(3FCH),(AH)←(3FDH)

例3:实现将(AL)→(05H)OUT5,AL;(05H)←(AL)2024/6/1233第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/目标地址传送专用于8086/8088中传送地址码的指令,将地址指针写入指定寄存器。可传送存储器的逻辑地址(即存储器操作数的段地址或偏移地址。

LEA,取有效地址指令

LDS,取偏移地址及数据段首址,并装入DS寄存器

LES,取偏移地址及附加数据段,并装入DS寄存器2024/6/1234第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/目标地址传送LEA数据传送指令:目标地址传送:LEALEA(LoadEffectiveAddress)格式:LEAreg16,mem16;EA(reg16)功能:把指令中指定的存储器操作数有效地址装入指定的寄存器;要求:源操作数必须为内存单元地址,目的操作数必须为一个16位的通用寄存器;该指令常用来使一个寄存器作为地址指针。2024/6/1235第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/目标地址传送LEA举例:LEA

AX,[2F4D];将2F4D单元的偏移量送AX, 指令执行后,(AX)=2F4D

LEA

BX,[BP+SI];指令执行后,BX中的内容为 (BP)+(SI)的值

LEA

SP,[0482];初始化堆栈指针(SP)=482思考:已知变量DDR对应一内存单元:DS:EA[1000H]:[2000H]LEABX,DDR求(BX)=?2024/6/1236第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/目标地址传送LEA举例:设(BX)=0400H,(SI)=003CH LEABX,[BX+SI+0F62H]执行指令后:EA=(BX)+(SI)+0F62H =0400H+003CH+0F62H =139EH,2024/6/12371.数据传送(Datatransfer)/目标地址传送LEALEA与MOV比较(DS)=3000HBUFFER=1000H(31000H)=0040HLEABX,BUFFER(BX)=1000H MOVBX,BUFFER(BX)=0040HMOVBX,OFFSETBUFFER第3章8086/8088微处理器及其系统2024/6/12381.数据传送(Datatransfer)/目标地址传送LEA判断下列指令的正确性LEADX,BETA[BX][SI]LEADX,AXLEA指令格式中,要求源操作数必须为内存单元地址,目的操作数必须为一个16位的通用寄存器LEA是取源操作数的EA,MOV是取源操作数中存放的内容。第3章8086/8088微处理器及其系统2024/6/1239第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/目标地址传送LDSLDS格式:LDSreg16,mem32

(reg16)←(EA),(DS)←((EA)+2))功能:将指令指定mem32单元的前两个单元内容(16位偏移量)装入指定通用寄存器,把后两个单元内容(段地址)装入到DS段寄存器。常以SI为目的操作数SRC高16位DS(隐含)(32位,4字节)低16位DEST的REG2024/6/1240第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/目标地址传送LDS例:(DS)=C000H,(C2480H)=1357H,(C2482H)=2468H57H13H68H24HDS:2480HDS:2481HDS:2482HDS:2483H

1357SI

2468DSLDSSI,[2480]2024/6/12411.数据传送(Datatransfer)/目标地址传送LES格式:LESreg16,mem32

(reg16)←(EA),(ES)←((EA)+2))功能:将指令指定mem32单元的前两个单元内容(16位偏移量)装入指定通用寄存器,把后两个单元内容(段地址)装入到DS段寄存器。LES指令与LDS指令的操作基本相同,不同仅在于将源操作数所指向地址指针中的段基址(后两个字节)传送到ES段寄存器,而不是DS段寄存器。第3章8086/8088微处理器及其系统2024/6/1242第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/目标地址传送目标地址传送/LEA/LDS/LES已知(DS)=5000H,TABLE=1000H分析下列指令执行结果:MOVBX,TABLE;(BX)=0040HMOVBX,OFFSETTABLE;(BX)=1000HLEABX,TABLE;(BX)=1000HLESBX,TABLE;(BX)=0040H,(ES)=3000HLDSBX,TABLE;(BX)=0040H,(DS)=3000H2024/6/1243第3章8086/8088微处理器及其系统1.数据传送(Datatransfer)/标志位传送采用了隐含操作数(AH,FLAG)PUSHF和POPF指令执行后,SP值要变换(堆栈操作)读取标志指令LAHF(LoadAHfromflags)设置标志指令SAHF(StoreAHintoflags)标志寄存器进栈指令PUSHF(Pushflagsontostack)标志寄存器出栈指令POPF(Popflagsoffstack2024/6/1244第3章8086/8088微处理器及其系统2.算术运算(Arithmetic)具有完备的加、减、乘、除算术运算指令,可处理不带符号或带符号的8/16位二进制整数,以及不带符号的压缩/非压缩十进制整数。加法指令减法指令乘法指令(自学)除法指令(自学)BCD码运算(十进制调整)指令2024/6/1245第3章8086/8088微处理器及其系统2.算术运算(Arithmetic)/加法指令不带进位的加法ADD格式:ADDd,s;d+s

d带进位的加法ADC格式:ADCd,s;d+s+CF

d加1指令INC格式:INCd;d+1

ds:可为n,通用reg,M三种寻址方式d:可为通用reg,M两种寻址方式注意:这在三条指令运算结果将影响状态标志位,但是INC指令不影响标志CF。2024/6/1246第3章8086/8088微处理器及其系统2.算术运算(Arithmetic)/加法指令加法指令举例

CFA1H1100111110100001+62A0H+0110001010100000

111111111113241H0011001001000001MOVDX,0CFA1HADDDX,62A0H执行后:(DX)=3241HCF=1,OF=0,SF=0,ZF=0(注意:CF和OF的判断方法,OF=CD6CD7)2024/6/1247第3章8086/8088微处理器及其系统

01FFH+0001H进位11

0200H

value是一个字变量,OFFSETvalue=1000H

(DS)=2000H,(21000H)=01FFHvalueFF21000H

01执行前value0021000H

02执行后执行后:(21000H)=0200HCF=不变,OF=0,ZF=0,SF=0注意:INCvalue是内存单元内容加1,而非地址加1INCvalue或写成:INC[value]2024/6/1248带进位加:两双字相加0002F365H+0005E024H=?MOVAX,0F365H①ADDAX,0E024H②MOVBX,0002H③ADCBX,0005H④

0002F365H+

0005E024H

进位1

0008D389H结果存放在:

0008D389(BX)(AX)执行完①、②:(AX)=D389HCF=1,OF=0,SF=1,ZF=0

执行完③、④:(BX)=0008HCF=0,OF=0,SF=0,ZF=0分析:8086/8088只能按字节或字相加。位数在字以上的操作数,先加低位,再加高位,加高位时加入从低位产生的进位。2024/6/1249第3章8086/8088微处理器及其系统2.算术运算(Arithmetic)/减法指令不带借位的减法SUB格式:SUBd,s;d-s

d带借位的减法SBB格式:SBBd,s;d-s-CF

d减1指令DEC格式:DECd;d-1

d(不影响标志)求补指令NEG

格式:NEGd;0–d

d比较指令CMP格式:CMPd,s;d-s(不回送结果,只置标志位)2024/6/1250第3章8086/8088微处理器及其系统2.算术运算(Arithmetic)/减法指令减法指令举例执行后:

(AX)=0F254HCF=1,OF=0,SF=1,ZF=02D04H0010110100000100-3AB0H-0011101010110000

温馨提示

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

评论

0/150

提交评论