《汇编语言程序设计》 .ppt

上传人:文库蛋蛋多 文档编号:2346624 上传时间:2023-02-14 格式:PPT 页数:160 大小:1.98MB
返回 下载 相关 举报
《汇编语言程序设计》 .ppt_第1页
第1页 / 共160页
《汇编语言程序设计》 .ppt_第2页
第2页 / 共160页
《汇编语言程序设计》 .ppt_第3页
第3页 / 共160页
《汇编语言程序设计》 .ppt_第4页
第4页 / 共160页
《汇编语言程序设计》 .ppt_第5页
第5页 / 共160页
点击查看更多>>
资源描述

《《汇编语言程序设计》 .ppt》由会员分享,可在线阅读,更多相关《《汇编语言程序设计》 .ppt(160页珍藏版)》请在三一办公上搜索。

1、计算机组成原理及汇编语言(第4章),主讲教师:曹雪梅授课班级:09高职铁路通信信号授课时间:2010年9月,呼和浩特职业学院教案首页,课程主要内容,计算机组成原理汇编语言,运算器,控制器,存储器,输入设备,输出设备,工作原理和逻辑实现,总线系统中断系统,80 x86寻址方式、指令系统以及汇编语言程序设计,本章主要内容,80X86寻址方式 指令、程序、寻址方式、指令系统等基本概念 与数据有关及与转移地址有关的寻址方式80X86指令系统 数据传送指令、算术运算指令、逻辑指令 串处理指令、控制转移指令和处理机控制指令8086/8088伪指令 数据定义及存储分配伪指令、表达式赋值伪指令 段定义伪指令及

2、程序开始和结束伪指令上机操作基本过程及汇编语言源程序书写格式,第四章 80X86寻址方式及指令系统,运算器控制器存储器输入设备输出设备,一个完整的计算机系统是由硬件系统和软件系统两大部分所组成,硬件系统,控制器,控制计算机各部件协调的工作,(指令),若干条指令的有序集合称为程序,用计算机语言来描述指令,机器语言 汇编语言 高级语言,软件系统,计算机语言的发展,机器语言,FORTRANBASICCOBOLPASCALC/C+JAVA.,各种计算机语言主要特点比较,应用优势:对于解决某些领域的问题,如操作系统,实时控制和处理、加密/解密、软件调试、病毒分析等领域具有独特的优势。,缺点:可移植性差、

3、可读性差,汇编语言的特点(1)可直接控制硬件,充分发挥硬件功能。(2)汇编语言程序代码质量高,占用内存空间 少,执行速度快。,【基本概念】,1.指令:规定机器执行某种操作的命令,2.指令码:表示一条指令意义的二进制编码,3.指令格式:指令码的编码规则,4.指令系统:是指一台计算机所能执行的全部指令的集合,5.程序:使计算机执行某个特定任务的一组相关指令的集合,一般形式为:,(完成什么操作,必须有),(指出参加操作的对象),不同的微处理器有不同的指令系统,80X86汇编语言指令格式,标号场:操作场 操作数场;注释场,(用 括起来的部分表示在指令中可有可无),思考题,指令格式至多由几部分组成?分别

4、是什么?指令格式至少由几部分组成?分别是什么?,范例:,MOV CL,0;将(CL)清0 L:AND AX,AX;判断(AX)的值是否为零 JZ EXIT;(AX)=0时,结束转到EXIT SAL AX,1;将AX的最高位移入CF中 JNC L;如果CF=0,转到L处执行 INC CL;如果CF=1,则(CL)+1送到CL中 JMP L;转到L处执行EXIT:,功能:统计AX寄存器中“1”的个数,并将结果存放在CL寄存器中,操作场,操作数场,注释场,一、80X86寻址方式,1.寻址方式,就是指寻找操作数存放地址的方式,2.寻址方式分类,(1)与数据有关的寻址方式(2)与转移地址有关的寻址方式,

5、数据类型的转移地址类型的,确定操作数的地址,确定程序转移地址,3.与数据有关的寻址方式,数据能存放在哪里?,寻址方式概括起来有三大类:,8086/8088寄存器,(1)段寄存器,作用:段寄存器用来存放不同段的首地址,将主存划分为出四个段,分别称为代码段、数据段、堆栈段和附加段。,名称:CS代码段 DS数据段 SS堆栈段 ES附加段,含义:代码段:用来存放程序代码 数据段:用来存放与程序有关的数据 堆栈段:用来存放按先进后出顺序存取的信息 附加段:用来存放运算结果或辅助数据,存储单元地址,偏移地址,存储器,(2)通用寄存器,地址指针寄存器,SP堆栈指针BP基址指针SI 源变址寄存器DI 目的变址

