汇编语言8086的指令系统方案.ppt

上传人(卖家):晟晟文业 文档编号:5194828 上传时间:2023-02-16 格式:PPT 页数:218 大小:1.58MB
下载 相关 举报
汇编语言8086的指令系统方案.ppt_第1页
第1页 / 共218页
汇编语言8086的指令系统方案.ppt_第2页
第2页 / 共218页
汇编语言8086的指令系统方案.ppt_第3页
第3页 / 共218页
汇编语言8086的指令系统方案.ppt_第4页
第4页 / 共218页
汇编语言8086的指令系统方案.ppt_第5页
第5页 / 共218页
点击查看更多>>
资源描述

1、第 2 章第二章第二章8088指令系统指令系统教学重点重点掌握常用指令功能及应用重点掌握常用指令功能及应用常用传送指令常用传送指令加减法指令加减法指令逻辑运算和移位指令逻辑运算和移位指令控制转移指令控制转移指令字符(串)输入输出功能调用字符(串)输入输出功能调用第 2 章本节主要指令系统 数据传送类指令:数据传送类指令:MOVXCHG、PUSHPOP、LEA 算术运算类指令:算术运算类指令:ADDADCINC、SUBSBBDECCMPNEG、MULIMUL、DIVIDIV 位操作类指令:位操作类指令:ANDORXORNOTTEST 控制转移类指令:控制转移类指令:JMPJccLOOP、CALL

2、RET、INT n 处理机控制类处理机控制类指令指令 NOP第 2 章什么是指令系统计算机的指令系统就是指该计算机能够执计算机的指令系统就是指该计算机能够执行的全部指令的集合行的全部指令的集合每种计算机都有它支持的指令集合每种计算机都有它支持的指令集合 1616位位80868086指令系统是指令系统是Intel 80 x86Intel 80 x86系列微系列微处理器指令系统的基础处理器指令系统的基础Intel 80 x86Intel 80 x86系列微处理器指令系统:系列微处理器指令系统:n整数指令整数指令n浮点指令浮点指令n多媒体指令多媒体指令第 2 章8086指令系统概述Intel 808

3、6Intel 8086指令系统共有指令系统共有117117条基本指令条基本指令可分成可分成6 6个功能组个功能组 数据传送类指令数据传送类指令 算术运算类指令算术运算类指令 位操作类指令位操作类指令 串操作类指令串操作类指令 控制转移类指令控制转移类指令 处理机控制类指令处理机控制类指令第 2 章学习指令的注意事项指令的功能指令的功能该指令能够实现何种操作。该指令能够实现何种操作。通常指令助记符就是指令功能的英文单词或通常指令助记符就是指令功能的英文单词或其缩写形式其缩写形式指令支持的寻址方式指令支持的寻址方式该指令中的操作数该指令中的操作数可以采用何种寻址方式可以采用何种寻址方式指令对标志的

4、影响指令对标志的影响该指令执行后是否对该指令执行后是否对各个标志位有影响,以及如何影响各个标志位有影响,以及如何影响其他方面其他方面该指令其他需要特别注意的地该指令其他需要特别注意的地方,如指令执行时的约定设置、必须预置的方,如指令执行时的约定设置、必须预置的参数、隐含使用的寄存器等参数、隐含使用的寄存器等第 2 章汇编语言指令格式由由4 4部分组成:部分组成:标号标号:指令助记符指令助记符 目的操作数目的操作数,源操作数源操作数 ;注释注释 标号标号表示该指令在主存中的逻辑地址表示该指令在主存中的逻辑地址 每个指令每个指令助记符助记符就代表一种指令就代表一种指令 目的和源目的和源操作数操作数

5、表示参与操作的对象表示参与操作的对象 注释注释是对该指令或程序段功能的说明是对该指令或程序段功能的说明教学提示全面而准确地理解每条指全面而准确地理解每条指令的功能和应用,是编写令的功能和应用,是编写汇编语言程序的关键汇编语言程序的关键第 2 章2.1 数据传送类指令数据传送是计算机中最基本、最重要的一种数据传送是计算机中最基本、最重要的一种操作操作传送指令也是最常使用的一类指令传送指令也是最常使用的一类指令传送指令把数据从一个位置传送到另一个位传送指令把数据从一个位置传送到另一个位置置除标志寄存器传送指令外,均除标志寄存器传送指令外,均不影响标志不影响标志位位重点掌握重点掌握nMOV XCHG

