书签 分享 收藏 举报 版权申诉 / 145
上传文档赚钱

类型《微机原理与接口技术》课件09第4章汇编语言与汇编程序.ppt

  • 上传人(卖家):momomo
  • 文档编号:5923707
  • 上传时间:2023-05-16
  • 格式:PPT
  • 页数:145
  • 大小:920KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《《微机原理与接口技术》课件09第4章汇编语言与汇编程序.ppt》由用户(momomo)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    微机原理与接口技术 微机原理与接口技术课件09第4章 汇编语言与汇编程序 微机 原理 接口 技术 课件 09 汇编语言 汇编程序
    资源描述:

    1、1第第4 4章章 汇编语言与汇编程序汇编语言与汇编程序 2本章主要介绍:本章主要介绍:8086 CPU8086 CPU指令的基本格式及寻址方式;指令的基本格式及寻址方式;8086 8086 指令系统;指令系统;汇编语言的基本语法;汇编语言的基本语法;DOSDOS功能调用;功能调用;汇编语言程序设计的基本方法汇编语言程序设计的基本方法。重点是重点是8086 CPU8086 CPU指令的寻址方式、指令系指令的寻址方式、指令系统和汇编语言程序设计的基本方法。统和汇编语言程序设计的基本方法。34.1 4.1 汇编语言的语法要素汇编语言的语法要素 4第第4章章 汇编语言与汇编程序汇编语言与汇编程序 汇编

    2、语言的语法要素有标识符、保留字、常量、数值表达式、标号、变量和地址表达式等。4.1.1 4.1.1 标识符标识符 标识符是程序中用于指定段名、变量名、符号常量名、标号名等的字符串。和高级语言的变量名一样,一般要求标识符尽可能取得有点含义,这会大大改善程序的可读性,并有助于对程序的理解,标识符的使用要做到“见其名,知其义”。5第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.1 4.1.1 标识符标识符 标识符的命名规则:(1)由字母、数字、专用符号“?”、“.”、“”、“$”、“_”等字符组成。(2)数字不能作为首字符,“.”只能作为首字符。(3)有效字符为31个。通常情况下,汇编语言

    3、不区分标识符中字母的大小写。6第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.1 4.1.1 标识符标识符 为了区别标识符和数据,以字母开始的十六进制数,要在其前面添加一个前导0。如8位补码数-1,应写为0FFH。例4.1:试比较ABCDH和0ABCDH之间的差异。前者是标识符,而后者是十六位进制数值。7第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.2 4.1.2 保留字保留字 保留字是汇编语言中预留的、具有固定用途的字符串。所有的寄存器名、指令及伪指令的助记符、运算符都属于保留字,编程时不允许作它用。如程序中的DB、MOV、SEGMENT、CX等。例4.2:MSG1、E

    4、RRMSG2、ASC1、asc2等是合法的标识符,而1a、ah、mov等就不是合法的标识符,这些是属于保留字。8第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.3 4.1.3 常量常量 常量是程序运行中数值不变的量。有数值常量和符号常量。常量可以数值形式出现在符号指令中,这种常量称作数值常量;将经常使用的数值预先定义一个名字,然后用该名字来表示该常量,这种常量称作符号常量。9第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.3 4.1.3 常量常量 数值常量,常用的有二进制数、十进制数、十六进制数和ASCII码字符。ASCII码字符用作数值常量时,需用单引号引起来,如B、BC

    5、、$等所有可以打印或显示的ASCII码字符。符号常量,需使用相应的赋值伪指令EQU或“”号定义。例4.3:X EQU 212或X21210第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.4 4.1.4 数值表达式数值表达式 数值表达式由常量与运算符构成。运算符分三类:算术运算符(+、-、MOD)、逻辑运算符(AND、OR、XOR、NOT)和关系运算符(EQ、NE、LT、GT、LE、GE)3种运算。11第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.5 4.1.5 标号标号 标号是机器指令在内存中的符号地址。汇编语言程序中第一条指令、转移的目标指令和重复执行的指令前面都要加上

    6、一个标号,作为转移指令或循环指令的目的地址。标号名也由程序员遵循标识符命名规则命名。标号一般只在代码段中定义和使用,标号代表指令的地址,由标识符和冒号组成。程序开始处的标号,需在代码段结束之后,加上“END 标号”,如“END START”。12第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.5 4.1.5 标号标号 标号有3个属性:段地址、偏移地址和类型。标号的段地址是定义该标号所在段的段地址。标号的偏移地址是标号所在段的段首址到该标号定义指令的字节距离。标号的类型有NEAR和FAR两种。用“:”定义的标号为NEAR类型,NEAR类型的标号只能在定义该标号的段内使用,而FAR类型的

    7、标号却无此限制。13第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.6 4.1.6 变量和地址表达式变量和地址表达式 变量是存储器中的数据或数据区的符号表示。变量名即是数据的地址或数据区的首地址。地址表达式是由变量、常量、寄存器(SI、DI、BX、BP)的内容(用寄存器名置入方括号中表示)和运算符组成的有意义的式子。指令中的存储器的地址可以用变量或地址表达式给出。14第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.6 4.1.6 变量和地址表达式变量和地址表达式 由于存储器是分段使用的,因此变量或地址表达式都具有3重属性:段地址、偏移地址和类型。变量的段地址是指变量所在段的

    8、段首地址除以10H之商。当需要访问该变量时,其段地址一定要在其相应的段寄存器中。变量的偏移地址是指变量所在段的段首址到该变量的字节距离。变量的段地址和偏移地址分别用SEG或OFFSET两个算符来指定,只要在操作数中指定带SEG或OFFSET算符的变量名,就可以分别产生该变量的段地址或偏移地址。例4.4:变量Y的段地址和偏移地址可表示为SEG Y和OFFSET Y。15第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.6 4.1.6 变量和地址表达式变量和地址表达式 变量的类型是指存取该变量中的数据所需要的字节数。变量的类型可以是字节(Byte)、字(Word)、双字(Dword)、4字

    9、(Qword)和10字节(Tbyte)。变量使用数据定义伪指令DB(定义字节)、DW(定义字)、DD(定义双字)、DQ(定义4字)、DT(定义10字节)来定义。变量的格式:变量名 数据定义伪指令 表达式,变量名在格式中使用了可选符号 ,作为可选项。若无变量名则为定义无名数据区。表达式确定了变量的初值,用户可以根据需求选择单项或多项表达式。16第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.1.6 4.1.6 变量和地址表达式变量和地址表达式 变量使用的表达式可以是以下几种:(1)数值表达式。(2)ASCII码字符串(只有用DB定义变量时,才允许串长度即引号中的字符数超过2个字符)。(3)

    10、地址表达式(只适用DW和DD两个伪指令),如果该地址表达式为一变量或标号名时,用DW定义,则是取其偏移地址来初始化变量,若用DD定义,则是取其段地址和偏移地址来初始化变量。(4)?,表示所定义变量无确定初值。一般用来预留若干字节(或字、双字)存储单元,以存放程序的运行结果。(5)n DUP(表达式),其中DUP(duplicate)为重复字句,n是重复因子(只能取大于等于1的正整数,它表示定义了n个表达式),它俩之间一定要空格,表达式的类型由数据定义伪指令确定。(6)以上表达式组成的序列用逗号分隔。174.2 4.2 指令格式指令格式18第第4章章 汇编语言与汇编程序汇编语言与汇编程序 指令的

    11、格式:操作码 操作数1,操作数2,操作数n 操作数字段可以是0个、1个、2个或多个,通常称为零地址、单地址、双地址或多地址指令。在微型计算机中常采用单地址指令和双地址指令,一方面指令代码长度缩短了,另一方面也提高了处理速度。在双地址指令中,分别称两个操作数为源操作数和目的操作数。指令的一般格式是:操作码 目的操作数,源操作数194.3 4.3 寻址方式寻址方式 20 寄存器寻址是指操作数存放在寄存器中,指令中给出寄寄存器寻址是指操作数存放在寄存器中,指令中给出寄存器名。存器名。例:例:MOV DX MOV DX,AX AX ;DX AXDX AX 执行过程如图所示:执行过程如图所示:特点:特点

    12、:(1)(1)操作数在寄存器中,寄存器在操作数在寄存器中,寄存器在CPUCPU内部,指令执行时,内部,指令执行时,操作就在操作就在CPUCPU的内部进行,不需要访问存储器来取得操作数,的内部进行,不需要访问存储器来取得操作数,因而执行速度快。因而执行速度快。(2)(2)寄存器号比内存地址短,汇编后机器码长度短。寄存器号比内存地址短,汇编后机器码长度短。(3)(3)寄存器寻址方式既可用于源操作数,也可用于目标操寄存器寻址方式既可用于源操作数,也可用于目标操作数,还可以两者都用寄存器寻址方式。作数,还可以两者都用寄存器寻址方式。5678H5678HAXDX寄存器寻址示意图1.1.寄存器寻址寄存器寻

    13、址第第4章章 汇编语言与汇编程序汇编语言与汇编程序 21 立即寻址即指令中直接给出操作数本身。立即寻址即指令中直接给出操作数本身。采用该寻址方式的操作数与指令代码一起存放采用该寻址方式的操作数与指令代码一起存放在代码段中。在代码段中。例:例:MOV AX MOV AX,1234H 1234H ;AX 1234HAX 1234H 注意:立即寻址通常用于双操作数指令中,注意:立即寻址通常用于双操作数指令中,且只能是源操作数。且只能是源操作数。执行过程如图所示:执行过程如图所示:存储器操作码34H12H12H 34HAHALAX代码段立即寻址示意图2.2.立即寻址立即寻址第第4章章 汇编语言与汇编程

    14、序汇编语言与汇编程序 223.3.直接寻址直接寻址 直接寻址即指令中给出操作数所在存储单元的有直接寻址即指令中给出操作数所在存储单元的有效地址,缺省的段为数据段。为了区别于立即数,有效地址,缺省的段为数据段。为了区别于立即数,有效地址用效地址用括起。括起。例:以下指令中源或目标操作数采用了直接寻址例:以下指令中源或目标操作数采用了直接寻址方式方式 (1)MOV AX(1)MOV AX,2000H 2000H ;AX (DS:2000H)AX (DS:2000H)(2)MOV 1200,BL (2)MOV 1200,BL ;(DS:1200H)BL(DS:1200H)BL (3)MOV ES:0

    15、100,AL (3)MOV ES:0100,AL;(ES:0100H)AL(ES:0100H)AL 说明:说明:DS:2000DS:2000表示内存单元地址;表示内存单元地址;(DS:2000)(DS:2000)表示地址是表示地址是DS:2000DS:2000的内存单元内容。的内存单元内容。第第4章章 汇编语言与汇编程序汇编语言与汇编程序 23【例例】设设 DS=4000HDS=4000H,(42000H)=12H(42000H)=12H,(42001H)=34H(42001H)=34H,执行指令执行指令 MOV AXMOV AX,2000H2000H后,后,AX=?AX=?根据指令中给出的有

    16、效地址得到存储单元的物理根据指令中给出的有效地址得到存储单元的物理地址:地址:DS DS 16+2000H=42000H 16+2000H=42000H 把该内存单元开始的两个字节的内容传送到把该内存单元开始的两个字节的内容传送到AXAX中。中。低地址单元内容传送到低地址单元内容传送到ALAL中,高地址单元内容传送中,高地址单元内容传送到到AHAH中。中。AX=3412H AX=3412H 执行过程如图所示:执行过程如图所示:说明:说明:直接寻址允许数据存于附加段、堆栈段、代直接寻址允许数据存于附加段、堆栈段、代码段,这称为码段,这称为“段超越段超越”,此时,需要段说明。,此时,需要段说明。存

    17、储器操作码00H20H34H 12HAHAL代码段直接寻址示意图12H34H数据段AXDS=4000H 10H40000H 2000H42000H42000H第第4章章 汇编语言与汇编程序汇编语言与汇编程序 244.4.间接寻址间接寻址 间接寻址是把内存操作数的有效地址存储于寄间接寻址是把内存操作数的有效地址存储于寄存器中,指令中给出存放地址的寄存器名。存器中,指令中给出存放地址的寄存器名。8086/80888086/8088中可用于间接寻址的寄存器有基址寄中可用于间接寻址的寄存器有基址寄存器存器BXBX、BPBP和变址寄存器和变址寄存器SISI、DIDI。为区别于寄存器。为区别于寄存器寻址,

    18、寄存器名要用寻址,寄存器名要用“”括起来。括起来。例:例:MOV AXMOV AX,SI SI ;AX (DS:SI+1 AX (DS:SI+1,DS:SI)DS:SI)第第4章章 汇编语言与汇编程序汇编语言与汇编程序 25有效地址有效地址EAEA计算方法如下:计算方法如下:EA=EA=SISISISI作间址寄存器。作间址寄存器。DIDIDIDI作间址寄存器。作间址寄存器。BXBXBXBX作间址寄存器。作间址寄存器。BPBPBPBP作间址寄存器。作间址寄存器。物理地址物理地址PAPA计算方法如下:计算方法如下:物理地址物理地址 =DS=DS 10H+SI 10H+SI 或或 DI DI 或或

    19、BXBX或或 物理地址物理地址 =SS=SS 10H+BP 10H+BP 注意:不同的寄存器所隐含对应的段不同。采用注意:不同的寄存器所隐含对应的段不同。采用SISI、DIDI、BXBX寄存器,数据存于数据段中;采用寄存器,数据存于数据段中;采用BPBP寄存器,数据存于堆寄存器,数据存于堆栈段中。栈段中。第第4章章 汇编语言与汇编程序汇编语言与汇编程序 26【例例】设设 DS=3000HDS=3000H,SI=2000HSI=2000H,(32000H)=50H(32000H)=50H,(32001H)=40H(32001H)=40H,执行指令,执行指令 MOV AXMOV AX,SISI后,

    20、后,AX AX=?=?根据指令中给出的寄存器及寄存器内容得根据指令中给出的寄存器及寄存器内容得到存储单元的物理地址:到存储单元的物理地址:DS DS 16+2000H=32000H 16+2000H=32000H 把该内存单元开始的两个字节的内容传送到把该内存单元开始的两个字节的内容传送到AXAX中。低地址单元内容中。低地址单元内容 传送到传送到ALAL中,高地址单中,高地址单元内容传送到元内容传送到AHAH中。中。AX=4050H AX=4050H 执行过程如图所示:执行过程如图所示:存储器50H40H数据段寄存器间接寻址示意图40H 50HAHALAX32000HDS10H SI 3200

    21、0HDS=3000H SI=2000H第第4章章 汇编语言与汇编程序汇编语言与汇编程序 275.5.基址寻址基址寻址 源操作数在存储器中,其偏移地址是指令中指源操作数在存储器中,其偏移地址是指令中指 定的寄存器定的寄存器BXBX或或BPBP的内容与指令中给出的位移量相的内容与指令中给出的位移量相加之和,段地址同间址。如:加之和,段地址同间址。如:MOV MOV BX+6BX+6,ALAL或或MOV 6MOV 6BXBX,ALAL 该指令的源操作数是寄存器该指令的源操作数是寄存器ALAL,目的地在当前,目的地在当前数据段中,目的操作数是数据段中,目的操作数是DSDS:BX+6BX+6。执行的操。

    22、执行的操作是:作是:AL DS:AL DS:BX+6BX+6 具体地,若具体地,若DS=1359HDS=1359H、BX=0124HBX=0124H,则传送数据,则传送数据的地址是的地址是1359H1359H:0124H+6=136BAH0124H+6=136BAH;该指令执行的操;该指令执行的操作是将作是将ALAL的内容送的内容送136BAH 136BAH。第第4章章 汇编语言与汇编程序汇编语言与汇编程序 28 又如:又如:MOV MOV BP+6BP+6,AXAX或或MOV 6MOV 6BPBP,AXAX 源操作数是寄存器源操作数是寄存器AXAX,目的地在堆栈段中,目的操,目的地在堆栈段中

    23、,目的操作数是作数是SSSS:BP+6BP+6。执行的操作是:。执行的操作是:AL SS:AL SS:BP+6BP+6,AH SS:,AH SS:BP+7BP+7 具体地,若具体地,若SS=1355HSS=1355H、BP=0030HBP=0030H,则传送数据的地,则传送数据的地址 是址 是 1 3 5 5 H1 3 5 5 H:0 0 3 0 H+6=1 3 5 8 6 H0 0 3 0 H+6=1 3 5 8 6 H 和和 1 3 5 5 H1 3 5 5 H:0030H+7=13587H0030H+7=13587H;该指令执行的操作是将;该指令执行的操作是将AL AL 的内容送的内容送

    24、13586H 13586H、将、将AH AH 的内容送的内容送13587H 13587H。上述两种写法,即将位移量放在方括号内与放在方上述两种写法,即将位移量放在方括号内与放在方括号外,功能是一样的,前者意义明确些,后者上机括号外,功能是一样的,前者意义明确些,后者上机操作要方便些。操作要方便些。5.5.基址寻址基址寻址第第4章章 汇编语言与汇编程序汇编语言与汇编程序 296.6.变址寻址变址寻址 变址寻址与基址寻址类似,只不过是用变址寻址与基址寻址类似,只不过是用SISI和和DIDI取代取代BXBX和和BPBP。约定的段地址在。约定的段地址在DSDS中。中。第第4章章 汇编语言与汇编程序汇编

    25、语言与汇编程序 307.7.基址变址寻址基址变址寻址 采用基址变址寻址时,操作数的有效地址分为采用基址变址寻址时,操作数的有效地址分为两部分,一部分存于基址寄存器两部分,一部分存于基址寄存器BXBX或或BPBP中,另一部中,另一部分存于变址寄存器分存于变址寄存器SISI或或DIDI中,指令中分别给出两个中,指令中分别给出两个寄存器名。操作数的有效地址为:寄存器名。操作数的有效地址为:EAEA1 1=BX+SI/DI=BX+SI/DI或或 EAEA2 2=BP+SI/DI =BP+SI/DI 当基址寄存器选用当基址寄存器选用BXBX时,数据隐含存于数据段时,数据隐含存于数据段中;当基址寄存器选用

    26、中;当基址寄存器选用BPBP时,数据隐含存于堆栈段时,数据隐含存于堆栈段中,即操作数的物理地址为:中,即操作数的物理地址为:PAPA1 1=DS =DS 10H+EA 10H+EA1 1或或 PAPA2 2=SS =SS 10H+EA 10H+EA2 2 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 31 【例例】设设 SS=3000HSS=3000H,BP=0100HBP=0100H,SI=5SI=5,(30105H)=78H(30105H)=78H,执行指令,执行指令 MOV ALMOV AL,BPSIBPSI后,后,AL=?AL=?根据指令中给出的寄存器名及寄存器根据指令中给出的寄存

    27、器名及寄存器内容,得到存储单元的物理地址:内容,得到存储单元的物理地址:SS SS 16+BP+SI=30105H 16+BP+SI=30105H 把该内存单元中内容传送到把该内存单元中内容传送到ALAL中。中。AL=78HAL=78H 执行过程如图所示:执行过程如图所示:存储器78H堆栈段基址变址寻址示意图78HAL30105HSS10H BP SI 30105HSS=3000H BP=0100H SI=57.7.基址变址寻址基址变址寻址第第4章章 汇编语言与汇编程序汇编语言与汇编程序 32 8086/80888086/8088的指令有哪些寻址方式的指令有哪些寻址方式?它们的具体它们的具体含

    28、义是什么含义是什么?指令中如何表示它们指令中如何表示它们?8086/8088 8086/8088的指令有的指令有7 7种寻址方式,它们是:种寻址方式,它们是:(1 1)寄存器寻址。操作数在指定寄存器中。指令中)寄存器寻址。操作数在指定寄存器中。指令中直接用寄存器名表示。直接用寄存器名表示。(2 2)立即寻址。源操作数为常量(立即数)。指令)立即寻址。源操作数为常量(立即数)。指令中用数值常量或符号常量表示。中用数值常量或符号常量表示。(3 3)直接寻址。操作数在指定的存储器中。存储器)直接寻址。操作数在指定的存储器中。存储器的偏移地址用含有变量名的地址表达式或用段名不的偏移地址用含有变量名的地

    29、址表达式或用段名不含变量名的数值表达式表示。含变量名的数值表达式表示。第第4章章 汇编语言与汇编程序汇编语言与汇编程序 33 8086/80888086/8088的指令有哪些寻址方式的指令有哪些寻址方式?它们它们的具体含义是什么的具体含义是什么?指令中如何表示它们指令中如何表示它们?(4 4)间接寻址。操作数在存储器中,存储器)间接寻址。操作数在存储器中,存储器的偏移地址在给定的寄存器中。指令中用置的偏移地址在给定的寄存器中。指令中用置于方括号中的间接寄存器名表示。于方括号中的间接寄存器名表示。(5 5)基址寻址。操作数在存储器中,存储器)基址寻址。操作数在存储器中,存储器的偏移地址是基址寄存

    30、器的内容与指令给出的偏移地址是基址寄存器的内容与指令给出的位移量之和。指令中用含有基址寄存器的位移量之和。指令中用含有基址寄存器(在方括号中)的地址表达式表示。(在方括号中)的地址表达式表示。第第4章章 汇编语言与汇编程序汇编语言与汇编程序 34 8086/80888086/8088的指令有哪些寻址方式的指令有哪些寻址方式?它们的具体它们的具体含义是什么含义是什么?指令中如何表示它们指令中如何表示它们?(6 6)变址寻址。操作数在存储器中,存储器的偏移)变址寻址。操作数在存储器中,存储器的偏移地址是变址寄存器的内容与指令给出的位移量之和。地址是变址寄存器的内容与指令给出的位移量之和。指令中用含

    31、有变址寄存器(在方括号中)的地址表指令中用含有变址寄存器(在方括号中)的地址表达式表示。达式表示。(7 7)基址变址寻址。操作数在存储器中,存储器的)基址变址寻址。操作数在存储器中,存储器的偏移地址是基址寄存器和变址寄存器的内容与指令偏移地址是基址寄存器和变址寄存器的内容与指令给出的位移量给出的位移量3 3项相加之和。指令中用含有基址寄项相加之和。指令中用含有基址寄存器和变址寄存器(在方括号中)的地址表达式表存器和变址寄存器(在方括号中)的地址表达式表示。示。第第4章章 汇编语言与汇编程序汇编语言与汇编程序 354.4 4.4 常用指令常用指令 36 第第4章章 汇编语言与汇编程序汇编语言与汇

    32、编程序 4.4.1 4.4.1 数据传送指令数据传送指令 1.1.通用数据传送指令通用数据传送指令(1)传送指令 指令格式:MOV DST,SRC 执行操作:(DST)(SRC)该指令把源操作数的内容传送到目的操作数。能够完成以下几种传送:37 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 1.1.通用数据传送指令通用数据传送指令 CPU内部寄存器之间数据传送;例4.16:MOV AL,BL MOV AX,BX立即数传至CPU内部的通用寄存器组;例4.17:MOV AL,4 MOV AX,0FFC1HCPU内部寄存器与存储器之间的数据传送;

    33、例4.18:MOV AX,SI MOV AL,BUFFER立即数与存储器之间的数据传送。例4.19:MOV BYTE PTR MEM,20H38 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 和MOV指令一样,任何指令的目的操作数均不能为立即数。此外,大多数指令也应遵循以下规则:立即数不能传送至段寄存器;存储器之间不能直接传递数据(串除外);CS不能作为目的操作数,IP不能参与传送;段寄存器之间不能直接传递数据;源操作数和目的操作数类型要求一致,源操作数目的操作数有寄存器则传送长度由寄存器位数决定;源操作数目的操作数均无寄存器则需限定存储器操作数位数。39 第第4章章 汇编语言与汇编程序汇

    34、编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 1.1.通用数据传送指令通用数据传送指令(2)堆栈操作指令 压入堆栈指令 指令格式:PUSH SRC 该指令将指定的寄存器或存储单元的内容压入栈顶。操作数必须为字。指令分两步进行:先SP-1SP,然后把数据(高位字节)送至SP所指单元;再次使SP-1SP,把数据(低位字节)送至SP所指单元。40例:例:SP=2000HSP=2000H,SS=1000HSS=1000H,AX=1234HAX=1234H执行执行PUSH AXPUSH AX,则堆栈内容与则堆栈内容与SPSP如下:如下:SP=1FFEHSP=1FFEH3412SP1

    35、FFE 1FFF SP2000 M第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 1.1.通用数据传送指令通用数据传送指令(2)堆栈操作指令 压入堆栈指令 指令格式:PUSH SRC 该指令将指定的寄存器或存储单元的内容压入栈顶。操作数必须为字。指令分两步进行:先SP-1SP,然后把数据(高位字节)送至SP所指单元;再次使SP-1SP,把数据(低位字节)送至SP所指单元。41 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 1.1.通用数据传送指令通用数据传送指令(2)堆栈操作指令 全部通用

    36、寄存器内容压栈指令指令格式:PUSHA 该指令将将8个16位通用寄存器内容压栈,压栈的顺序为AX、CX、DX、BX、SP、BP、SI和DI。标志寄存器内容压栈指令指令格式:PUSHF42 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 1.1.通用数据传送指令通用数据传送指令(2)堆栈操作指令 弹出堆栈指令指令格式:POP DST该指令分两步进行:先弹出栈顶数据(低位字节),修改SP,SP+1SP;再弹出栈顶数据(高位字节),再修改SP,SP+1SP。全部通用寄存器内容弹出指令指令格式:POPA标志寄存器内容弹出指令指令格式:POPF43 第

    37、第4章章 汇编语言与汇编程序汇编语言与汇编程序 使用堆栈操作指令时应注意:堆栈操作必须以字为单位;不影响标志位;不能用立即寻址方式;DST不能是CS。44 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 1.1.通用数据传送指令通用数据传送指令(3)数据交换指令 指令格式:XCHG OPR1,OPR2执行操作:(OPR1)(OPR2)例4.21:XCHG AL,BH;(AL)(BH)45 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 2.2.地址传送指令地址传送指令(1)传送偏移地址指令

    38、指令格式:LEA REG,SRC 执行操作:(REG)EA(SRC)这条指令的源操作数必须是一个内存操作数,目的操作数必须是一个16位的通用寄存器。该指令通常用来给某个16位通用寄存器设置偏移地址的初值,以便从此开始存取多个数据。例4.22:LEA AX,BUFFER 若执行前:AX1234H,BUFFER 0100H,EA5678H则执行以后:AX5678H,BUFFER 0100H46 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 2.2.地址传送指令地址传送指令(2)传送数据段地址指针指令 指令格式:LDS REG,SRC 执行操作:

    39、(REG)(SRC)(DS)(SRC+2)4个相继字节寄存器(通常是SI)和DS。47 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 2.2.地址传送指令地址传送指令(3)传送数据段地址指针指令指令格式:LES REG,SRC执行操作:(REG)(SRC)(ES)(SRC+2)4个相继字节寄存器(通常是DI)和ES。LDS和LES指令完成一个地址指针的传送。地址指针包括段地址部分和偏移地址部分。指令将段地址送入DS或ES,偏移量部分送入到一个16位的指针寄存器或变址寄存器。48 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1

    40、4.4.1 数据传送指令数据传送指令 3.3.查表转换指令查表转换指令 指令格式:XLATsource-table 执行操作:BX+ALAL 该指令的操作数都是隐含的,所执行的操作是将BX为基地址,AL为位移量的字节存储单元中的数据送AL即BX+ALAL。在汇编语言中,该指令也可以写作XLATB(B表示字节操作)或XLATB table(table为表的首地址)。注意:使用换码指令时,字节表格长度不超过256。49 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 4.4.输入输出指令输入输出指令 输入输出指令可以分为两大类:一类是端口直接寻址

    41、的输入输出指令;另一类是端口通过DX寄存器间接寻址的输入输出指令。在直接寻址的指令中只能寻址28256个端口(0255),而间接寻址的指令中可寻址21664K个端口(065535)。50 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 4.4.输入输出指令输入输出指令(1)输入指令 直接寻址的输入指令 指令格式:IN ACC,PORT 执行操作:(ACC)(PORT)此命令是将816位数据直接经输入端口PORT(0255)送入ALAX累加器中。51 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送

    42、指令 4.4.输入输出指令输入输出指令(1)输入指令 间接寻址的输入指令 指令格式:IN ACC,DX 执行操作:(ACC)(DX)此命令是从DX寄存器内容指定的端口中,将816位数据送入ALAX累加器中。这种寻址方式的端口地址由16位地址表示,执行这条指令前应将16位地址存入DX寄存器中。52 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 4.4.输入输出指令输入输出指令(2)输出指令 直接寻址的输出指令 指令格式:OUT PORT,ACC 执行操作:(PORT)(ACC)此命令是从AL或AX累加器输出816位数据到指定的IO端口中。间接

    43、寻址的输入指令 指令格式:IN DX,ACC 执行操作:(DX)(ACC)此命令是从AL或AX累加器中输出816位数据到由DX寄存器内容指定IO端口中。53 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 5.5.标志传送指令标志传送指令(1)把标志寄存器的低8位传送到AH寄存器的指定位 指令格式:LAHF 标志寄存器F中低8位包括SF、ZF、AF、PF、CF五个标志位,对应的位是位7、6、4、2和0,而位5、3和1没有定义。例4.26:假定CFPF1,ZFSFAF0,执行指令 LAFH之后,AH内容为00011。54 第第4章章 汇编语言与

    44、汇编程序汇编语言与汇编程序 4.4.1 4.4.1 数据传送指令数据传送指令 5.5.标志传送指令标志传送指令(2)把AH寄存器的指定位传到标志寄存器中的S、Z、A、P和C标志位 指令格式:SAHF 该指令与LAHF指令的操作相反。这条指令是把AH寄存器的内容传送到标志寄存器的低8位。标志寄存器的相应位受到影响,它取决于AH中相应位的状态。本指令对OF、DF、IF和TF无影响。(3)把整个标志寄存器(包括全部九个标志)压入堆栈指令 指令格式:PUSHF(4)把栈顶内容弹出到标志寄存器指令 指令格式:POPF55 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算

    45、指令算术运算指令 1.1.加法指令加法指令 (1)加指令 ADD 指令格式:ADD DST,SRC 执行操作:DSTDST+SRC ADD指令有如下5种形式:ADD REG,IMM ;REG+IMMREG ADD REG,REG ;REG+REGREG ADD REG,MEM ;REG+MEMREG ADD MEM,IMM;MEM+IMMMEM ADD MEM,REG ;MEM+REGMEM56 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算指令算术运算指令 1.1.加法指令加法指令 (2)带进位的加指令ADC 指令格式:ADC DST,SRC 执行操作:D

    46、STDST+SRC+CF ADC指令有如下5种形式:ADC REG,IMM ;REG+IMM+CFREG ADC REG,REG ;REG+REG+CFREG ADC REG,MEM ;REG+MEM+CFREG ADC MEM,IMM;MEM+IMM+CFMEM ADC MEM,REG ;MEM+REG+CFMEM57 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算指令算术运算指令 1.1.加法指令加法指令 ADD和ADC两指令按执行结果影响状态标志位:当结果的最高位(字节操作是D7,字操作是D15)产生进位,CF1;否则CF0。当结果为0时,ZF1;否则

    47、ZF0。当结果的最高位为1时,SF1;否则SF0,即SF总与结果的最高位一致。当结果不在符号数范围:字节运算时不在字节补码数范围(-128127),字运算时不在字补码数范围(-3276832767)时,OF1;否则OF0。当结果的二进制位1的个数为偶数时,PF1;否则PF0。当运算时,D3产生进位,AF1;否则AF0。58 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算指令算术运算指令 1.1.加法指令加法指令 (3)增量指令INC 指令格式:INC DST 执行操作:DSTDST+1 使用增量指令时,操作数不得出现二义性。例4.28:INC SI是非法的,

    48、因为汇编程序不能确定是字节增1还是字增1。可以使用PTR算符使之成为合法指令:INC BYTE PTR SI或INC WORD PTR SI 注意:段寄存器不能用此命令加1。该指令影响SF、ZF、AF、PF和OF,但对CF没有影响。59 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算指令算术运算指令 2.2.减法指令减法指令 (1)减指令 SUB 指令格式:SUB DST,SRC 执行操作:DSTDST-SRC (2)带借位的减指令 SBB 指令格式:SBB DST,SRC 执行操作:DSTDST-SRC-CF (3)减量指令 DEC 指令格式:DEC DS

    49、T 执行操作:DSTDST-1减法类指令对标志位的影响,除将进位改为借位外与加法类指令相同。60 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算指令算术运算指令 2.2.减法指令减法指令 (4)比较指令CMP 指令格式:CMP DST,SRC 执行操作:DST-SRC 比较指令除了不回送结果外,其他一切均同SUB指令。该指令主要用来判断两数的大小与是否相等。比较指令后面常常是条件转移指令,根据比较的结果实现程序的分支。61 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算指令算术运算指令 3.3.乘法指令乘法指令 80868

    50、088指令系统中有两条乘法指令,可以实现无符号数的乘法和带符号数的乘法,它们只有源操作数,隐含目标操作数。CPU在执行乘法时,一个操作数始终放在累加器中(8位AL;16位AX),这是隐含的。8位数相乘结果16位,存放在AX中,16位数相乘结果32位,存放在DX和AX中。62 图图4-9 乘法指令的操作示意图乘法指令的操作示意图 第第4章章 汇编语言与汇编程序汇编语言与汇编程序 4.4.2 4.4.2 算术运算指令算术运算指令 3.3.乘法指令乘法指令 source8ALAXsource16AXAXDX 乘法指令分无符号数乘法指令MUL和带符号数乘法指令IMUL两种。指令格式:MUL SRC I

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:《微机原理与接口技术》课件09第4章汇编语言与汇编程序.ppt
    链接地址:https://www.163wenku.com/p-5923707.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


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

    163文库