6、寄存器,数据寄存器,16位的 AX BX CX DX 8位的 AH BH CH DH AL BL CL DL,3.用于控制的寄存器,指令指针寄存器 IP标志寄存器 FR,教材:P14,标志寄存器(FR),进位标志CF,表示运算结果的最高位有进位或借位,表示运算结果的最高位无进位或借位,CF=1 CF=0,零标志ZF,ZF=1 ZF=0,表示运算结果的为零,表示运算结果的不为零,溢出标志OF,OF=1 OF=0,表示运算结果的有溢出,表示运算结果的无溢出,符号标志SF,SF=1 SF=0,表示运算结果的为负,表示运算结果的为正,中断标志IF,IF=1 IF=0,表示CPU响应外设的中断,表示CP

7、U不响应外设的中断,PF,奇偶标志PF,PF=1 PF=0,表示运算结果(低8位)中“1”的个数为偶数,表示运算结果(低8位)中“1”的个数为奇数,8086/8088与数据有关的寻址方式分为三大类七种,立即寻址寄存器寻址直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址相对基址变址寻址,3.与数据有关的寻址方式,(1)立即寻址方式,以汇编语言中常用的MOV指令为例,MOV 目的操作数,源操作数,格式:,功能:,(目的操作数)(源操作数),特点:指令中直接给出操作数,执行速度快,注意:只能是整数,只能为源操作数。,用途:将一个已知值送到寄存器或存储单元,存储表示:,汇编语言格式:N(一个已知值的整

8、数),例:MOV AX,4576H;AX4576H,OP,76H,45H,76,45,该例中源操作数为立即寻址方式,立即数为4576H,执行:4576HAX,执行过程:,执行后:(AX)=4576H,低地址,高地址,高送高,低送低,(2)寄存器寻址方式,特点:操作数直接存放在寄存器中,速度快,8位寄存器,存放8位(一个字节)操作数AH、AL、BH、BL、CH、CL、DH、DL16位寄存器,存放16位(一个字)操作数:AX、BX、CX、DX、SI、DI、BP、SP段寄存器,16位CS、DS、ES、SS,存储表示:,例:MOV AX,BX;AXBX,汇编语言格式:R,可以使用的寄存器:,寄存器寻址

9、方式,存 储 器 寻 址 方 式,操作数在主存储器中,用主存地址(物理地址)(PA)表示程序设计时,8086/8088采用逻辑地址表示主存地址段地址在默认的或用跨段前缀指定的段寄存器中指令中只需给出操作数的偏移地址(EA)8086/8088设计了多种存储器寻址方式1.直接寻址方式 2.寄存器间接寻址方式 3.寄存器相对寻址方式 4.基址变址寻址方式 5.相对基址变址寻址方式,例:在02B0H和02B3H四个连续的内存字节单元中,分别存放了2个16位字2C53H和1F0EH,它们在 存储器中的存放情况,用图形表示为:,53,2C,0E,1F,0101 0011,0010 1100,0000 11

10、10,0001 1111,对应的二进制,(3)直接寻址方式,特点:指令所要的操作数存放在内存中,在指令中直接给出该操作数的偏移地址(EA),注意:默认的段地址在DS段寄存器,可省略 否则要使用跨段前缀注明,汇编语言格式:段寄存器名:EA(整数或变量名),存储表示:,PA,例1:MOV AX,2000H;AXDS:2000H,中括号表达存储单元的内容,例3:MOV AX,ES:2000H;AXES:2000H,例2:设BUFA=2000H,则 MOV AX,BUFA;等同于 MOV AX,BUFA 作用:AXDS:2000H,变量名,【作业】,1.指令由 和 两部分组成。2.8086/8088每

11、条指令至多由四部分组成,即:、和。3.指令寻址方式分为与 有关的寻址方式和与 有关的寻址方式两种。4.计算机语言分为、和 三类。其中 计算机能直接执行,而其它计算机语言必须通过 才能够执行。,一、思考题,操作码,操作数,标号场:,操作场,操作数场,;注释场,数据,转移地址,机器语言,汇编语言,高级语言,机器语言,“翻译”,二、名词解释,指令;指令系统;程序;寻址方式,三、概括总结,1.8086/8088所有寄存器的名称以及功能。2.8086/8088有哪几种与数据有关的寻址方式?3.8086/8088汇编语言指令格式及各部分意义。4.试说明8086/8088CPU的标志寄存器CF、IF、OF、

