版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第五讲,微机原理与接口技术,第3章 8088/8086的指令系统,3.1 8086CPU的寻址方式 3.1.1 立即寻址 3.1.2 寄存器寻址 3.1.3 直接寻址 3.1.4 寄存器间接寻址 3.1.5 变址寻址 3.1.6 基址加变址寻址 3.2 8086/8088 CPU指令系统 3.2.1 数据传送指令 3.2.2 算术运算指令 3.2.3 逻辑运算和移位运算 3.2.4 串操作指令 3.2.5 程序控制指令 3.2.6 标志操作和处理器控制指令,上讲回顾,3.1 8086CPU的寻址方式 3.1.1 立即寻址 3.1.2 寄存器寻址 3.1.3 直接寻址 3.1.4 寄存器间接寻址
2、 3.1.5 变址寻址 3.1.6 基址加变址寻址 3.2 8086/8088 CPU指令系统 3.2.1 数据传送指令,3.2.2算术运算指令,80868088提供加、减、乘、除四种基本算术操作。这些操作都可用于字节或字的运算,也可以用于带符号数与无符号数的运算。带符号数用补码表示。同时80868088也提供了各种校正操作,故可以进行十进制算术运算。 参与加、减运算的操作数可如下图所示,3.2.2算术运算指令,1加法指令 (Addition) 一般形式:ADD OPRD1,OPRD2 ;不带进位的加法 功能:OPRD1OPRD1+OPRD2 完成两个操作数相加,结果送至目的操作数OPRD1。
3、目的操作数可以是累加器,任一通用寄存器以及存储器操作数。 例: ADD AL,30 ;累加器与立即数相加 ADD BX,3000H ;通用寄存器与存储单元内容相加 ADD DI,CX ;通用寄存器之间 ADD DX,DATABX+SI;通用寄存器与存储单元内容相加 ADD BETASI,DX ;存储器操作数与寄存器相加 这些指令对标志位CF、OF、PF、SF、ZF和AF有影响,3.2.2算术运算指令,一般形式:ADC OPRD1,OPRD2;带进位的加法 功能:OPRD1OPRD1+OPRD2 +CF 这条指令与上条指令类似,只是在两个操作数相加时,要把进位标志CF的现行值加上去,结果送至目的
4、操作数。 ADC指令主要用于多字节运算中。 例:若有两个四字节的数,已分别放在自FIRST和SECOND开始的存储区中,每个数占四个存储单元。存放时,最低字节在地址最低处,则可用以下程序段实现相加。 MOV AX,FIRST ADD AX,SECOND ;进行字运算 MOV THIRD,AX MOV AX,FIRST+2 ADC AX,SECOND+2 MOV THIRD+2,AX 这条指令对标志位的影响与ADD相同,3.2.2算术运算指令,一般形式:INC OPRD ;增量指令 功能:OPRDOPRD+1 完成对指定的操作数OPRD加1,然后返回此操作数。此指令主要用于在循环程序中修改地址指
5、针和循环次数等。 这条指令执行的结果影响标志位AF、OF、PF、SF和ZF,而对进位标志CF没有影响。 如:INC AL INC BYTE PTRBX,2.2算术运算指令,2减法指令(Subtraction) 一般形式:SUB OPRD1,OPRD2 ;不考虑借位 功能:OPRD1OPRD1 - OPRD2 完成两个操作数相减,即从OPRD1中减去OPRD2,结果放在OPRD1中。 例: SUB CX,BX SUB BP,CL 指令对标志位AF、CF、OF、PF、SF和ZF都有影响。 例 说明执行“MOV BX, 4336H; SUB BX,0136H”后对标志位的影响。 解:4336H=01
6、00 0011 0011 0110;(-0136H)原=1000 0001 0011 0110; (-0136H)补=1111 1110 1100 1010 0100 0011 0011 0110 0100 0011 0011 0110 + 1111 1110 1100 1010 - 0000 0001 0011 0110 0100 0010 0000 0000 0100 0010 0000 0000 结果对比发现:两种计算结果值相同,标志位OF=ZF=SF=0,PF=1也相同,但CF、AF却相反,标志CF=0,AF=0的值正确的;所以若采用补码求和代替减法运算,要把CF、AF的结果值求反后作
7、为最终结果,而其他值保持不变,3.2.2算术运算指令,一般形式:SBB OPRD1,OPRD2 ;考虑借位 功能:OPRD1OPRD1-OPRD2-CF 这条指令与SUB类似,只是在两个操作数相减时,还要减去借位标志CF的现行值 指令对标志位AF、CF、OF、PF、SF和ZF都有影响。 同ADC指令一样,本指令主要用于多字节操作数相减。 注意:若两个带符号数采用补码运算时,若CS表示最高位(符号位)的进位(对加法)或借位(对减法)(有进位或者借位时CS=1,否则为0);而CP表示数值部分最高位的进位(对加法)或借位(对减法)(有进位或者借位时CP=1,否则为0);当CS不等于CP时,结果产生溢
8、出(OF=1),否则不产生溢出(OF=0) ,即OF CS CP,3.2.2算术运算指令,形式:DEC OPRD;减量 功能:OPRDOPRD-1 对指令的操作数减1,然后送回此操作数,在相减时,把操作数作为一个无符号二进制数来对待。指令执行的结果,影响标志AF、OF、PF、SF和ZF但对CF标志不影响(即保持此指令以前的值)。 例: DEC BYTE PTRSI DEC CL,3.2.2算术运算指令,形式:NEG OPRD;求补 功能: (NEGDate) 对操作数OPRD取补: 相当于用零减去操数,再把结果送回操作数。(也就是已知负数的补码求负数原码的绝对值或已知负数原码的绝对值求其补码的
9、运算。) 例: NEG AL 若AL00111100,则取补后为11000100(即00000000011110011000100,也就是求绝对值为00111100的负数的补码) 若在字节操作时对-128,或在字操作时对-32768取补,则操作数没变化,但标志OF置位。此指令影响标志AF、CF、OF、PF、SF和ZF。此指令的结果一般总是使标志CF=1(总有借位),除非在操作数为零时,才使CF=0,3.2.2算术运算指令,形式:CMP OPRD1,OPRD2 (比较指令) 功能: OPRD1-OPRD2 比较指令完成两个操作数相减,使结果反映在标志位上,但并不送回结果(即不带回送的减法),目的
10、操作数不能为立即数;比较指令的两个操作数不允许同时为内存单元。 例: CMP AL,100 CMP DX,DI 比较指令主要用于比较两个数之间的关系。在比较指令之后,根据ZF标志即可判断两者是否相等,相等的比较: 若两者相等,相减以后结果为零,ZF标志为1,否则为0。 若两者不相等,则可在比较指令之后利用其它标志位的状态来确定两者的大小。 大小的比较: 如果是两个无符号数(如CMPAX,BX)进行比较,则可以根据CF标志的状态判断两数大小。若结果没有产生借位(CF=0),显然AXBX;若产生了借位(即CF1),则AXBX,3.2.2算术运算指令,带符号数比较: 例:比较54与24的大小 解:
11、54-24=54+(-24) -24补=11101000,54补=00110110 00110110 + 11101000 00011110 OF=0,SF=0,则被减数减数,即54 24 例:比较120与-74的大小 解:120-(-74)=120+74 01111000 +01001010 11000010 OF=1,SF=1,则被减数减数,即120 -74,对有符号数的比较操作,若与的值相同,则被减数大于等于减数,3.2.2算术运算指令,例:比较24与54的大小 解:24-54=24+(-54) 00011000 24的补码 + 11001010 -54的补码 11100010 OF=0
12、,SF=1,则被减数减数,即24 54 例:比较-24与120的大小 解:-24-120=-24补+ -120补 11101000 = -24补 + 10001000 = -120补 01110000 OF=1,SF=0,则被减数减数,即-24 120,对有符号数的比较操作,若与的值不同,则被减数小于减数,3.2.2算术运算指令,3乘法指令 (1) 无符号乘法指令MUL 格式: MUL OPRD 完成字节与字节相乘、字与字相乘,且被乘数默认放在AL或AX中,而源操作数由指令给出。8位数相乘,结果为16位数,放在AX中;16位数相乘结果为32位数,高16位放在DX,低16位放在AX中。注意:源操
13、作数不能为立即数。当结果的高半部分不为0, 即(AH)0或(DX) 0,则CF=1,OF=1;否则CF=0,OF=0。 例如: MOV AX,1234H; MUL AX ; 结果为DX:AX=1234H1234H MUL BYTE PTRBX+2AH,3.2.2算术运算指令,2) 带符号数乘法指令IMUL 格式: IMUL OPRD 同MUL一样可以进行字节与字节、字和字的乘法运算。结果放在AX或DX,AX中。当结果的高半部分不是结果的低半部分的符号扩展时,标志位CF和OF将置位1,否则CF=0,OF=0. 例如: IMUL CL ; IMUL CX ; IMUL WORD PTRBX,对乘法
14、运算,及不确定,3.2.2算术运算指令,4除法指令 (1) 无符号数除法指令 DIV 格式:DIV OPRD (2) 带符号数除法IDIV 格式:IDIV OPRD 该指令执行过程同DIV指令,但IDIV指令认为操作数的最高位为符号位,除法运算的结果商的最高位也为符号位 ,且余数的符号要与被除数相同,在除法指令中,在字节运算时被除数在AX中;运算结果商在AL中,余数在AH中。字运算时被除数为DX:AX构成的32位数,运算结果商在AX中,余数在DX中。 例如:AX=2000H,DX=200H,BX=1000H,则 DIV BX执行后,AX=2002H ,DX=0000。 除法运算中,源操作数可为
15、除立即寻址方式之外的任何一种寻址方式,且指令执行对所有的标志位都无定义。IDIV运算时,若商超正常范围(如-128 - +127,或 -32768 - +32767),则产生0号中断,3.2.2算术运算指令,例:设(AX)=0400H,(BL)=0B4H 即(AX)为无符号数的1024D,带符号数的+1024D (BL)为无符号数的180D,带符号数的-76D 执行 DIV BL的结果是:(AH)=7CH=124D 余数 (AL)=05H=5D 商 执行 IDIV BL的结果是:(AH)=24H=36D 余数 (AL)=0F3H=-13D 商,3.2.2算术运算指令,3) 字节扩展指令CBW
16、格式:CBW 该指令执行时将AL寄存器的最高位扩展到AH,即若D7=0,则AH=0;否则AH=0FFH。 (4) 字扩展指令CWD 格式:CWD 该指令执行时将AX寄存器的最高位扩展到DX,即若D15=0,则DX=0;否则DX=0FFFFH。 CBW、CWD指令操作不影响标志位。但这两条指令均为对带符号数符号位的扩展,若进行相除的数为无符号数,但需要扩展时,则在执行相应位扩展指令后,只需再将AH/DX中相应的扩展位清0即可,字节与字扩展指令的用途:由于除法指令中的字节运算要求被除数为16位数,而字运算要求被除数是32位数,在8086/8088系统中往往需要用符号扩展的方法取得被除数所要的格式,
17、因此指令系统中包括这两条符号扩展指令,本节小结,3.2.2 算术运算指令,3.2.2算术运算指令,5十进制调整指令 计算机中的算术运算,都是针对二进制数的运算,而人们在日常生活中习惯使用十进制。为此在8086/8088系统中,针对十进制算术运算有一类十进制调整指令。 在计算机中人们用BCD码表示十进制数,对BCD码计算机中有两种表示方法:一类为压缩(组合)BCD码,即规定每个字节表示两位BCD数;另一类称为非压缩(组合)BCD码,即用一个字节表示一位BCD数,在这字节的高四位用0填充。例如,十进制数25D,表示为压缩BCD数时为:25H;表示为非压缩BCD数时为:0205H,用两字节表示,3.
18、2.2算术运算指令,例:ADD AL,BL DAA 若执行前:AL=28H,BL=68H,则执行ADD后:AL=90H,AF=1;再执行DAA指令后,正确的结果为:AL=96H,CF=0,AF=1。 例: MUL BL AAM 若执行前:AL=07,BL=09,则执行MUL BL 后,AX=003FH,再执行AAM指令后,正确的结果为:AH=06H,AL=03H。 注意:BCD码进行乘除法运算时,一律使用无符号数形式。 DAA/DAS指令对OF无定义,只影响其它条件标志; AAA/AAS指令只影响AF和CF标志;AAM/AAD指令对OF、AF和CF无定义,只影响SF、PF和ZF标志,十进制调整
19、指令一览表,3.2.3逻辑运算和移位指令,1逻辑运算指令 (1) 一般格式:NOT OPRD 功能:对操作数求反,然后送回原处,操作数可以是寄存器或存储器内容。此指令对标志无影响。 例: NOT AX 执行前:( AX)=0000 0101 0000 0011=0503H 执行后 :(AX)=1111 1010 1111 1100=FAFCH,3.2.3逻辑运算和移位指令,2) 一般格式:AND OPRD1,OPRD2 功能:对两个操作数进行按位的逻辑“与”运算,结果送回目的操作数。其中目的操作数OPRD1可以是累加器、任一通用寄存器,或内存操作数(所有寻址方式)。源操作数OPRD2可以是立即
20、数、寄存器,也可以是内存操作数(所有寻址方式)。 8086/8088的AND指令可以进行字节操作,也可以进行字操作。 例: AND AL,0FH ;AL高4位置0,低4位保持不变 AND SI,0 ;将SI清0,3.2.3逻辑运算和移位指令,3) 一般格式:TEST OPRD1,OPRD2 功能:完成与AND指令相同的操作,结果反映在标志位上,但并不送回。通常使用它进行测试: 例: 若要检测 AL中的最低位是否为1,为1则转移。可用以下指令: TEST AL,01H JNZ THERE :结果不为零(ZF=0)转移 THERE: 例:若要检测CX中的内容是否为0,为0则转移。该如何做呢? TE
21、ST CX,0FFFFH JZ THERE :结果为零(ZF=1)转移 THERE,3.2.3逻辑运算和移位指令,4) 一般格式:OR OPRD1,OPRD2 功能:对指定的两个操作数进行逻辑“或”运算。结果送回目的操作数。其中,目的操作数OPRD1,可以是累加器,可以是任通用寄存器,也可以是一个内存操作数(所有寻址方式)。源操作数OPRD2,可以是立即数、寄存器,也可以是内存操作数(所有寻址方式)。 例: AND AL, 0FH AND AH,0F0H OR AL,0AH OR AX,0FFFH ;将AX低12位置1,3.2.3逻辑运算和移位指令,5) 一般格式:XOR OPRD1,OPRD
22、2 功能:对两个指定的操作数进行“异或”运算,结果送回目的操作数。 其中,目的操作数OPRD1可以是累加器,可以是任一个通用寄存器,也可以是一个内存操作数(全部寻址方式)。源操作数可以是立即数、寄存器,也可以是内存操作数(所有寻址方式)。 例: XOR AL,AL ;使AL清0 XOR CL,0FH ;使低4位取反,高4位不变 逻辑运算类指令中,单操作数指令NOT的操作数不能为立即数,双操作数逻辑指令中,必须有一个操作数为寄存器寻址方式,且目的操作数不能为立即数。它们对标志位的影响情况如下:NOT不影响标志位,其它四种指令将使CF=OF=0,AF无定义,而SF、ZF和PF则根据运算结果而定,3
23、.2.3逻辑运算和移位指令,2移位指令 (1)算术/逻辑移位指令 算术左移或逻辑左移指令 SALSHL OPRD,M 算术右移指令 SAR OPRD,M 逻辑右移指令 SHR OPRD,M M是移位次数,可以是1或寄存器CL 这些指令可以对寄存器操作数或内存操作数进行指定的移位,可以进行字节或字操作;可以一次只移1位,也可以移位由寄存器CL中的内容规定的次数。 例: SAL AX, 1 SAL AX, CL,3.2.3逻辑运算和移位指令,2)循环移位指令 ROL OPRD,M ;左循环移位 ROR OPRD,M ;右循环移位 RCL OPRD,M ;带进位左循环移位 RCR OPRD,M ;带
24、进位右循环移位,3.2.3逻辑运算和移位指令,前两条循环指令,未把标志位CF包含在循环的环中,后两条把标志位CF包含在循环的环中,作为整个循环的一部分。 循环指令可以对字节或字进行操作。操作数可以是寄存器操作数,也可以是内存操作数。可以是循环移位一次,也可以循环移位由CL的内容所决定的次数。 左移一位,只要左移以后的数未超出一个字节或一个字的表达范围,则原数的每一位的权增加了一倍,相当于原数乘2;右移一位相当于除以2,3.2.3逻辑运算和移位指令,算数移位指的是对带符号数进行移位,而逻辑移位是对无符号数移位,对于算数右移要保持符号位不变,而逻辑移位用“0”来填补已空出的位。并根据移位操作的结果置标志寄存器中的状态标志(AF标志除外)。若移位位数是
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 工程项目成本预算规划与审批流程表
- 环保行动倡议书写作指导作文13篇范文
- 财务管理周期性报告制作指南
- 品德行为准则诚信承诺书5篇
- 生产现场安全检查及整改方案
- 我的第一次运动会经历记事作文11篇
- 服务态度与标准执行承诺书(9篇)
- 企业危机管理响应及预案制定工具
- 社区服务实践活动履行承诺书5篇
- 产品研发流程标准化手册及操作指南
- YC/T 16.3-2003再造烟叶第3部分:造纸法
- SB/T 10439-2007酱腌菜
- GB/T 19016-2021质量管理项目质量管理指南
- 【课件】高一数学《对数函数及其性质》
- GB/T 12152-2007锅炉用水和冷却水中油含量的测定
- 素材-单元7实践制作图书订购单
- 钢材技术规格书
- 第十一届广东省安全(普法)知识竞赛题库大全(汇总版)
- 雅马哈便携式电子琴KB-100说明书
- 配电房高压室安全操作规程
- 二十国集团落实2030年可持续发展议程行动计划(中英对照)
评论
0/150
提交评论