- 707.00 KB
- 2022-04-29 14:37:28 发布
- 1、本文档共5页,可阅读全部内容。
- 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
- 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
- 文档侵权举报电话:19940600175。
'微机原理课件
书名:《微型计算机原理及接口技术》出版社:中国科学技术大学出版社作者:周荷琴,吴秀清版本:第四版
元件级总线:连接计算机系统中两个主要部件的总线元件级总线采用三总线:地址总线、数据总线、控制总线地址总线:用于CPU向存储器或I/O端口传送地址数据总线:CPU与存储器及外设交换数据的通路控制总线:用来传送控制信息
局部总线:CPU总线、元件级总线局部总线用于多处理器系统
总线标准:国际上正式公布或推荐的系统各个模块互连的标准总线标准规定:插座的尺寸、引线的数目、信号的含义和时序
单片机单板机、嵌入式系统(SOC)
第二章8086系统结构第一节8086CPU的结构第二节8086CPU引脚功能第三节8086/8088存储器组织第四节8086系统配置
第一节8086CPU的结构执行部件(EU)和总线接口部件(BIU)寄存器结构
执行部件(EU)和总线接口部件(BIU)8086CPU的内部结构由两部分组成:总线接口部件BIU、执行部件(EU),采用流水线工作方式总线接口部件BIU:负责取指令;存、取操作数执行部件(EU):负责分析指令、执行指令
通用寄存器操作数ALU标志段寄存器指令指针地址生成和总线控制指令队列EUBIU
BIU总线接口部件组成:段寄存器16位CSSSDSES指令指针(IP)存放指令的偏移地址地址形成逻辑完成逻辑地址到物理地址转换指令队列采用FIFO结构,预取指令总线控制逻辑发出总线控制信号
任务:把段寄存器和IP相加形成20BIT有效地址16*CS+IP取指令8086如果队列中有2字节以上空格,EU不要求总线,则BIU预取指令8088如果队列中有1字节以上空格,EU不要求总线,则BIU预取指令EU要求总线周期,有EU提供信号和地址来源,BIU进入总线,存取数据
EU执行部件组成:ALU算术逻辑运算单元PSW标志寄存器存放运算结果特征寄存器组存放中间结果EU控制器取指令控制、时序控制任务:从队列中取指令控制访问M和I/O由EU通知BIU提供信号和地址来源内部:根据指令要求对寄存器和标志管理
寄存器结构通用寄存器指针和变址寄存器段寄存器指令指针标志寄存器
通用寄存器组EAXAXAHALEBXBXBHBLECXCXCHCLEDXDXDHDL可8位、16位使用用于存放数据或地址专用功能BX——基址寄存器AX——累加器CX——计数器AX,DX——用于乘、除
指针和变址寄存器SP堆栈指针BP基址寄存器SI源变址寄存器DI目的变址寄存器用于堆栈操作用于变址操作这四个寄存器只能按16位操作用于堆栈和变址操作计算操作数的有效地址ESPEBPESIEDI
段寄存器存放每一段的起始地址CS代码段寄存器SS堆栈段寄存器DS数据段寄存器ES附加段寄存器用于存放程序CS*16+IP——取指用于存放堆栈SS*16+SP——堆栈用于存放数据DS*16+SP,BP,SI用于存放数据ES*16+BP,DI
指令指针IP每执行一条指令,IP自动加1IP指向偏移地址,有效地址16*CS+IP程序员不能直接修改IP,(通过转移、调用、中断、中断返回)
标志寄存器PSW标志寄存器用来存放运算结果的特征6位状态位3位控制位
状态位:CF进位标志:若最高位产生进位或借位,则CF置1若最高位无进位或借位,则CF清0PF奇偶标志:若运算结果中“1”的个数为偶数个,PF置1若运算结果中“1”的个数为奇数个,PF清0AF辅助进位标志:第3位向第4位有进位或借位AF置1第3位向第4位无进位或借位AF清0ZF零标志:若运算结果为0,则ZF为1,否则ZF为0SF符号标志:若运算结果为正,SF为0若运算结果为负,SF为1OF溢出标志:若运算结果产生溢出OF为1,否则OF为0
控制位:DF方向标志TF陷阱标志若TF=1,CPU出单步工作方式,每执行一条指令,产生一次单步中断IF中断标志当IF=1时,允许中断,当IF=0时,禁止中断DF=0,地址指针自动增加(由低到高)DF=1,地址指针自动减少(由高到低)
第二节8086CPU引脚功能8086芯片共计40个引脚,主要分成三类:地址线数据线和控制线。外加电源。CPU芯片的引脚完全反映了该芯片的内部功能以及和外界部件的交互方式。学习这部分内容着重考察CPU内部的功能模块以及输入输出需求,掌握引脚的功能定义。学习要求:信号名称信号含义有效电平输入/输出状态(两态/三态)信号来源
一、8086CPU引脚及功能地址总线和数据总线*AD15~AD0:地址/数据总线双向三态注:8086/8088地址线,数据线分时使用总线的第一周期作地址线(16bit宽A15~A0)其余周期作数据线(808616bit/80888bit)*A19~A16/S6~S3:地址/状态三态输出注:这四条线分时使用复用总线的第一周期作地址线A19~A16(与A15~A0构成20bit)其余周期作状态线S6~S3注:8086访问存储器,使用20条地址线8086访问I/O,使用16条地址线
S6~S3:状态线S6:为低电平S5指示中断允许IF状态S4S3指示哪一个段寄存器S4S3段寄存器00ES01SS10CS或非存储器操作11DS
控制总线控制总线是传送控制信号的一组信号线,有输入,输出。
*MN/MX线:最小/最大方式控制线若MN/MX=1,8086处于最小方式若MN/MX=0,8086处于最大方式8086具有两种系统配置方式:最小模式和最大模式,分别对应单机系统和多机系统。最小模式:由8086提供全部控制信号最大模式:由专用总线控制器8288提供总线控制信号在不同模式8086的有些引脚不完全相同
脚最大最小脚最大最小28S2IO/M27S1DT/R26S0DEN30RQ/GT0HOLD24QS1INTA31RQ/GT1HLDA25QS0ALE29LOCKWR受MN/MX影响的控制信号
*S2~S0:总线周期状态信号S2S1S0操作类型000中断响应001读I/O端口010写I/O端口011暂停100取指101读存储器110写存储器111无效
最小方式:*IO/M存储器/输入输出请求信号*DT/R数据发送/接受端*DEN数据允许端
*RQ/GT0*RQ/GT1在最大方式下:这两条信号为总线的请求和回答信号、两信号功能相同、RQ/GT0优先、双向/RQ/GT释放在T4或下一个T1输出/GT
在最小方式*HOLD总线请求信号、输入、高电平有效*HLDA总线响应信号、输出、高电平有效
最大方式:QS1QS0为指令队列状态信号、输出、高电平有效QS1QS0队列状态00无操作01取指令队列第一字节10队列空11取指令队列后续字节
最小方式:INTA中断响应信号、输出、低电平有效ALE地址锁存允许信号、输出、高电平有效
LOCK最大方式有效、总线优先封锁信号三态、输出、低电平有效WR最小方式有效、写信号、三态、输出、低电平有效
不受MN/MX影响的控制信号*RD读信号三态输出、低电平有效*READY准备就绪信号、输出、高电平有效*INTR中断请求信号、输入、高电平有效*NMI非屏蔽中断请求信号、输入、正沿触发*TEST测试信号、输入、低电平有效*RESET复位信号、输入、高电平有效
复位后,8086CPU的状态:寄存器状态PSW0000HCSFFFFHDS0000HSS0000HES0000HIP0000H指令队列清空
其它CLK:时钟信号,由8284时钟产生VCC:电源5V(5%)VSS:地
二、8086与8088引脚不同数据线(8086:AD15~AD0,8088:AD7~AD0)存储器/输入输出控制线不同(8086:M/IO,8088M/IO)BHE/S7不同(BHE是总线高允许)
第三节8086/8088存储器组织一、存储器分段管理二、物理地址的计算方法三、逻辑地址来源四、8086/8088存储器分体结构五、堆栈的概念
一、存储器分段管理20根地址线可寻址1MB地址空间,而实际寄存器是16位,只能寻址64KB空间。于是采用分段管理方式,每个段不超过64KB。段之间可连续,可分离,可重叠。段的首地址有限制,必须能被16整除。即低四位全为0。1Paragraph=16Bytes每个存储单元由段地址和偏移地址组成
二、物理地址的计算方法CPU内部寄存器是16位,给出的地址也是16位,不能直接用于20位地址空间的寻址,因此必须寻求一种将16位逻辑地址转换成20位物理地址的方法。逻辑地址:段基址和偏移地址组成,无符号16位二进制数,是程序设计是采用的地址。物理地址:存储器绝对地址。物理地址=16*段地址+偏移地址
三、逻辑地址来源常用搭配关系:(CS,IP),(DS,SI/DI/BX),(SS,SP/BP)等等。
四、8086/8088存储器分体结构8086奇地址512K*8D7~D0偶地址512K*8D7~D0D15~D8D7~D0SELA0~A18SELA0~A18A1~A19A0BHE
8088A19~A01M*8D7~D0D7~D0A0~A19
五、堆栈的概念专用存储区域,暂时保存数据。“后进先出”(LIFO)SS—段基址,SP—栈顶单元地址堆栈生长方向:由高地址区向低地址区增长。用途:中断,子程序调用,暂存或交换数据。
例如:SS=C000H,SP=1000H,则C0000HC1000HSP栈底〈64k
第四节8086系统配置8086具有两种系统配置方式:最小模式和最大模式,分别对应单机系统和多机系统。注意学习一般的计算机系统的基本配置方式,配置的策略,建立微型机系统的基本配置模型。
一、基本总线接口部件地址锁存器8282/8283数据总线缓冲器8286/8287时钟发生器8284总线控制器8288总线裁决器8289
1.地址锁存器8282/82838282(不反相)和8283(反相)具有三态输出的锁存缓冲器,用于锁存、缓冲、多路输出8282的逻辑图8086系统中,8282(8283)用于地址锁存器连接:ALE——STBOE——接地DI——ADDO——A(地址)
DQCLKDI0STBOEDO0DI1DI2DI7DO1DO2DO7
2、数据总线缓冲器8286/82878286(不反相)8287(反相)具有8路双向缓冲电路,可实现8位数据的双向传送,8286/8287具有很强总线驱动能力,可作为总线驱动器8286逻辑图8086系统中,8286(8287)为总线驱动器连接:T——DT/ROE——DENA——ADB——D(数据)
A1A2A7A0或或B0B1B2B7OET
3、时钟发生器8284提供整个CPU芯片的时钟控制信号,是实现精确控制的必要条件。三大功能模块:时钟信号发生器OSC:14.318MHzCLK:4.77MHz,占空比1/3,供CPUPCLK:2.385MHz,占空比1/2,供外设复位生成电路就绪控制电路
4、总线控制器8288由于8086系统配置为多处理器系统,有多个具有自主性的总线控制设备,原先的一些引脚用来传送其他控制信号,因此需要增加独立的总线控制器来输出总线控制命令。引脚功能:总线状态信号控制输入信号总线命令信号总线控制信号两种工作方式:I/O总线方式:局部总线方式系统总线方式
5、总线裁决器8289当系统中存在多个对总线具有主控权的设备时,每个主控设备需要增设8289来对总线进行合理分配,将总线使用权赋给优先权最高的设备。引脚功能:状态信号:8086CPU输出控制信号多总线命令信号系统信号
二、最大方式和最小方式基本配置最小配置:1片8284、3片8282、2片8286最大配置:除最小配置,外加8288、8289
第三章8086寻址和指令系统8086指令系统具有灵活的指令格式、很强的寻址能力、能处理多种数据类型本章讨论8086寻址能力,指令格式,指令系统
第一节8086寻址能力寻址:指令寻找操作数的方法8086的寻址方法有:立即寻址、存储器寻址、串操作寻址I/O端口寻址、程序转移寻址
立即寻址:指令中直接给出操作数的数值。如:MOVAL,26HMOVCX,2A50H立即寻址速度快,一般用于给寄存器或存储器赋初值
寄存器寻址:操作数存放在指令规定的寄存器中。如:MOVDX,AX寄存器寻址机器码字节最短,执行速度最快
直接寻址:指令直接给出操作数的偏移地址。(存储器寻址方式)直接寻址方式:MOVAX,[2000H]段超越前缀:MOVAX,ES:[500]符号地址:AREA1DW100MOVAX,AREA1
寄存器间接寻址:操作数的有效地址EA存放在基址或变址寄存器。EA=(BX)(SI)(DI)(BP)注:以BX,SI,DI为偏移地址,默认段DS以BP为偏移地址,默认段SS如:MOVAL,[BX]
寄存器相对寻址:操作数的有效地址EA是8位或16位的偏移量加基址或变址寄存器EA=(BX)(SI)8位偏移量(DI)16位偏移量(BP)+BP默认段SSBX、SI、DI默认段DS如:MOVBX,COUNT[SI]
基址变址寻址:操作数的有效地址EA是基址存器(BX或BP)加变址寄存器(SI或DI)。EA=(BX)(SI)(BP)(DI)+BP默认段SSBX默认段DS如:MOVAX,[BX][SI]MOVAX,[BX+SI]
相对基址变址寻址:操作数的有效地址EA是8位或16位的偏移量加基址寄存器(BX或BP)和变址寄存器(SI或DI)。EA=(BX)(SI)8位偏移量(BP)(DI)16为偏移量+BP默认段SSBX默认段DS如:MOVAX,MASK[BX][SI]MOVAX,[MASK+BX+SI]+
其它:隐含寻址I/O端口寻址一条指令几种寻址方式转移类寻址
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]
Ffff0-0a00=ff5f0h,ds=ff5fh2010:0102=20100+0102=20202h5000:001e=50000+001e=5001eh3217:0e0f=32170+0e0f=3307fh10e0:002a=10e00+002a=10e2ah
第二节指令机器码表示8086采用变长指令格式,指令长度有1~6字节不等第一字节:操作码第二字节:操作数寻址方式后面:无字节2字节有效地址EA1~2字节偏移量、1~2字节立即数1~2字节偏移量、2字节的段地址
Opcode单字节操作数隐含OpcodeReg单字节寄存器方式Opcode11RegR/MOpcodemodRegR/MOpcodemodRegR/M位低位高Opcode11RegR/M数低数高OpcodemodRegR/M位低位高数低数高寄存器至寄存器寄存器至存储器寄存器至存储器立即数至寄存器立即数至存储器
第三节8086指令系统指令系统是汇编语言程序设计基础汇编语言不如高级语言容易掌握学习要点:功能、寻址方式、对PSW影响8086指令系统分6类:数据传送、算术运算、逻辑和移位、字符串处理、转移类指令、处理机控制类。
一、数据传送指令1、通用传送指令指令名称操作码操作数例传送字或字节MOV目标,源MOVARRAY[SI],AL把字压入堆栈PUSH源PUSHAX把字弹出堆栈POP目标POPAX交换字节或字XCHG目标,源XCHGAX,BX字节翻译XLAT译码表XLATASCII-TAB
MOV指令完成把1字节或1字内容从源操作数传送到目的操作数格式:MOV目标,源立即数存储器段寄存器通用寄存器立即数不能做目的操作数无存储器间直接传送不能给CS、IP直接赋值不能用立即数对段寄存器赋值例:MOVAL,‘B’MOVDX,OFFSETARRAYMOVAL,AREA1MOVAREA2,AL
PUSH进栈指令格式:PUSH源若BX=2500HDS=2130HSP=0040HSS=2000H执行PUSHBXPUSHDS执行后SP=003CH2000:0000302100252000:0040栈底减1SP源操作数可以是通用寄存器、段寄存器、存储器。压栈时必须是字先压高字节、再压低字节,且SP减1
POP出栈指令格式:POP目的若:SP=003CHSS=2000H执行POPDSPOPBX执行后SP=0040HDS=2130HBX=2500H2000:0000302100252000:0040栈底加1SP目的操作数可以是通用寄存器、段寄存器、存储器。弹栈时必须是字先弹低字节、再弹高字节,且SP加12000:003C
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的十进制数转换成七段码TABLEDB40H,79H,24H,30H,19HDB12H,02H,78H,00H,18HMOVAL,5MOVBX,OFFSETTABLEXLATTABLE
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]这三条指令用于传送地址码,源操作数必须是存储器,目的操作数除段寄存器的16位寄存器。例:LEABX,6[DI]若:DI=0100H,DS=2000H,(20106H)=1234H,(20108H)=5678H则:LEABX,6[DI]BX=0106HLDSBX,6[DI]BX=1234HDS=5678H3、地址目标传送指令
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目的,源目的源+目的+CFINC目的目的目的+1AAADAA说明:源操作数为立即数、通用寄存器、存储器目的通用寄存器、存储器源、目不能都是存储器算术运算指令影响标志
例:ADDAL,18HADCBL,ALADCAX,DXADDAL,COST[BX]INCBLINCCXINCBYTEPTR[BX]INCWORDPTR[BX]
AAA为加法的ASCII调整指令,适用非压缩BCD码调整原则:若AL低4位>9或AF=1则ALAL+6,AL高4位清0,AF1CF1,AHAH+1否则:将AL高4位清0例:AX=9BL=5,求两数之和(AL=39H,BL=35H)ADDAL,BL;AL=0EHAAA;AX=0104H,非压缩BCD码14
DAA加法的十进制调整指令,适用压缩BCD码调整原则:若AL低4位>9或AF=1则ALAL+6,进行低字节调整若AL高4位>9或CF=1则ALAL+60,进行高字节调整,使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目的,源目的目的-源-CFDEC目的目的目的-1NEG目的目的0-目的CMP目的,源源-目的AASDAS说明:源操作数为立即数、通用寄存器、存储器目的通用寄存器、存储器源、目不能都是存储器算术运算指令影响标志
3、乘法指令MUL源IMUL源AAM说明:*乘法指令只给出一个源操作数,另一源操作数,目的操作数采用隐含寻址*乘法指令可字节与字节乘,可字与字乘字节乘:AXAL*源字乘:DXAXAX*源*源操作数可选寄存器、存储器(说明字还是字节)*乘法影响标志CF,OF
例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、除法指令DIV源IDIV源AAD说明:*除法指令只给出一个源操作数,另一源操作数,目的操作数采用隐含寻址*除法可完成字节或字除,取决于源操作数*字节除商AL,余数AHAX/源(字节)字除商AX,余数DXDXAX/源(字)*源操作数可选寄存器、存储器(说明字还是字节)*除法指令对标志无影响,但超过范围,产生中断CBWCWD
例1:完成两个无符号数7A86H,04H相除MOVAX,7A86HMOVDX,0MOVBL,04HMOVAX,7A86HDIVBLMOVBX,04H超过范围,产生除法中断DIVBX例2:-38/3的商和余数MOVAX,-38MOVAL,-38MOVCH,03HMOVCH,03HIDIVCHCBWIDIVCH
符号扩展:CBWAL符号扩展AXCWDAX符号扩展DX,AX
除法的ASCII调整:AADALAH*10+AL,AH0在做除法前先除例:完成非压缩BCD码37除5MOVAX,0307HMOVBL,05HAAD;AL=25HDIVBL;AL=7(商)AH=2(余数)
三、逻辑运算与移位指令逻辑运算指令名称操作码操作数功能非NOT目的目的目的与AND目的,源目的目的源或OR目的,源目的目的源异或XOR目的,源目的目的源测试TEST目的,源目的源
与指令用来清除或保留操作数中某些位或指令用来保留或使操作数某些位置1异或指令可使某些位取反,某些位不变测试指令完成的功能是与,但不回送结果逻辑运算指令对标志影响:NOT指令不影响标志,其余指令根据结果置SF,ZF,PF、CF与OF清0、AF不确定。
移位与循环指令逻辑左移SHL目的,计数值算术左移SAL目的,计数值逻辑右移SHR目的,计数值算术右移SAR目的,计数值循环左移ROL目的,计数值循环右移ROR目的,计数值带进位循环左移RCL目的,计数值带进位循环右移RCR目的,计数值
SHL/SALSHRSARROLRORRCLRCR00MMMCFCFCFCFCFCFCF
移位:逻辑左移无符号乘2逻辑右移无符号除2算术左移带符号乘2算术右移带符号除2循环指令用于按位检测,又能恢复原值场所8086循环和移位指令一次可移1位,也可移多位(CL)操作数形式:目的操作数可选用存储器、寄存器计数值选1或CL对标志影响:AF无定义、PF,SF,ZF根据结果定、OF移一位,根据结果定;移多位,不确定
例1:MOVAL,10000101BMOVCL,03H;右移三位=除8SHRAL,CL;AL=10H=16例2:MOVAL,10000000BMOVCL,03HSARAL,CL;AL=F0H=-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)字节SI1SIDI1DI字SI2SIDI2DI串比较:源串和目的串比较DS:(SI)-ES:(DI)相等1ZF,不相等0ZF字节SI1SIDI1DI字SI2SIDI2DI串扫描:用于扫描某个关键字字节AL-ES:(DI)DI1DI相等1ZF,不相等0ZF字AX-ES:(DI)DI2DI相等1ZF,不相等0ZF
存入串指令:把累加器内容存入指定附加段字节ALES:(DI)DI1DI字AXES:(DI)DI2DI取串指令:把数据段内容送累加器字节DS:(SI)ALSI1SI字DS:(SI)AXSI2SI
重复REP重复,直至CX=0等于/为零重复REPE/REPZZF=1重复串操作,直至CX=0不等/不为零重复REPNE/REPNZZF=0重复串操作,直至CX=0
例1:要求把程序段以SRC-MESS为偏移地址的字符串‘HELLO’传送到附加段以NEW-LOC的单元中。
例2:比较两个字符串,首址分别为PASSWORD,IN-WORD若输入字符串相同,程序开始运行,否则,程序驱动扬声器发声DATASEGMENTPASSWORDDB‘750430LI’IN-WORDDB‘750424LE’COUNTEQU8DATAENDSCODESEGMENTASSUMEDS:DATA,ES:DATA……LEASI,PASSWORDLEADI,IN-WORDMOVCX,COUNTCLDREPZCMPSJNESOUNDOK:……SOUND:……CODEENDS
在某一字符串中搜寻是否有字符A,若有,则把搜索次数记下来,送BX寄存器。若没有查到,则将BX的内容清0,设字符串起始地址为0MOVDI,OFFSETSTRINGMOVCX,COUNTMOVAL,‘A’CLDREPNESCASBJZFINDMOVDI,0FIND:MOVBX,DI
五、控制转移类指令控制转移类指令用于控制程序的走向8086的控制转移指令有无条件转移、条件转移、长转移、短转移。8086的转移指令有28条,分4组
1、条件转移指令1)直接标志转移(10条)JCCF=1JNCCF=0JZ/JEZF=1JNZ/JNEZF=0JSSF=1JNSSF=0JOOF=1JNOOF=0JP/JPEPF=1奇JNP/JPOPF=0偶
求AL,BL两数之和、若有进位,则AH置1,否则AH清0ADDAL,BLJCNEXTMOVAH,0JMPEXITNEXT:MOVAH,1EXIT:
2)间接标志转移(8条)无符号数JA/JNBECFZF=0高于/不低于等于JAE/JNBCF=0高于等于/不低于JB/JNAECF=1低于/不高于等于JBE/JNACFZF=1低于等于/不高于带符号数JG/JNLE(SFOF)ZF=0大于/不小于等于JGE/JNLSFOF=0大于等于/不小于JL/JNGESFOF=1小于/不大于等于JLE/JNG(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_INCINCZEROJMPNEXTPLUS:NEGT:ZERO:AGAIN:GRET_EQ:INCPLUSINCBXDECCXJNZAGAINP_INC:NEXT:TABLE:
2、无条件转移和过程调用1)JMP无条件转移段内直接寻址立即短转移JMPSHORTPROG_S(8位立即数)立即近转移JMPNEARPTRPRON_N(16位立即数)段内间接寻址以存储器或寄存器作为转移目标地址寄存器:JMPBX存储器:JMPWORDPTR[BX]段间直接寻址JMPFARPTRPROG_F段间间接寻址JMPDWORDPTR[BX]
2)过程调用和返回指令调用:CALL过程名返回:RETRETN
3)循环控制指令LOOPCXCX-1;(CX)‡0循环LOOPZ/LOOPECXCX-1;(CX)‡0ZF=1循环LOOPNZ/LOOPNECXCX-1;(CX)‡0ZF=0循环JCXZ(CX)=0循环
例1:设商店有8种商品,它们的价格分别为83元,76元,65元,84元,71元,49元,62元,58元,现将每种价格提价7元。DB83H,76H,65H,84HDB71H,49H,62H,58HDB8DUP(?)MOVCX,08HMOVBX,00MOVAL,OLD[BX]ADDAL,7DAAMOVNEW[BX],ALINCBXLOOPNEXTOLDNEWNEXT:
例2:设有一个50字节组成的数组存放在ARRAY开始的内存单元,现要对该数组元素进行测试,查找第一个非零元素。DBXX,XX,…MOVBX,OFFSETARRAYDECBXMOVCX,50INCBXCMP[BX],00LOOPENEXTARRAYNEXT:
例3:设一个由17个字符组成的字符串存放在STRING开始的内存,现要查找该字符串中是否包含空格符。若没有查到或尚未查完,则继续查找,直到找到第一个空格符或查完为止。DB‘PersonalComputer’MOVBX,OFFSETSTRINGDECBXMOVCX,17INCBXCMP[BX],20HLOOPNZNEXTNEXT:STRING
4)中断指令INTNINTOIRET
修改标志CLCCF0CMCCFCFSTCCF1CLDDF0STDDF1CLIIF0STIIF1六、处理器控制指令
8086与外部事件同步HLT停机WAIT等待ESC交权LOCK封锁
空操作NOP空操作
'
您可能关注的文档
- 最新微创技术在妇科手术中的合理应用-妇产科课件PPT课件
- 最新微型计算机原理与应用课件PPT课件
- 最新微型计算机控制技术任务8直流电机的PWM调速控制ppt课件PPT课件
- 最新微型计算机的基本系统-计算机基础操作课件PPT课件
- 最新微型计算机第4章课件PPT课件
- 最新微机作业ppt课件PPT课件
- 最新微机原理与接口技术教案ppt课件PPT课件
- 最新微机原理及应用课件PPT课件
- 最新微机原理第三章课件PPT课件
- 最新微机课程复习纲要ppt课件PPT课件
- 最新微格读写作课件PPT课件
- 最新微波实验课件PPT课件
- 最新微波技术与天线——电磁波导行与辐射工程第二版殷际杰电子教案第四章课件PPT课件
- 最新微波技术基础学习课件PPT课件
- 最新微波测量MicrowaveMeasurementppt课件PPT课件
- 最新微波通信基本原理ppt课件PPT课件
- 最新微生物冶金-PPT课件PPT课件
- 最新微生物冶金课件PPT课件