12、SF、PF和ZF各标志位的含义。,呼和浩特职业学院教案首页,8086/8088与数据有关的寻址方式分为七种,8086/8088寄存器,段寄存器,CS代码段 DS数据段SS堆栈段 ES附加段,数据寄存器,16位的 AX BX CX DX 8位的 AH BH CH DH AL BL CL DL,地址指针寄存器,SP堆栈指针BP基址指针SI 源变址寄存器DI 目的变址寄存器,立即寻址,寄存器寻址,寄存器寻址,寄存器寻址,直接寻址,寄存器寻址,直接寻址,寄存器寻址,直接寻址,寄存器寻址,指令中给出的地址是逻辑地址,也称偏移地址实际的主存空间的地址为物理地址,(EA),(PA),对于存储器类寻址方式来讲

13、,直接寻址,寄存器寻址,与数据有关的寻址方式,(1)立即寻址 MOV BX,100H;BX100H,(2)寄存器寻址,(3)直接寻址,PA,没有指定的按DS按指令中指定的,执行过程,(1)MOV AX,2000H;AXDS:2000H,偏移地址(逻辑地址),实际内存单元所对应的地址为物理地址(PA),(2)MOV AX,ES:2000H;AXES:2000H,【逻辑地址】指令中给出的地址【物理地址】将逻辑地址进行一定的计算而得到的 能直接访问的主存地址。,直接寻址方式:逻辑地址物理地址的转换,公式,物理地址PA=10H(段地址)+EA(偏移地址),PA,设(DS)=1492H,(ES)=316

14、0H,则以下指令源操作数的物理地址是多少?,例1:MOV AX,2000H;AXDS:2000H,解:物理地址PA=10H(DS)+EA=10H1492H+2000H=16920H 即该指令的执行效果是:把从物理地址为 16920H开始的一个字的值传送给AX。,例2:MOV AX,ES:2000H;AXES:2000H,解:物理地址PA=10H(ES)+EA=10H3160H+2000H=33600H 即该指令的执行效果是:把从物理地址为 33600H开始的一个字的值传送给AX。,设(DS)=1492H,(ES)=3160H,则以下指令源操作数的物理地址是多少?,PA,例3:执行指令:MOV

15、BX,1234H 设(DS)=2000H。执行后:(BX)=?,34H,12H,执行:(21234H)BX,执行后:(BX)=5213H,13,52,物理地址,思考题,MOVAX,1234HMOVAX,1234H 一样吗?,(4)寄存器间接寻址方式,特点:操作数存放在内存中;寄存器中存放的是操作数的偏移地址;能使用的寄存器只能是BX、BP、SI、DI中的一个。,汇编语言格式:R,存储表示:,PA,注意:默认的 BX、SI、DI所对应的偏移地址是相对于DS的 默认的 BP所对应的偏移地址是相对于SS的 也可以通过跨段前缀改变,例1:MOV AX,BX;AXDS:BX,例2:MOV AX,BP;A

16、XSS:BX,设(DS)=1492H,(SS)=1650H,(BP)=2000H(BX)=2000H,分别求出下列指令源操作数的物理地址。,解:物理地址=10H(DS)+(BX)=10H1492H+2000H=16920H,例1:MOV AX,BX;AXDS:BX,例2:MOV AX,BP;AXSS:BX,解:物理地址=10H(SS)+(BX)=10H1650H+2000H=18500H,PA=10H(段地址)+(寄存器),寄存器间接寻址方式:逻辑地址物理地址的转换,公式,例3:假设有指令:MOV BX,DI,在执行时,(DS)=1000H,(SS)=2000H,(DI)=2345H,存储单元

17、12345H的内容是54H,存储单元12346H的内容是43H。问执行指令后,BX的值是什么?,解:物理地址=10H(DS)+(DI)=10H1000H+2345H=12345H,该指令的执行结果是:把从物理地址为12345H开始的一个字的值传送给BX。,(BX)=4354H,(2)MOV AX,BX,(1)MOV AX,BX,思考题,设(DS)=1492H,(BX)=2000H,(2000H)=1346H,(16920H)=78H,(16921H)=90H 问:分别执行上述指令后,(AX)的值分别为多少?分别说出两条指令源操作数的寻址方式。,解:(1)(AX)=2000H,寄存器寻址(2)(

18、AX)=9078H,寄存器间接寻址,分析:MOV BX,AX 的功能,(5)寄存器相对寻址方式,特点:操作数存放在内存中;操作数的偏移地址是指令中给出寄存器的内容和指令中给出的位移量X之和。与寄存器间接寻址类似,只可以使用指定寄存器。,默认的 BX、SI、DI所对应的段寄存器是 的默认的 BP所对应的段寄存器是 的也可以通过跨段前缀改变,基址寄存器(BX、BP)或变址寄存器(SI、DI),DS,SS,例1:MOV AX,SI+06H;AXDS:SI+06H,例2:MOV AX,06HSI;AXDS:SI+06H,=,位移量(也可以用变量名表示),汇编语言格式:XR或X+R,PA=10H(段地址

19、)+(寄存器)+位移量,寄存器相对寻址方式:逻辑地址物理地址的转换,公式,存储表示:,PA,例3:假设指令:MOV BX,SI+100H,在执行它时,(DS)=1000H,(SI)=2345H,内存单元12445H的内容为15H,内存单元12446H的内容为27H,问该指令执行后,BX的值是什么?,解:物理地址,=10H(DS)+(SI)+100H=10H1000H+2345H+100H=12445H,(BX)=2715H,思考题,执行下列指令,则BX的值与上例一样吗?为什么?(1)MOV BX,ES:SI+100H(2)MOV BX,BP+100H 设(BP)=(SI),(6)基址变址寻址方