6、nPUSH POPnLEA第 2 章2.1.1 通用数据传送指令提供方便灵活的通用传送操作提供方便灵活的通用传送操作有有3条指令条指令MOVXCHGXLAT第 2 章1.传送指令MOV(move)把一个字节或字的操作数从源地址传送至目把一个字节或字的操作数从源地址传送至目的地址的地址MOV reg/mem,immMOV reg/mem,imm;立即数送寄存器或主存;立即数送寄存器或主存例题例题2.1MOV reg/mem/seg,regMOV reg/mem/seg,reg;寄存器送(段)寄存器或主存;寄存器送(段)寄存器或主存例题例题2.2MOV reg/seg,memMOV reg/seg

7、,mem;主存送(段)寄存器;主存送(段)寄存器例题例题2.3MOV reg/mem,segMOV reg/mem,seg;段寄存器送寄存器或主存;段寄存器送寄存器或主存例题例题2.5例例2.1:立即数传送:立即数传送mov al,4mov al,4;al4al4,字节传送,字节传送mov cx,mov cx,0 0ffhffh;cx00ffhcx00ffh,字传送,字传送mov si,200hmov si,200h;si0200hsi0200h,字传送,字传送mov mov byte ptrbyte ptr si,si,0ah0ah;byte ptr byte ptr 属性修饰符,说明是操作

8、数为字节属性修饰符,说明是操作数为字节mov mov word ptrword ptr si+2,si+2,0bh0bh;word ptr word ptr 说明是字操作说明是字操作 注意立即数是字节量还是字量注意立即数是字节量还是字量 明确指令是字节操作还是字操作明确指令是字节操作还是字操作例例2.2:寄存器传送:寄存器传送mov ax,bxmov ax,bx;axbxaxbx,字传送,字传送mov ah,almov ah,al;ahalahal,字节传送,字节传送mov ds,axmov ds,ax;dsaxdsax,字传送,字传送mov bx,almov bx,al;bxalbxal,字

9、节传送,字节传送例例2.3:存储器传送:存储器传送mov al,bxmov al,bxmov dx,bpmov dx,bp;dxss:bpdxss:bpmov es,simov es,si;esds:siesds:si 不存在存储器向存储器的传送指令不存在存储器向存储器的传送指令例例2.5:段寄存器传送:段寄存器传送mov si,dsmov si,dsmov ax,esmov ax,es;axesaxesmov ds,axmov ds,ax;dsaxesdsaxes 对段寄存器的操作有一些限制对段寄存器的操作有一些限制第 2 章MOV指令传送功能MOV并非任意传送并非任意传送立即数立即数段寄存

10、器段寄存器CS DS ES SSCS DS ES SS通用寄存器通用寄存器AX BX CX DXAX BX CX DXBP SP SI DIBP SP SI DI存存储储器器第 2 章非法传送种种两个操作数的类型不一致两个操作数的类型不一致n例如源操作数是字节,而目的操作数是字;例如源操作数是字节,而目的操作数是字;或相反或相反两个操作数不能都是存储器两个操作数不能都是存储器n传送指令很灵活,但主存之间的直接传送传送指令很灵活,但主存之间的直接传送却不允许却不允许段寄存器的操作有一些限制段寄存器的操作有一些限制n段寄存器属专用寄存器,对他们的操作能段寄存器属专用寄存器,对他们的操作能力有限力有

11、限两个操作数的类型要一致绝大多数双操作数指令,除非特别说明,目绝大多数双操作数指令,除非特别说明,目的操作数与源操作数必须类型一致,否则为非的操作数与源操作数必须类型一致,否则为非法指令法指令MOV AL,050AHMOV AL,050AH;非法指令:;非法指令:050Ah050Ah为字,而为字,而ALAL为字节为字节寄存器有明确的字节或字类型,有寄存器参寄存器有明确的字节或字类型,有寄存器参与的指令其操作数类型就是寄存器的类型与的指令其操作数类型就是寄存器的类型对于存储器单元与立即数同时作为操作数的对于存储器单元与立即数同时作为操作数的情况,必须显式指明;情况,必须显式指明;byte ptr

