微机原理与接口技术PPT1 (10)_第1页
微机原理与接口技术PPT1 (10)_第2页
微机原理与接口技术PPT1 (10)_第3页
微机原理与接口技术PPT1 (10)_第4页
微机原理与接口技术PPT1 (10)_第5页
已阅读5页,还剩68页未读 继续免费阅读

下载本文档

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

文档简介

第三章8086寻址和指令系统8086指令系统具有灵活的指令格式、很强的寻址能力、能处理多种数据类型本章讨论8086寻址能力,指令系统第一节8086寻址方式一、基本概念二、指令寻址方式一、基本概念1.指令机器指令以二进制代码(机器码)表示指令直接,不易读懂汇编指令以符号形式表示指令易读,需要翻译(汇编)2.指令成分操作码:操作的性质表示指令应完成的具体操作以助记符的形式表示操作数:操作的对象

3.指令操作数双操作数OPR DEST,SRC单操作数OPR DEST无操作数OPR

(隐含操作数)二、指令寻址方式寻址方式:CPU寻找操作数或送操作结果的方式。操作数就在指令中操作数在CPU的Register中操作数在Memory中操作数可能存放的场所

8086的寻址方法有:立即寻址、存储器寻址、串操作寻址I/O端口寻址、程序转移寻址

1.立即寻址:指令中直接给出操作数的数值。如:MOVAL,26HMOVCX,2A50H立即寻址速度快,一般用于给寄存器或存储器赋初值

2.寄存器寻址:操作数存放在指令规定的寄存器中。如:

MOVDX,AX寄存器寻址机器码字节最短,执行速度最快

3.直接寻址:指令直接给出操作数的偏移地址。(存储器寻址方式)直接寻址方式:MOVAX,[2000H]段超越前缀:MOVAX,ES:[500]符号地址:AREA1DW100MOVAX,AREA1

4.寄存器间接寻址:操作数的有效地址EA存放在基址或变址寄存器。

MOV AX,[SI] (DS):(SI)→AXMOV AX,[BP] (SS):(BP)→AX

(BX)(SI) 段寄存器DS (即操作数在数据段) (DI) (BP) 段寄存器SS

(即操作数在堆栈段)EA=

5.寄存器相对寻址:操作数的有效地址EA是8位或16位的偏移量加基址或变址寄存器如:MOVBX,COUNT[SI]

(BX)

(SI)

段寄存器DS(即操作数在数据段)

(DI)

(BP)

段寄存器SS (即操作数在堆栈段)EA=+disp+disp注:偏移量可以是负数

6.基址变址寻址:操作数的有效地址EA是基址存器(BX或BP)加变址寄存器(SI或DI)。