20、式,特点:操作数在存储器中,其偏移地址是一个基址寄存器(BX、BP)和一个变址寄存器(SI、DI)的内容之和。,汇编语言格式:BR+IR或BRIR,注意:默认的BX基址寄存器对应的是DS,默认的BP基址寄存器对应的是SS,可用跨段前缀改变。,例1:MOV AX,BX+SI;AXDS:BX+SI,例2:MOV AX,BPSI;AXSS:BP+SI,例3:MOV AX,DS:BPSI;AXDS:BP+SI,存储表示:,PA=10H(段地址)+(BX/BP)+(SI/DI),基址变址寻址方式:逻辑地址物理地址的转换,公式,PA,例4:假设指令:MOV BX,BX+SI,在执行时,(DS)=1000H

21、,(BX)=2100H,(SI)=0011H,内存单元12111H的内容为96H,内存单元12112H的内容为85H.问该指令执行后,BX的值是什么?,CS,解:物理地址,=10H(DS)+(BX)+(SI)=10H1000H+2100H+0011H=12111H,(BX)=8596H,(7)相对基址变址寻址方式,特点:操作数在存储器中,其偏移地址是一个基址寄存器(BX、BP)的内容、一个变址寄存器(SI、DI)的内容与指令中给出的位移量X之和。,汇编语言格式:X+BR+IR或XBR+IR 或XBRIR,注意:默认的BX基址寄存器对应的是DS,默认的BP基址寄存器对应的是SS,可用跨段前缀改变

22、。,例1:MOV AX,BX+DI+6H;AXDS:BX+DI+6H,例2:MOV AX,6HBPSI;AXSS:BX+SI+6H,例3:MOV AX,DS:VARBPSI;AXDS:BX+SI+VAR,存储表示:,PA=10H(段地址)+(BX/BP)+(SI/DI)+X,相对基址变址寻址方式:逻辑地址物理地址的转换,公式,PA,例4:假设指令:MOV AX,PPBX+SI,在执行时,(DS)=1000H,(BX)=2100H,(SI)=0010H,PP=0200H,内存单元12310H的内容为12H,内存单元12311H的内容为34H.问该指令执行后,AX的值是什么?,解:物理地址,=10

23、H(DS)+(BX)+(SI)+PP=10000H+2100H+0010H+0200H=12310H,(AX)=3412H,4.与转移地址有关的寻址方式,即程序的转移地址。,程序转移的寻址方式就是找出程序转移的地址。,转移指令和转移标号在同一个代码段中,转移指令和转移标号在不同的代码段中,与转移地址有关的寻址方式有:,段内直接寻址方式段内间接寻址方式段间直接寻址方式段间间接寻址方式,二、跨段及寻址综合举例,1.跨段的有关问题(P111-112),2.寻址的综合举例(P112-113),【跨段的有关问题】,在采用寄存器间接寻址、寄存器相对寻址、基址变址寻址和相对基址变址寻址方式时,可使用的寄存器

24、只有BX、BP、SI、DI。BP默认的操作数在SS寄存器中,其余三个默认的操作数在DS寄存器中。,物理地址的形成:,MOV AX,BXMOV AX,BP+10HMOV AX,BX+DIMOV AX,100HBP+SI,PA=10HDS+(BX),PA=10HSS+(BP)+10H,PA=10HDS+(BX)+(DI),PA=10HSS+(BP)+100H+(SI),当要否定默认状态,也就是说所需要的数据不是在规定的代码段中,即到非约定的代码段寻址操作数时,必须用跨段前缀指明操作数所在段的段寄存器名。,MOV AX,SS:BXMOV AX,DS:BP+10HMOV AX,BX+DIMOV AX,