12、byte ptr指示字节类指示字节类型,型,word ptrword ptr指示字类型指示字类型第 2 章两个操作数不能都是存储器80868086指令系统不允许两个操作数都是存储单指令系统不允许两个操作数都是存储单元(除串操作指令),要实现这种传送,可通元(除串操作指令),要实现这种传送,可通过寄存器间接实现过寄存器间接实现mov ax,buffer1mov ax,buffer1;axbuffer1axbuffer1(将(将buffer1buffer1内容送内容送axax)mov buffer2,axmov buffer2,ax;buffer2axbuffer2ax;这里;这里buffer1b

13、uffer1和和buffer2buffer2是两个字变量是两个字变量;实际表示直接寻址方式;实际表示直接寻址方式第 2 章要小心段寄存器的操作不允许立即数传送给段寄存器不允许立即数传送给段寄存器MOV DS,100H;非法指令:立即数不能传送段寄存器;非法指令:立即数不能传送段寄存器不允许直接改变不允许直接改变CS值值MOV CS,SI;不允许使用的指令;不允许使用的指令不允许段寄存器之间的直接数据传送不允许段寄存器之间的直接数据传送MOV DS,ES;非法指令:不允许段寄存器间传送;非法指令:不允许段寄存器间传送第 2 章第 2 章2.交换指令XCHG(exchange)把两个地方的数据进行

14、互换把两个地方的数据进行互换寄存器与寄存器之间对换数据寄存器与寄存器之间对换数据寄存器与存储器之间对换数据寄存器与存储器之间对换数据不能在存储器与存储器之间对换数据不能在存储器与存储器之间对换数据XCHG reg,reg/memXCHG reg,reg/mem;reg reg reg/memreg/mem例题例题2.7例题例题2.6例例2.6:寄存器间交换:寄存器间交换mov ax,1234hmov ax,1234h;ax=1234hax=1234hmov bx,5678hmov bx,5678h;bx=5678hbx=5678hxchg ax,bxxchg ax,bx;ax=5678hax=

15、5678h,bx=1234hbx=1234hxchg ah,alxchg ah,al;ax=7856hax=7856h例例2.7:寄存器与存储器交换:寄存器与存储器交换xchg ax,2000hxchg ax,2000h;字交换;字交换;等同于;等同于 xchg 2000h,axxchg 2000h,axxchg al,2000h xchg al,2000h;字节交换;字节交换;等同于;等同于 xchg 2000h,alxchg 2000h,al 第 2 章2.1.2 堆栈操作指令什么是堆栈?什么是堆栈?堆栈是主存当中的一块连续的存储区域。堆栈是主存当中的一块连续的存储区域。有关堆栈的内容主要

16、包括:有关堆栈的内容主要包括:堆栈的初始化数据的进栈数据的出栈第 2 章2.1.2 堆栈操作指令堆栈的初始化堆栈的初始化堆栈如同一个倒置的水桶。正置水桶的情况水桶起始位置水面上沿水桶结束位置水桶起始位置水面上沿水桶结束位置(A)不装水(B)装水第 2 章2.1.2 堆栈操作指令倒置水桶的情况倒置水桶的情况水桶开始位置水面上沿水桶结束位置水桶开始位置水面上沿水桶结束位置(A)不装水(B)装水说明:装水前和装水后比较水桶开始位置不变,水面结束位置不变,水面上沿变化第 2 章2.1.2 堆栈操作指令堆栈的情况与倒置水桶类似堆栈的情况与倒置水桶类似堆栈初始化的情况如下:主存高地址低地址设置堆栈段寄存器

17、(设置倒置的水桶开始位置)SS XXXXH设置堆栈指针寄存器设置水桶的结束位置和水面上沿SP YYYYHSS:00SS:SP共SP个存储单元第 2 章2.1.2 堆栈操作指令高地址低地址SS:00SS:SP0(初设值)堆栈压入数据前后的比较SS:00SS:SP0SS:SP0-234H12H未装入数据装入3412H后第 2 章2.1.2 堆栈操作指令三个名词(水桶的三个位置)堆栈起始地址堆栈起始地址:堆栈存储区域开始的地址,即SS:00。(如果不重新初始化堆栈,它是不变的)栈底栈底:初始化时的SS:SP。(如果不重新初始化堆栈,它是不变的)栈顶:栈顶:当前的SS:SP。由于SP值会随着压入数据,

18、或者弹出数据而改变,因此栈顶位置是变化的。更确切的说:栈顶实际上是堆栈中存储的数据的顶部第 2 章堆栈的操作堆栈只有两种基本操作:进栈和出栈,堆栈只有两种基本操作:进栈和出栈,对应两条指令对应两条指令PUSH和和POPWord 1Word 2Word 3Word 4Word 5StackPUSHPOPPUSH;进栈指令先使堆栈指;进栈指令先使堆栈指针针SP减减2,然后把一个字操作数,然后把一个字操作数存入堆栈顶部存入堆栈顶部POP;出栈指令把栈顶的一;出栈指令把栈顶的一个字传送至指定的目的操作数,个字传送至指定的目的操作数,然后堆栈指针然后堆栈指针SP加加2高高低低第 2 章1.进栈指令PUS

19、Hpush axpush axpush 2000hpush 2000hPUSH r16/m16/segPUSH r16/m16/seg操作过程:操作过程:SPSPSPSP2 2 SS:SPr16/m16/seg SS:SPr16/m16/seg 12StackPUSHSP-2AX内容:34执行PUSH AX过程第 2 章2.出栈指令POPpop axpop axpop 2000hpop 2000hPOP r16/m16/segPOP r16/m16/seg;r16/m16/segSS:SPr16/m16/segSS:SP;SPSPSPSP2 212StackPOPSP+234AX内容:执行PO

20、P AX过程第 2 章堆栈的特点堆栈操作的单位是字,进栈和出栈只对字堆栈操作的单位是字,进栈和出栈只对字量量字量数据从栈顶压入和弹出时,都是低地字量数据从栈顶压入和弹出时,都是低地址字节送低字节,高地址字节送高字节址字节送低字节,高地址字节送高字节堆栈操作遵循先进后出原则,但可用存储堆栈操作遵循先进后出原则,但可用存储器寻址方式随机存取堆栈中的数据器寻址方式随机存取堆栈中的数据堆栈常用来堆栈常用来n临时存放数据临时存放数据n传递参数传递参数n保存和恢复寄存器保存和恢复寄存器例题例题2.11例例2.11:现场保护恢复:现场保护恢复push axpush ax;进入子程序后;进入子程序后push

21、bxpush bxpush dspush ds.pop dspop ds;返回主程序前;返回主程序前pop bxpop bxpop axpop ax第 2 章堆栈和队列堆栈:按照后进先出堆栈:按照后进先出(LIFO)(LIFO)的原则组织的存储的原则组织的存储器空间(栈)器空间(栈)队列:按照先进先出队列:按照先进先出(FIFO)(FIFO)的原则组织的存储的原则组织的存储器空间(堆)器空间(堆)LIFOFIFO第 2 章2.1.3.标志位操作标志位操作指令直接对标志位操作指令直接对CF、DF、IF标标志进行复位或置位,常用于特定的情况志进行复位或置位,常用于特定的情况对标志位进行设置的指令对

22、标志位进行设置的指令nCLC STC CMCnCLD STDnCLI STI第 2 章进位标志操作指令用于任意设置进位标志用于任意设置进位标志CLCCLC;复位进位标志:;复位进位标志:CF0CF0STCSTC;置位进位标志:;置位进位标志:CF1CF1CMCCMC;求反进位标志:;求反进位标志:CFCFCFCF参考动画参考动画第 2 章中断标志操作指令在编写中断服务程序时,需要控制在编写中断服务程序时,需要控制可屏蔽中断的允许和禁止可屏蔽中断的允许和禁止CLICLI;复位中断标志:;复位中断标志:DF0DF0STISTI;置位中断标志:;置位中断标志:DF1DF1第 2 章2.1.4 地址传

23、送指令地址传送指令将存储器单元的逻辑地址地址传送指令将存储器单元的逻辑地址送至指定的寄存器送至指定的寄存器n有效地址传送指令有效地址传送指令 LEA注意不是获取存储器单元的内容注意不是获取存储器单元的内容第 2 章有效地址传送指令LEA(load EA)将存储器操作数的有效地址传送至将存储器操作数的有效地址传送至指定的指定的16位寄存器中位寄存器中例题例题2.13LEA r16,memLEA r16,mem;r16memr16mem的有效地址的有效地址EAEA 获得主存单元的有效地址;不是物理地获得主存单元的有效地址;不是物理地址,也不是该单元的内容址,也不是该单元的内容 可以实现计算功能可以

24、实现计算功能例例2.13:获取有效地址:获取有效地址使用时要注意它与使用时要注意它与MOV指令的区别,指令的区别,MOV指令指令传送的一般是源操作数中的内容而不是地址。传送的一般是源操作数中的内容而不是地址。例例 1 假 设:假 设:S I=1 0 0 0 H ,D S=5 0 0 0 H,(51000H)=1234H 执行指令执行指令 LEA BX,SI后,后,BX=1000H 执行指令执行指令 MOV BX,SI后,后,BX=1234H第 2 章2.1.5 输入输出指令(IN、OUT)CPU通过输入输出指令与通过输入输出指令与外设外设(外部设备)进行数据交换;进行数据交换;8086CPU只

25、能只能通过输入输出指令与外设通过输入输出指令与外设进行数据交换进行数据交换CPU与外设进行数据交换的途径:与外设进行数据交换的途径:通过访问通过访问端口端口(Port)或者叫)或者叫I/O地址地址来访问外设来访问外设几点说明几点说明CPU端口外设第 2 章2.1.5 输入输出指令(IN、OUT)端口地址范围端口地址范围8086用于寻址外设端口的地址线为用于寻址外设端口的地址线为16条,条,端口最多为端口最多为21665536(64K)个;)个;端口号为端口号为0000HFFFFH每个端口的宽度每个端口的宽度可以从(向)每个端口读出(写入)一个可以从(向)每个端口读出(写入)一个字节的外设数据字

