《微机原理与接口技术》课件09第4章汇编语言与汇编程序.ppt
- 【下载声明】
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时,数据隐含存于数据段时,数据隐含存于数据段中;当基址寄存器选用
展开阅读全文