25、ES:100HBP+SI,物理地址的形成:,PA=10HSS+(BX),PA=10HDS+(BP)+10H,PA=10HDS+(BX)+(DI),PA=10HES+(BP)+100H+(SI),与数据有关的寻址方式小结,注意:段地址(默认值和跨段前缀),【课堂练习】,分别指出下列指令源操作数的寻址方式,(1)MOV AX,10BXSI(2)MOV AX,1200H(3)MOV AX,ES:BX(4)MOV AX,BP+DI(5)MOV AX,CX(6)MOV AX,VALBX(7)MOV AX,1200H,相对基址变址寻址,直接寻址,寄存器间接寻址,基址变址寻址,寄存器寻址,寄存器相对寻址,立

26、即寻址,【作业】,(一)总结各种寻址方式的特点、注意事项、汇编语言格式以及如何求物理地址(PA)。(二)教材P148 4.2、4.3(7)(改)4.4、4.8,呼和浩特职业学院教案首页,【作业讲评】,4.2分别写出下列指令中源操作数和目的操作数的寻址方式。,4.3已知下列各值(DS)=2000H(BX)=0100H(SI)=0002H(20100H)=12H(20101H)=34H(20102H)=56H(20103H)=78H(21200H)=2AH(21201H)=4CH(21202H)=0B7H(21203H)=65H求各指令执行完成后AX寄存器中的内容。,(1)MOV AX,1200H

27、,(AX)=1200H,(2)MOV AX,BX,(AX)=0100H,(3)MOV AX,1200H,解:物理地址=10H(DS)+1200H=10H 2000H+1200H=21200H,(AX)=4C2AH,(4)MOV AX,BX,解:物理地址=10H(DS)+(BX)=10H 2000H+0100H=20100H,(AX)=3412H,4.3已知下列各值(DS)=2000H(BX)=0100H(SI)=0002H(20100H)=12H(20101H)=34H(20102H)=56H(20103H)=78H(21200H)=2AH(21201H)=4CH(21202H)=0B7H(2

28、1203H)=65H求各指令执行完成后AX寄存器中的内容。,(5)MOV AX,1100HBX,(6)MOV AX,BXSI,解:PA=10H(DS)+(BX)+(SI)=10H 2000H+0100H+0002H=20102H,(AX)=7856H,(7)MOV AX,1100HBXSI,解:PA=10H(DS)+1100H+(BX)+(SI)=10H 2000H+1100H+0100H+0002H=21202H,(AX)=65B7H,解:PA=10H(DS)+1100H+(BX)=10H 2000H+1100H+0100H=21200H,(AX)=4C2AH,4.4已知下列各值(DS)=2

29、000H(ES)=2100H(SS)=1500H(SI)=00A0H(BX)=0100H(BP)=0010H VAL=0050H下列指令源操作数的寻址方式是什么?其物理地址是多少?,(1)MOV AX,0ABH,立即数寻址方式,(2)MOV AX,BX,寄存器寻址方式,(3)MOV AX,100H,解:物理地址=10H(DS)+100H=20100H,(4)MOV AX,VAL,解:物理地址=10H(DS)+VAL=20050H,直接寻址方式,直接寻址方式,(5)MOV AX,BP,寄存器间接寻址方式,解:物理地址=10H(SS)+(BP)=15010H,(6)MOV AX,ES:BX,寄存器

30、间接寻址方式,解:物理地址=10H(ES)+(BX)=21100H,(7)MOV AX,BX,寄存器间接寻址方式,解:物理地址=10H(DS)+(BX)=20100H,(8)MOV AX,SI,寄存器间接寻址方式,解:物理地址=10H(DS)+(SI)=200A0H,4.4已知下列各值(DS)=2000H(ES)=2100H(SS)=1500H(SI)=00A0H(BX)=0100H(BP)=0010H VAL=0050H下列指令源操作数的寻址方式是什么?其物理地址是多少?,(9)MOV AX,BX+10H,寄存器相对寻址,(10)MOV AX,VALBX,解:PA=10H(DS)+VAL+(

31、BX)=20150H,寄存器相对寻址,(11)MOV AX,BXSI,基址变址寻址,解:PA=10H(DS)+(BX)+(SI)=201A0H,(12)MOV AX,VALBXSI,相对基址变址寻址,解:PA=10H(DS)+VAL+(BX)+(SI)=201F0H,解:PA=10H(DS)+10H+(BX)=20110H,0,F,1,0,2,H,三、80X86指令系统,汇编语言是一种符号语言,它用助记符来表示操作码,用符号或符号地址来表示操作数或操作数地址,它与机器语言一一对应。,一个完整的指令系统应该包括:,数据传送指令,算术运算指令,逻辑运算指令,程序控制指令,输入输出指令,字符串指令,