26、节的外设数据第 2 章输入输出寻址方式8086的端口有的端口有64K个,无需分段,设计个,无需分段,设计有两种寻址方式有两种寻址方式v直接寻址直接寻址:只用于寻址:只用于寻址00HFFH前前256个个端口,操作数端口,操作数i8表示端口号表示端口号vDX间接寻址间接寻址:可用于寻址全部:可用于寻址全部64K个端口,个端口,DX寄存器的值就是端口号寄存器的值就是端口号大于大于FFH的端口只能采用间接寻址方式的端口只能采用间接寻址方式第 2 章外设数据的存放位置CPU与外设进行数据交换时,读出或写入的数据存放的位置只能是:AL(读取8位数据时)AX(读取16位数据时)由内部电路结构决定第 2 章I

27、N和OUT左操作数是目的,右操作数是源。IN的左操作数被限制为AX或AL,OUT的右操作数被限制为AX或AL.第 2 章输入指令IN将外设数据传送给将外设数据传送给CPU内的内的AL/AXIN AL,i8IN AL,i8;字节输入:;字节输入:ALI/OALI/O端口(端口(i8i8直接寻址)直接寻址)IN AL,DXIN AL,DX;字节输入:;字节输入:ALI/OALI/O端口(端口(DXDX间接寻址)间接寻址)IN AX,i8IN AX,i8;字输入:;字输入:AXI/OAXI/O端口(端口(i8i8直接寻址)直接寻址)IN AX,DXIN AX,DX;字输入:;字输入:AXI/OAXI