(BX)(SI)(BP

(DI)+BX默认段DSBP默认段SS如:MOVAX,[BX][SI]MOVAX,[BX+SI]EA=

7.相对基址变址寻址:操作数的有效地址EA是8位或16位的偏移量加基址寄存器(BX或BP)和变址寄存器(SI或DI)。

如:MOVAX,MASK[BX][SI]MOVAX,[MASK+BX+SI](BX)(SI)8位偏移量(BP

(DI)16为偏移量

+BX默认段DSBP默认段SS+EA=

其它:隐含寻址I/O端口寻址一条指令几种寻址方式转移类寻址

8.I/O端口寻址直接端口寻址:指令中直接给出外设端口地址如:INAL,63HOUT64H,AL间接端口寻址:指令DX寄存器为外设端口地址如:MOVDX,213HINAL,DX注:直接端口寻址范围(0~FFH)

间接端口寻址范围(0~FFFFH)

转移指令寻址方式段内直接寻址立即短转移JMPSHORTPROG_S(8位立即数)立即近转移JMPNEARPTRPRON_N(16位立即数)段内间接寻址以存储器或寄存器作为转移目标地址

寄存器:JMPBX

存储器:JMPWORDPTR[BX]段间直接寻址JMPFARPTRPROG_F段间间接寻址JMPDWORDPTR[BX]第二节8086指令系统指令系统是汇编语言程序设计基础汇编语言不如高级语言容易掌握学习要点:功能、寻址方式、对PSW影响8086指令系统分6类:数据传送、算术运算、逻辑和移位、字符串处理、转移类指令、处理机控制类。一、数据传送指令1、通用传送指令指令名称操作码操作数例传送字或字节MOV目标,源MOVARRAY[SI],AL把字压入堆栈PUSH源PUSHAX把字弹出堆栈POP目标POPAX

交换字节或字XCHG目标,源

XCHGAX,BX字节翻译XLAT译码表XLATASCII-TAB

MOV指令完成把1字节或1字内容从源操作数传送到目的操作数立即数不能做目的操作数无存储器间直接传送不能给CS、IP直接赋值不能用立即数对段寄存器赋值立即数存储器段寄存器通用寄存器格式:MOV目标,源例:MOVAL,‘B’MOVDX,OFFSETARRAYMOVAL,AREA1MOVAREA2,AL

AREA1AREA2ARRAY143B00000000

PUSH进栈指令若BX=2500HDS=2130HSP=0040HSS=2000H执行PUSHBXPUSHDS2000:0000302100252000:0040栈底减1SP源操作数可以是通用寄存器、段寄存器、存储器。压栈时必须是字先压高字节、再压低字节,且SP减1格式:PUSH源执行后SP=003CH

POP出栈指令若:SP=003CHSS=2000H执行POPDSPOPBX目的操作数可以是通用寄存器、段寄存器、存储器。弹栈时必须是字先弹低字节、再弹高字节,且SP加12000:0000302100252000:0040栈底加1SP2000:003C执行后SP=0040HDS=2130HBX=2500H格式:POP目的

XCHG交换指令格式:XCHG目的,源

例:XCHGAX,[BX+200H]

若:AX=2000H,DS=3000H

BX=1800H,(31A00H)=1995H。

执行后:AX=1995H(31A00H)=2000H注:源、目的可以是寄存器,可以是存储器,但不能都是存储器

XLAT指令格式:XLAT或XLAT表该指令采用隐含寻址表有效地址EA=BX+AL,查表后内容送AL

例:把0~9的十进制数转换成七段码TABLEDB

40H,79H,24H,30H,19HDB

12H,02H,78H,00H,18HMOV

AL,5MOV

BX,OFFSETTABLEXLAT

TABLE

2、输入/输出指令

IN累加器,端口

OUT端口,累加器如果端口地址在0000H~00FFH,可用直接或间接寻址如果端口地址不在0000H~00FFH,只能用间接寻址INAX,21H(直接)MOVDX,210H(间接)INAL,DXINAL,210H(

名称操作码操作数举例装入有效地址LEA目,源LEABX,[DI]指针装入DSLDS目,源LDSBX,TABLE[SI]指针装入ESLES目,源LESDI,ARRAY[BX]例:若:DI=0100H,DS=2000H,(20106H)=1234H,(20108H)=5678H则:LEABX,6[DI]BX=0106HLDSBX,6[DI]BX=1234HDS=5678H3、地址目标传送指令

这三条指令用于传送地址码,源操作数必须是存储器,目的操作数除段寄存器的16位寄存器。

4、标志传送指令LAHF标志装入AH

将标志SF,ZF,AF,PF,CF送AH的7,6,4,2,0SAHFAH内容装入标志

将AH的7,6,4,2,0送标志SF,ZF,AF,PF,CFPUSHF压标志POPF弹标志

传送指令对标志影响:

除POPFSAHF两条指令,其余指令均不影响标志二、算术运算指令8086算术运算指令共有20条,分4组8086的4组指令为加法、减法、乘法、除法8086可处理四种类型的数:无符号、带符号、压缩BCD码、非压缩BCD码8086四种类型数的解释二进制十六进制无符号数带符号数非压缩BCD压缩BCD000001110777771000100189137-119无效8911000101C5197-59无效无效

1、加法指令

ADD目的,源目的源+目的

ADC目的,源目的源+目的+CF

INC目的目的目的+1

AAADAA说明:源操作数为立即数、通用寄存器、存储器目的操作数为通用寄存器、存储器

源、目不能都是存储器算术运算指令影响标志

例:ADDAL,18HADCBL,ALADCAX,DXADDAL,COST[BX]INCBLINCCXINCBYTEPTR[BX]INCWORDPTR[BX]

DAA加法的十进制调整指令,适用压缩BCD码调整原则:若AL低4位>9或AF=1则ALAL+6,进行低字节调整若AL高4位>9或CF=1则ALAL+60H,进行高字节调整,使CF=1例1、AL=38(BCD)BL=15(BCD),求两数之和ADDAL,BL

;AL=4BHDAA;AL=53H(BCD)CF0例2、AL=88(BCD)BL=49(BCD),求两数之和ADDAL,BL;AL=0D1HDAA;AL=37H,CF=1

使用AAA、DAA指令注意:仅对AL调整,运算必须是字节,且结果存在AL中参加运算的数必须合法,即压缩或非压缩BCD码紧跟在ADD、ADC、INC指令后面

2、减法指令

SUB目的,源目的目的-源

SBB目的,源目的目的-源-CF

DEC目的目的目的-1

NEG目的目的0-目的

CMP目的,源源-目的

AASDAS说明:源操作数为立即数、通用寄存器、存储器目的通用寄存器、存储器

源、目不能都是存储器算术运算指令影响标志

3、乘法指令

说明:*乘法指令只给出一个源操作数,另一源操作数,目的操作数采用隐含寻址*乘法指令可字节与字节乘,可字与字乘

字节乘:AX

AL*源字乘:DXAX

AX*源*源操作数可选寄存器、存储器(说明字还是字节)

*乘法影响标志CF,OF采用字节乘还是字乘取决于原操作数MUL源IMUL源AAM

例1:MULDLMULCXMULBYTEPTR[SI]MULWORDPTR[BX]例2:AL=55H,BL=14HMULBL执行后AX=06A4HCF=1,OF=1例3:AL=-28H,BL=59HIMULBL执行后AX=F98CH,CF=1,OF=1

乘法的ASCII调整:AAM把AL/10

商在AH,余数在AL例:MOVAL,09HMOVBL,06HMULBL;AL=36HAAM;AH=05H,AL=04H

4、除法指令

CBWCWD说明:*除法指令只给出一个源操作数,另一源操作数,目的操作数采用隐含寻址*除法可完成字节或字除,取决于源操作数*字节除商AL,余数AH

AX/源(字节)字除商AX,余数DX

DXAX/源(字)*源操作数可选寄存器、存储器(说明字还是字节)*除法指令对标志无影响,但超过范围,产生中断DIV源

IDIV源

AAD

例1:完成两个无符号数7A86H,04H相除

MOVAX,7A86HMOVBL,04HDIVBL

超过范围,产生除法中断AL=-12AH=-2AL=-13AH=1OR?MOVDX,0MOVAX,7A86HMOVBX,04HDIVBX例2:-38/3的商和余数

MOVAX,-38MOVCH,03HIDIVCHMOVAL,-38MOVCH,03HCBWIDIVCH

符号扩展:CBWAL符号扩展AXCWDAX符号扩展

DX,AX

除法的ASCII调整:AADALAH*10+AL,AH0在做除法前先除例:完成非压缩BCD码37除5

MOVAX,0307HMOVBL,05HAAD;AL=25HDIVBL;AL=7(商)AH=2(余数)

三、逻辑运算与移位指令1、逻辑运算指令名称操作码操作数功能非NOT目的目的

目的与AND目的,源目的

目的源或OR目的,源目的

目的源异或XOR目的,源目的

目的源测试TEST目的,源目的源

与指令用来清除或保留操作数中某些位或指令用来保留或使操作数某些位置1异或指令可使某些位取反,某些位不变测试指令完成的功能是与,但不回送结果逻辑运算指令对标志影响:

NOT指令不影响标志,其余指令根据结果置

SF,ZF,PF、CF与OF清0、AF不确定。

2、移位与循环指令逻辑左移SHL目的,计数值算术左移SAL目的,计数值逻辑右移SHR目的,计数值算术右移SAR目的,计数值循环左移ROL目的,计数值

循环右移ROR目的,计数值带进位循环左移RCL目的,计数值带进位循环右移RCR目的,计数值

SHL/SALSHRSARROLRORRCLRCR00MMMCFCFCFCFCFCFCFLLL

移位:循环指令用于按位检测,又能恢复原值场所8086循环和移位指令一次可移1位,也可移多位(CL)操作数形式:对标志影响:AF无定义、PF,SF,ZF根据结果定、OF移一位,根据结果定;移多位,不确定目的操作数可选用存储器、寄存器计数值选1或CL逻辑左移无符号乘2逻辑右移无符号除2算术左移带符号乘2算术右移带符号除2

例2:MOVAL,10000000BMOVCL,03HSARAL,CL;AL=F0H=-16例1:MOVAL,10000101BMOVCL,03H;右移三位=除8

SHRAL,CL;AL=10H=16

用移位指令和循环指令可完成多精度数移位例1:完成AX,BX左移一位SHLBX,1RCLAX,1例2:完成AX,BX右移一位(无符号数)SHRAX,1RCRBX,1

四、字符串处理指令传送字节串或字串字节串或字串比较字节串或字串扫描取字节串或字串存字节串或字串MOVS目的,源MOVSB/MOVSWCMPS目的,源CMPSB/CMPSWSCAS目的SCASB/SCASWLODS源LODSB/LODSWSTOS目的STOSB/STOSW

字符串指令有五种:传送、比较、扫描、取和存字符串指令采用隐含寻址,指令中用到寄存器和标志寄存器/标志用途

SI源字符串的偏移量

DI目的字符串的偏移量

CX重复计数器

AL/AXDFZFSCAS作为扫描值LODS作为目的操作数STOS作为源操作数=0SI,DI自动增量CLD=1SI,DI自动减量STD扫描/比较结束符

传送指令:从源区目的区DS:(SI)

ES:(DI)

字节SI1

SIDI1

DI字SI2

SIDI2

DI串比较:源串和目的串比较DS:(SI)-ES:(DI)相等1ZF,不相等0ZF字节SI1

SIDI1

DI字SI2

SIDI2

DI串扫描:用于扫描某个关键字字节

AL-ES:(DI)DI1

DI相等1ZF,不相等0ZF字

AX-ES:(DI)DI2

DI相等1ZF,不相等0ZF

存入串指令:把累加器内容存入指定附加段

字节ALES:(DI)DI1

DI

字AXES:(DI)DI2

DI取串指令:把数据段内容送累加器

字节DS:(SI)ALSI1

SI字DS:(SI)AXSI2

SI

重复REP

重复,直至CX=0

等于/为零重复REPE/REPZ

ZF=1重复串操作,直至CX=0不等/不为零重复REPNE/REPNZZF=0重复串操作,直至CX=0

MOVSBMOVAL,[SI]MOVES:[DI],ALINCSIINCDIREPDECCXJNZXXXX:例1:要求把程序段以SRC-MESS为偏移地址的字符串‘HELLO’传送到附加段以NEW-LOC的单元中。DATASEGMENTSRC_MESSDB‘HELLO’DATAENDSEDATASEGMENTNEW_LOCDB?,?,?,?,?EDATAENDSCODESEGMENTASSUMECS:CODE,DS:DATA,ES:EDATAMOVAH,4CHINT21HCODEENDSMOVAX,DATAMOVDS,AXMOVAX,EDATAMOVES,AXMOVSI,OFFSETSRC_MESSMOVDI,OFFSETNEW_LOCMOVCX,5START:ENDSTART

例2:比较两个字符串,首址分别为PASSWORD,IN-WORD若输入字符串相同,程序开始运行,否则,程序驱动扬声器发声DATASEGMENTPASSWORDDB‘750430LI’IN-WORDDB‘750424LE’COUNTEQU8DATAENDSCODESEGMENTASSUMEDS:DATA,ES:DATA……LEASI,PASSWORDLEADI,IN-WORDMOVCX,COUNTCLDREPZCMPSBJNESOUNDOK:……SOUND:……CODEENDS

在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下来,送BX寄存器。若没有查到,则将BX的内容清0,设字符串起始地址为0

MOVDI,OFFSETSTRINGMOVCX,COUNTMOVAL,‘A’CLDREPNESCASBJZFINDMOVDI,0FIND:MOVBX,DI

初始化,保证指令正确执行搜索字符条件判断五、控制转移类指令控制转移类指令用于控制程序的走向8086的控制转移指令有无条件转移、条件转移、长转移、短转移。8086的转移指令有28条,分4组

1、条件转移指令1)直接标志转移(10条)JCrelCF=1JNCrelCF=0JZ/JErelZF=1JNZ/JNErelZF=0JSrelSF=1JNSrelSF=0JOrelOF=1JNOrelOF=0JP/JPErelPF=1奇JNP/JPOrelPF=0偶条件判断?满足PC+2+rel->pcPc+2->pc不满足

求AL,BL两数之和、若有进位,则AH置1,否则AH清0

ADDAL,BLJCNEXTMOVAH,0JMPEXITNEXT:MOVAH,1EXIT:

2)间接标志转移(8条)无符号数JA/JNBErel

CF

ZF=0高于/不低于等于

JAE/JNBrel

CF=0高于等于/不低于

JB/JNAErel

CF=1低于/不高于等于JBE/JNArel

CFZF=1低于等于/不高于

带符号数JG/JNLErel

(SF

OF)

ZF=0大于/不小于等于

JGE/JNLrel

SFOF=0大于等于/不小于

JL/JNGErel

SF

OF=1小于/不大于等于

JLE/JNGrel

(SFOF)ZF=1小于等于/不大于

设某个学生的英语成绩已在AL寄存器,若低于60分,则打印F(FAIL),若高于或等于85,则打印G(GOOD),当60分和84分之间,打印P(PASS)

CMPAL,60JBFAILCMPAL,85JAEGOODMOVAL,’P’JMPPRINTMOVAL,’F’JMPPRINTMOVAL,’G’FAIL:GOOD:PRINT:

在以首址为TABLE的10个内存字节单元中存放10个带符号数,要求统计正数、负数和零的个数,并把结果存放在PLUS、NEGT、ZERO单元DB01H,80H,0F5H,32H,86HDB74H,49H,0AFH,25H,40HDB0DB0DB0MOVCX,10MOVBX,0CMPTABLE[BX],0JGEGRET_EQINCNEGTJMPNEXTJGP_INCINCZEROJMPNEXTPLUSNEGTZEROAGAIN:GRET_EQ:INCPLUSINCBXDECCXJNZAGAINP_INC:NEXT:TABLE2、无条件转移和过程调用1)JMP无条件转移段内直接寻址立即短转移JMPSHORTPROG_S(8位立即数)立即近转移JMPNEARPTRPRON_N(16位立即数)段内间接寻址以存储器或寄存器作为转移目标地址

寄存器:JMPBX

存储器:JMPWORDPTR[BX]段间直接寻址JMPFARPTRPROG_F段间间接寻址JMPDWORDPTR[BX]

2)过程调用和返回指令调用

温馨提示

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

评论

0/150

提交评论