32、系统控制指令,(一)数据传送类指令,通用数据传送指令 MOV POP PUSH XCHG累加器专用传送指令 IN OUT XLAT地址传送指令 LEA LDS LES标志传送指令 CLC STC等,作用:把数据从一个位置传送到另一个位置,可以是数值或地址,寄存器、存储器或端口号寄存器,分类:,特点:数据传送是计算机中最基本、最重要的一种 操作,传送指令也是最常使用的一类指令。除 标志寄存器传送指令外,均不影响标志位。,1.通用数据传送指令,(1)传送指令MOV,作用:把操作数的值从源地址传送至目的地址,MOV 目的操作数,源操作数,格式:,执行过程:源地址中的数保持不变,目的地址中的数被源操作

33、数替代,例:假设(AX)=1050H,(BX)=2100H 执行MOV AX,BX指令后,(AX)、(BX)的值分别为多少。,执行前,执行后,2100H,2100H,规则2:MOV reg/mem/seg,reg,规则3:MOV reg/seg,mem,规则1:MOV reg/mem,imm/seg,【注意】(1)目的操作数不能为立即数(2)目的操作数不允许使用CS段寄存器(3)不允许两个操作数都是存储单元,其中有一个必须为寄存器。(4)两个操作数的类型必须一致,MOV指令也并非任意传送!,字节传送/字传送,规则1:MOV reg/mem,imm/seg,MOV DX,0FFHMOV 1200

34、H,1861HMOV SI,DSMOV AX,SS,MOV 0FFH,DXMOV DS,100HMOV AL,1150HMOV DS,ES,分析以下指令,错:立即数不能做目的操作数,错:1150H与AL数据类型不同,错:立即数不能送段寄存器,错:不能在两个段寄存器之间传数,寄存器具有明确的字节和字类型,规则2:MOV reg/mem/seg,reg,MOV AH,ALMOV AX,BXMOV DS,AX,规则3:MOV reg/seg,mem,MOV AL,BXMOV BX,BP+6HMOV ES,SI,分析以下指令,错:两个操作数不能都是存储器,MOV BUF1,1200HMOV CS,AX

35、,错:源操作数不能使用CS,不存在存储器向存储器的传送指令,小结,(1)两个操作数的数据类型要相同,要同为8位、16位,如:MOV BL,AX等是不正确的;(2)两个操作数不能同时为段寄存器,如:MOV ES,DS等;(3)代码段寄存器CS不能为目的操作数,但可作为源操作数,如:指令MOV CS,AX等不正确,但指令MOV AX,CS等是正确的;(4)立即数不能直接传给段寄存器,如:MOV DS,100H等;(5)立即数不能作为目的操作数,如:MOV 100H,AX等;(6)两个操作数不能同时为存储单元,如:MOV VARA,VARB等,对MOV指令有以下几条具体规定,其中有些规定对其它指令也

36、同样有效。,段寄存器慎用,【注意】存取数据时的单位,已知存储单元的地址和内容如右图所示,对于1100H和1101H单元如果分别取一个字节、一个字和双字的数据,则,12H,34H,3412H,5634H,78563412H,90785634H,首地址,(2)堆栈操作指令,特点:堆栈是一个“先进后出”的主存区域,它必须 存在于堆栈段中,SS记录其首地址。堆栈只有一个出口,即当前栈顶;用堆栈指 针寄存器SP指定。,堆栈只有两种基本操作,堆栈的存取数据操作必须是以字为单位的,应用:用于中断处理与过程调用时保存断点地址和返 回地址通用寄存器的值等。,进栈指令PUSH,格式:PUSH reg/mem/se

37、g,功能:把一个字操作数从寄存器或存储 器或段寄存器送到堆栈栈顶,执行过程:SPSP-2,(SP)操作数;,例:设AX=3125,执行PUSH AX,SP,栈顶,31,25,分析:(1)SP?,低地址,高地址,压入数据,出栈指令POP,格式:POP reg/mem/seg,功能:把栈顶的一个字操作数送到指定 的寄存器或存储器或段寄存器(CS除外)中,执行过程:操作数(SP),SPSP+2;,例:POP AX,分析:(1)AX=?,(2)SP?,5678,SP,栈顶,弹出数据,【堆栈操作的特点】,堆栈操作的单位是字,进栈和出栈只对字量;字量数据从栈顶压入(进栈)和弹出(出栈)时,都是低地址字节送