28、/O端口(端口(DXDX间接寻址)间接寻址)例题例题2.15例例2.15:输入字量:输入字量;直接寻址,字节量输入;直接寻址,字节量输入in al,21hin al,21hmov ah,almov ah,alin al,20hin al,20h;直接寻址,字量输入;直接寻址,字量输入in ax,20hin ax,20h;间接寻址,字量输入;间接寻址,字量输入mov dx,20hmov dx,20hin ax,dxin ax,dx第 2 章输出指令OUT将将CPU内的内的AL/AX数据传送给外设数据传送给外设OUT i8,ALOUT i8,AL;字节输出:;字节输出:I/OI/O端口端口ALAL

29、(i8i8直接寻址)直接寻址)OUT DX,ALOUT DX,AL;字节输出:;字节输出:I/OI/O端口端口ALAL(DXDX间接寻址)间接寻址)OUT i8,AXOUT i8,AX;字输出:;字输出:I/OI/O端口端口AXAX(i8i8直接寻址)直接寻址)OUT DX,AXOUT DX,AX;字输出:;字输出:I/OI/O端口端口AXAX(DXDX间接寻址)间接寻址)例题例题2.16例例2.16:输出字节量:输出字节量;间接寻址,字节量输出;间接寻址,字节量输出mov dx,3fchmov dx,3fchmov al,80hmov al,80hout dx,alout dx,al第 2