38、低字节,高地址字节送高字节;堆栈操作遵循先进后出原则;PUSH和POP指令均不影响标志位;POP指令不允许使用CS寄存器;堆栈段是程序中不可或缺的一个内存区。,1.设SP=1786H,AX=0A91H。给出下列指令依次执行后的结果。,PUSH AX SP=?POP BX SP=?BX=?,1784H,1786H,0A91H,假设SP=100H,上例的执行结果?,0FEH,100H,0A91H,功能:AX与CX两个寄存器 的值进行了交换。,呼和浩特职业学院教案首页,回顾上一讲内容,数据传送指令(1),1.MOV 目的操作数,源操作数,操作:将源操作数的值送到目的操作数所指定的位置注意传送规则!,

39、2.PUSH 源操作数(不能为立即数),操作:SPSP-2,(SP)源操作数的值,3.POP 目的操作数(不能为立即数),操作:目的操作数指定的位置(SP),SPSP+2,1.若要把1234H这个数送入堆栈,如何实现?,MOV AX,1234HPUSH AX,思考题,2.若要把栈顶的第二个字数据送到BX中,如何实现?,POP AXPOP BX,【作业讲评】,(3)交换指令XCHG,格式:XCHG reg,mem/reg,功能:将一个字节或一个字的源操作数与 目的操作数进行交换。,特点:寄存器与寄存器之间可以相互交换 寄存器与存储器之间可以相互交换,注意:段寄存器和立即数不能作为任何操作数。,例

40、:假设(AL)=2AH,(204DH)=5BH,则指令XCHGAL,204DH执行后,(AL)=,204DH=。,5BH,2AH,例1:MOV AX,1199H XCHG AH,AL;等同于XCHG AL,AH 问执行上述指令后AX的值是多少?,9911H,例2:MOV WVAR,5566H XCHG AX,WVAR;等同于XCHG AX,WVAR 问执行上述指令后AX和WVAR的值分别是多少?,9911H,5566H,例3:教材P116 例4.3.6,(4)地址传送指令LEA,格式:LEA reg,源操作数,功能:将源操作数的偏移地址送到指定寄存器中。,要求:源操作数必须是一个内存操作数;目

41、的操作数必须是一个16位的通用寄存器。,例:LEA AX,DI+10,设(DI)=0500H,则(AX)=?,若执行MOV AX,DI+10 则(AX)=?,050AH,00FFH,假设1200H=103BH,分别执行以下指令后,(AX)的值分别是什么?MOV AX,1200H LEA AX,1200H,(AX)=103BH(AX)=1200H,思考题,2.累加器专用传送指令,(1)输入指令IN,功能:完成从I/O端口到CPU的信息传送。即 将数据(字节/字)从一个端口传送到 累加器AL或AX中。(P117),格式:,IN AL,PORT;字节操作 IN AX,PORT;字操作,端口号:00H

42、FFH(0256之间),格式:,IN AL,DX;字节操作 IN AX,DX;字操作,端口号:超出以上范围时必须先把端口号送入DX,然后由DX送AL或AX。,例1:从端口60H读入一个字节到AL中。,IN AL,60H,例2:从端口56AH读入一个字节到AL中。,MOV DX,56AHIN AL,DX,例3:从端口60H读入一个字到AX中。,IN AX,60H,执行:(AH)61H端口(AL)60H端口,执行:(AL)60H端口,执行:(AL)56AH端口,例4:从端口56AH读入一个字到AX中。,MOV DX,56AHIN AX,DX,执行:(AH)56BH端口(AL)56AH端口,思考题,

43、如何实现将端口50H的一个字的内容送到DATA存储单元中?,IN AX,50HMOV DATA,AX,(2)输出指令OUT,功能:完成从CPU到I/O端口的字节/字的信息传送。,格式:OUT PORT/DX,AL/AX,例1:OUT 68H,AL例2:MOV DX,3FCH OUT DX,AL,(二)算术运算类指令,算术运算指令是反映CPU计算能力的一组指令,也是编程时常使用的一组指令。它包括加、减、乘、除及其相关的辅助指令。这类指令大多会根据运算结果影响标志位,有时要利用某些标志才能得到正确的结果。该组指令的操作数可以是8位或16位的。,加法指令 ADD、ADC、INC减法指令 SUB、SB

44、B、DEC、NEG、CMP乘法指令 MUL、IMUL 除法指令 DIV、IDIV十进制调整指令 DAA、DAS、AAA、AAS、AAM、AAD,1.加减法类指令,加法指令 ADD、ADC、INC减法指令 SUB、SBB、DEC、NEG、CMP,格式:,指令助记符 reg,imm/reg/mem指令助记符 mem,imm/reg指令助记符 reg/mem,(1)不带进位/借位的加减法指令,加法指令ADD,格式:ADD 目的操作数,源操作数,功能:将源操作数与目的操作数相加,运算结果 存入目的地址,源地址的内容保持不变。,执行过程:(目的操作数)(目的操作数)+(源操作数),减法指令SUB,SUB

45、,减,-,例1:设AL=3AH,则执行ADD AL,7CH后,(AL)=?,0B6H,注意:ADD指令对标志位有影响,上例对标志位的影响为CF=0,ZF=0,SF=0,OF=0,PF=1,标志寄存器FLAGS,例2:设AX=7348H,则执行ADD AX,27H后,(AX)=?再执行ADD AX,3FFFH后,(AX)=?,736FH,0B36EH,例3:教材P119 例4.3.11,例4:设AX=0B36EH,则执行SUB AX,0F0H后,(AX)=?若要执行SUB AH,0F0H呢?(AX)=?再执行 MOV 2000H,0EF00H SUB 2000H,AX后,(AX)=?SUB AX

46、,AX(AX)=?,0B27EH,0C36EH,0H,例5:设X、Y、Z均为16位 整数,并存放在地址 为X、Y、Z的存储单 元中,右侧指令序列 实现功能是什么?,MOV AX,XADD AX,YADD AX,43SUB AX,ZMOV W,AX,功能:WX+Y+43-Z,0C36EH,(2)带进位/借位的加减法指令,加法指令ADC,格式:ADC 目的操作数,源操作数,功能:ADC指令除完成 ADD 加法运算外,还要 加上 进位位CF,结果送到目的操作数,执行过程:(目的操作数)(目的操作数)+(源操作数)+CF,减法指令SBB,SBB,减去,-,SBB,SUB减,-,呼和浩特职业学院教案首页

47、,上一讲内容回顾,数据传送指令(2),1.IN AL/AX,PORE/DX,操作:将端口号为PORE或DX的一个字节/字的内容送到AL/AX,3.XCHG reg,reg/mem(不能为立即数),操作:将两个指定位置的数值进行交换,4.LEA reg,源操作数(不能为立即数),操作:将源操作数的地址送到指定的寄存器中,2.OUT PORE/DX,AL/AX,操作:将AL/AX的内容送到端口号为PORE或DX的外设中,上一讲内容回顾,算术运算指令(1),1.ADD reg,imm/reg/mem ADD mem,imm/reg,操作:(目的操作数)(目的操作数)+(源操作数),操作:(目的操作数

48、)(目的操作数)-(源操作数),2.SUB reg,imm/reg/mem SUB mem,imm/reg,(3)增量和减量指令,增量指令INC,特点:单操作数指令,功能:单操作数自动加1,执行过程:(reg/mem)(reg/mem)1,格式:INC reg/mem,减量指令DEC,DEC,减1,-,例:MOV AX,1234H MOV BX,32H INC AX ADD AX,BX DEC BX 问:上述指令执行完毕(AX)=?(BX)=?,1267H,31H,(4)比较指令CMP,格式:CMP 目的操作数,源操作数,执行过程:目的操作数-源操作数,影响标志位用于比较大小,(5)求补指令N

49、EG,特点:单操作数指令,功能:改变操作数的符号,执行过程:(reg/mem)-(reg/mem),格式:NEG reg/mem,例:设(AL)=25H,(BL)=-58H,则 NEG AL NEG BL两条指令执行后,(AL)=?,(BL)=?。,-25H,58H,2.乘除法类指令,(1)乘法指令分无符号和有符号乘法指令MUL reg/mem;无符号乘法IMUL reg/mem;有符号乘法,执行过程:(1)假设 reg/mem中存放的是8位的操作数 则(AL)(reg/mem)(AX)(2)假设 reg/mem中存放的是16位的操作数 则(AX)(reg/mem)(DX.AX)【即运算结果达

50、32位】,(2)除法指令分无符号和有符号除法指令 DIV reg/mem;无符号除法 IDIV reg/mem;有符号除法,执行过程:(1)假设 reg/mem中存放的是8位的操作数 则(AX)/(reg/mem)(AX)【(AL)存商,(AH)存余数】(2)假设 reg/mem中存放的是16位的操作数 则(DX.AX)/(reg/mem)(AX.DX)【(AX)存商,(DX)存余数】,(三)逻辑指令,1.逻辑运算指令,格式:,逻辑运算指令 reg,imm/reg/mem逻辑运算指令 mem,imm/regNOT reg/mem,单操作数,注意:NOT指令不影响标志位;其余四中指令对 标志位均

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号