30、章习题1.1.堆栈的操作原则是堆栈的操作原则是_。A A 先进先出先进先出 B B 后进先出后进先出 C C 后进后出后进后出 D D 循环循环2.“MOV SP,3210H”2.“MOV SP,3210H”和和“PUSH AX”PUSH AX”指令执行后,指令执行后,SPSP寄存器寄存器的值是的值是_。A 3211H B 320EH C 320FH D 3212H A 3211H B 320EH C 320FH D 3212H 3.3.设设SPSP初值为初值为2000H2000H,执行指令,执行指令“push ax”push ax”后,后,SPSP的值是的值是_ _ A 1FFFH B 19

31、98H C 2002H D 1FFEH A 1FFFH B 1998H C 2002H D 1FFEH 4.8086/80884.8086/8088系统中,堆栈的操作可以是字节或字操作。系统中,堆栈的操作可以是字节或字操作。1.B 2.B 3.D 4.1.B 2.B 3.D 4.错。错。8086/80888086/8088系统中,堆栈的操作是字操作。系统中,堆栈的操作是字操作。第 2 章习题21假设当前SP700H,执行pop ax指令后,SP内容变为_ A 6FEH B 6FFH C 701H D 702H2.已知字变量buffer等于1234h,它所在的偏移地址为5678h,执行下列指令后

32、Ax=?mov ax,buffer lea ax,buffer A 1234h B 5678h C 3412h D 7856h3.用一条指令实现将AXBX+SI的方法是_ A xchg ax,bxsi B mov ax,bxsi C mov ax,bx+si D lea ax,bxsi 4.指令“lea ax,bx+di+50”的功能是什么?1.D 2.B 3.D 4.指令“lea ax,bx+di+50”可以实现AXBXDI50的功能。第 2 章习题31、假设假设SS=2000H,SP=0100H,AX=2021H,执行命,执行命令令PUSH AX,存放数据,存放数据21H的堆栈区的物理地址

33、是()的堆栈区的物理地址是()、2010220102 B B、2010120101 C C、200FF200FF D D、200FE200FE、假定、假定DSDS4000H DI=0100H 40100H=55H 4000H DI=0100H 40100H=55H 40101H=AAH,40101H=AAH,执行执行”LEA BX,DI”LEA BX,DI”后后,BX=(),BX=()、AA55 B、55AA C、0100 D、41001D 2C第 2 章2.2 算术运算类指令四则运算是计算机经常进行的一种操作。算四则运算是计算机经常进行的一种操作。算术运算指令实现二进制(和十进制)数据的术运

34、算指令实现二进制(和十进制)数据的四则运算四则运算请注意算术运算类指令请注意算术运算类指令对标志的影响对标志的影响n掌握:掌握:ADD/ADC/INC、SUB/SBB/DEC/NEG/CMPn熟悉:熟悉:MUL/IMUL、DIV/IDIVn理解:理解:CBW/CWD、DAA/DAS、AAA/AAS/AAM/AAD第 2 章加法指令ADD功能:功能:ADD指令将源与目的操作数相加,结果送到目的操作数指令将源与目的操作数相加,结果送到目的操作数对状态标志的影响:对状态标志的影响:ADD指令按状态标志的定义相应设置状态标志指令按状态标志的定义相应设置状态标志ADD reg,imm/reg/memAD

35、D reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memADD mem,imm/regADD mem,imm/reg;memmemmemmemimm/regimm/reg例题例题2.17a例例2.17a:加法运算:加法运算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhadd al,07hadd al,07h;al=02hal=02hmov word ptr 200h,4652hmov word ptr 200h,4652h;200h=4652h200h=4652hmov bx,1fehmov bx,1feh;bx=1f

36、ehbx=1fehadd al,bladd al,bl;al=00hal=00hadd word ptr bx+2,0f0f0hadd word ptr bx+2,0f0f0h;200h=3742h200h=3742h第 2 章带进位加法指令ADCADC指令将源与目的操作数相加,再加上进位指令将源与目的操作数相加,再加上进位CF标志,结果送到目的操作数标志,结果送到目的操作数ADC指令按状态标志的定义相应设置状态标志指令按状态标志的定义相应设置状态标志ADC指令主要与指令主要与ADD配合,实现多精度加法运算配合,实现多精度加法运算ADC reg,imm/reg/memADC reg,imm/r

37、eg/mem;regregregregimm/reg/memimm/reg/memCFCFADC mem,imm/regADC mem,imm/reg;memmemmemmemimm/regimm/regCFCF例题例题2.17b例例2.17b:双字加法:双字加法mov ax,4652hmov ax,4652h;ax=4652hax=4652hadd ax,0f0f0hadd ax,0f0f0h;ax=3742hax=3742h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hadc dx,0f0f0hadc dx,0f0f0h;dx=f325

38、hdx=f325h,CF=0CF=0;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0HF325 3742HF325 3742H第 2 章增量指令INC(increment)INC指令对操作数加指令对操作数加1(增量)(增量)INC指令不影响进位指令不影响进位CF标志,按定义设标志,按定义设置其他状态标志置其他状态标志INC reg/memINC reg/mem;reg/memreg/memreg/memreg/mem1 1inc bxinc bxinc byte ptr bxinc byte ptr bx第 2 章减法指令SUB(subtra

39、ct)SUB指令将目的操作数减去源操作数,指令将目的操作数减去源操作数,结果送到目的操作数结果送到目的操作数SUB指令按照定义相应设置状态标志指令按照定义相应设置状态标志SUB reg,imm/reg/memSUB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memSUB mem,imm/regSUB mem,imm/reg;memmemmemmemimm/regimm/reg例题例题2.18a例例2.18a:减法运算:减法运算mov al,0fbhmov al,0fbh;al=0fbhal=0fbhsub al,07hsub al,07h;a

40、l=0f4hal=0f4h,CFCF0 0mov word ptr 200h,4652hmov word ptr 200h,4652h;200h=4652h200h=4652hmov bx,1fehmov bx,1feh;bx=1fehbx=1fehsub al,blsub al,bl;al=al=0f6h0f6hsub word ptr bx+2,0f0f0hsub word ptr bx+2,0f0f0h;200h=5562h200h=5562h,CFCF1 1第 2 章带借位减法指令SBBSBB指令将目的操作数减去源操作数,再减指令将目的操作数减去源操作数,再减去借位去借位CF(进位),

41、结果送到目的操作数。(进位),结果送到目的操作数。SBB指令按照定义相应设置状态标志指令按照定义相应设置状态标志SBB指令主要与指令主要与SUB配合,实现多精度减法配合,实现多精度减法运算运算SBB reg,imm/reg/memSBB reg,imm/reg/mem;regregregregimm/reg/memimm/reg/memCFCFSBB mem,imm/regSBB mem,imm/reg;memmemmemmemimm/regimm/regCFCF例题例题2.18b例例2.18b:双字减法:双字减法mov ax,4652hmov ax,4652h;ax=4652hax=4652

42、hsub ax,0f0f0hsub ax,0f0f0h;ax=5562hax=5562h,CF=1CF=1mov dx,0234hmov dx,0234h;dx=0234hdx=0234hsbb dx,0f0f0hsbb dx,0f0f0h;dx=1143hdx=1143h,CF=1CF=1;DX.AXDX.AX0234 4652H0234 4652HF0F0 F0F0HF0F0 F0F0H1143 5562H1143 5562H第 2 章减量指令DEC(decrement)DEC指令对操作数减指令对操作数减1(减量)(减量)DEC指令不影响进位指令不影响进位CF标志,按定义标志,按定义设置其

43、他状态标志设置其他状态标志DEC reg/memDEC reg/mem;reg/memreg/memreg/memreg/mem1 1dec cxdec cxdec word ptr sidec word ptr si INC指令和指令和DEC指令都是单操作数指令指令都是单操作数指令 主要用于对计数器和地址指针的调整主要用于对计数器和地址指针的调整第 2 章求补指令NEG(negative)NEG指令对操作数执行求补运算:用指令对操作数执行求补运算:用零减去操作数,然后结果返回操作数零减去操作数,然后结果返回操作数求补运算也可以表达成:将操作数按位求补运算也可以表达成:将操作数按位取反后加取反

44、后加1NEG指令对标志的影响与用零作减法指令对标志的影响与用零作减法的的SUB指令一样指令一样NEG reg/memNEG reg/mem;reg/mem0reg/mem0reg/memreg/mem例题例题2.19例例2.19:求补运算:求补运算mov ax,0ff64hmov ax,0ff64hneg alneg al;ax=ff9chax=ff9ch,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF=1CF=1sub al,9dhsub al,9dh;ax=ffffhax=ffffh,OF=0OF=0、SF=1SF=1、ZF=0ZF=0、PF=1PF=1、CF

45、=1CF=1neg axneg ax;ax=0001hax=0001h,OF=0OF=0、SF=0SF=0、ZF=0ZF=0、PF=0PF=0、CF=1CF=1dec aldec al;ax=0000hax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=1、CF=1CF=1neg axneg ax;ax=0000hax=0000h,OF=0OF=0、SF=0SF=0、ZF=1ZF=1、PF=1PF=1、CF=0CF=0第 2 章比较指令CMP(compare)CMP指令将目的操作数减去源操作数,按指令将目的操作数减去源操作数,按照定义相应设置状态标志照定义相应

46、设置状态标志CMP指令执行的功能与指令执行的功能与SUB指令,但结果指令,但结果不回送目的操作数不回送目的操作数CMP reg,imm/reg/memCMP reg,imm/reg/mem;regregimm/reg/memimm/reg/memCMP mem,imm/regCMP mem,imm/reg;memmemimm/regimm/reg例题例题2.20例例2.20:比较:比较AL与与100cmp al,100cmp al,100;al-100al-100jb belowjb below;al100al100,跳转到,跳转到belowbelow执行执行sub al,100sub al,

47、100;al100al100,alal-100alal-100inc ahinc ah;ahah+1ahah+1below:below:.执行比较指令之后,可以根据标志执行比较指令之后,可以根据标志判断两个数是否相等、大小关系等判断两个数是否相等、大小关系等第 2 章2.2.3 乘法指令MUL r8/m8MUL r8/m8;无符号字节乘法;无符号字节乘法;AXALAXALr8/m8r8/m8MUL r16/m16MUL r16/m16;无符号字乘法;无符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16IMUL r8/m8IMUL r8/m8;有符号字节乘法;有符号字节乘法;A

48、XALAXALr8/m8r8/m8IMUL r16/m16IMUL r16/m16;有符号字乘法;有符号字乘法;DX.AXAXDX.AXAXr16/m16r16/m16第 2 章乘法指令乘法指令分无符号和有符号乘法指令分无符号和有符号乘法指令乘法指令的源操作数显式给出,乘法指令的源操作数显式给出,隐含使用另隐含使用另一个操作数一个操作数AX和和DX字节量相乘:字节量相乘:AL与与r8/m8相乘,得到相乘,得到16位位的结果,存入的结果,存入AX字量相乘:字量相乘:AX与与r16/m16相乘,得到相乘,得到32位位的结果,其高字存入的结果,其高字存入DX,低字存入,低字存入AX2.2.3 乘法指

49、令第 2 章无符号和有符号乘法指令在功能上的区别无符号和有符号乘法指令在功能上的区别无符号乘法,将两个操作数看成是无符号数无符号数。计算完成后,将两个操作数乘积存入相应寄存器有符号乘法,将两个操作数看成是有符号数补码有符号数补码。计算完成后,将两个操作数乘积存入相应寄存器例题例例2.21:乘法运算:乘法运算mov al,0b4hmov al,0b4h;al=b4h=180al=b4h=180mov bl,11hmov bl,11h;bl=11h=17bl=11h=17mul blmul bl;ax=Obf4h=3060ax=Obf4h=3060;OF=CF=1OF=CF=1,AXAX高高8 8

50、位不为位不为0 0mov al,0b4hmov al,0b4h;al=b4h=al=b4h=7676mov bl,11hmov bl,11h;bl=11h=17bl=11h=17imul blimul bl;ax=faf4h=ax=faf4h=12921292;OF=CF=1OF=CF=1,AXAX高高8 8位含有效数字位含有效数字第 2 章乘法指令乘法指令利用利用OF和和CF判断乘积的高一半是否判断乘积的高一半是否具有有效数值具有有效数值乘法指令对标志的影响乘法指令如下影响乘法指令如下影响OF和和CF标志:标志:nMUL指令指令若乘积的高一半(若乘积的高一半(AH或或DX)为)为0,则则OF

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 办公、行业 > 各类PPT课件(模板)
版权提示 | 免责声明

1,本文(汇编语言8086的指令系统方案.ppt)为本站会员(晟晟文业)主动上传,163文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。
2,用户下载本文档,所消耗的文币(积分)将全额增加到上传者的账号。
3, 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(发送邮件至3464097650@qq.com或直接QQ联系客服),我们立即给予删除!


侵权处理QQ:3464097650--上传资料QQ:3464097650

【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。


163文库-Www.163Wenku.Com |网站地图|