微机原理 8086汇编程序设计.ppt
《微机原理 8086汇编程序设计.ppt》由会员分享,可在线阅读,更多相关《微机原理 8086汇编程序设计.ppt(97页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、主要内容:主要内容:一、一、汇编语言语句格式汇编语言语句格式二、汇编语言伪指令二、汇编语言伪指令三、汇编语言源程序的汇编与连接三、汇编语言源程序的汇编与连接四、汇编语言程序设计的基本方法四、汇编语言程序设计的基本方法汇编语言程序设计汇编语言程序设计1本讲重点本讲重点:伪操作伪操作 汇编语言程序格式汇编语言程序格式 简单汇编程序设计简单汇编程序设计汇编语言程序设计汇编语言程序设计2一、汇编语言语句格式 汇编语言语句有指令性语句、伪指令语句和宏指令语句三种类型。汇编语言语句有指令性语句、伪指令语句和宏指令语句三种类型。1 1、指令性语句、指令性语句:标号:标号:操作码操作码 操作数操作数 ;注释;
2、注释 是是机机器器指指令令的的符符号号表表示示,经经汇汇编编产产生生对对应应的的机机器器指指令令代代码码,在在形形成成执执行行文文件件时时执行。执行。2 2、伪指令语句、伪指令语句:名字名字 伪指令助记符伪指令助记符 操作数操作数 ;注释;注释 只只是是给给汇汇编编程程序序提提供供一一些些控控制制信信息息,帮帮助助汇汇编编程程序序正正确确汇汇编编指指令令性性语语句句,没没有有对应的机器码。对应的机器码。说说明明:名名字字可可以以是是符符号号常常量量名名、变变量量名名、过过程程名名、段段名名等等,名名字字后后面面不不能能有有“:”。伪伪指指令令命命令令助助记记符符共共有有4040多多个个,按按功
3、功能能不不同同分分成成八八类类。操操作作数数之之间间须须用用逗号分隔。逗号分隔。3 3、宏指令语句、宏指令语句:宏名宏名 宏操作助记符宏操作助记符 操作数操作数 ;注释;注释 是指令性语句和指示性语句的复合体,在汇编时被展开。是指令性语句和指示性语句的复合体,在汇编时被展开。说明:宏名即宏指令名,是一标识符,宏名后面不能有说明:宏名即宏指令名,是一标识符,宏名后面不能有“:”。宏操作助记符有宏操作助记符有MACROMACRO、ENDMENDM、LOCALLOCAL、REPTREPT、IRPIRP、PURGEPURGE等等8 8个。个。汇编程序不区分大小写汇编程序不区分大小写3汇编语言语句统一格
4、式规定 指令性语句、伪指令语句和宏指令语句的指令性语句、伪指令语句和宏指令语句的统一格式统一格式:名字项名字项 操作项操作项 操作数项操作数项 ;注释项;注释项 1.1.名字项:名字项:最多由最多由2121个字符组成。可由下列字符组成。个字符组成。可由下列字符组成。字母字母A AZ Z、a az z数字数字0 09 9特殊符号特殊符号?、$等等注意:注意:名字项的第一个字符不可以是数字,必须是字母或特殊字名字项的第一个字符不可以是数字,必须是字母或特殊字符,但是问号本身不能单独作为名字;符,但是问号本身不能单独作为名字;如果用到特殊符号,则它必须是首字符。如果用到特殊符号,则它必须是首字符。汇
5、编语言的专用保留字、寄存器名、汇编语言的专用保留字、寄存器名、8088/80868088/8086汇编语言中汇编语言中的指令助记符、伪指令名、表达式中使用的运算符和属性的指令助记符、伪指令名、表达式中使用的运算符和属性运算符等均不能作为名字项,否则汇编会给出错误信息;运算符等均不能作为名字项,否则汇编会给出错误信息;名字项在程序中不能重复定义。名字项在程序中不能重复定义。4(1)段属性:可用段属性:可用SIG伪指令求出伪指令求出 此属性用于定义标号和变量的段起始地址。标号通常在代码此属性用于定义标号和变量的段起始地址。标号通常在代码段段CS中定义,变量通常在中定义,变量通常在DS、ES和和SS
6、段中定义。段中定义。(2)偏移属性:可用偏移属性:可用OFFSET伪指令求出伪指令求出 此属性指出标号或变量距离段起始地址的字节数,它是一个此属性指出标号或变量距离段起始地址的字节数,它是一个16位的无符号数。位的无符号数。(3)类型属性:可用类型属性:可用TYPE伪指令求出伪指令求出 对标号而言,此属性指出其引用类型,段内引用属于对标号而言,此属性指出其引用类型,段内引用属于NEAR类,指针长度为类,指针长度为2字节;段间引用属于字节;段间引用属于FAR类,指针长度为类,指针长度为4字节。对变量而言,此属性指出其字节长度,可为字节。对变量而言,此属性指出其字节长度,可为1、2、4、8、10个
7、字节。个字节。u名字项属性名字项属性52.2.操作项操作项可以是可以是指令指令、宏指令宏指令、伪指令的助记符。伪指令的助记符。【例例】LOOP:LOOP:MOVMOV AX AX,BX,BX BUFFER DB 1,2,3,4,5,6,7;数据定义伪指令,在主存中开辟数据定义伪指令,在主存中开辟7 7个连续的字节单元,个连续的字节单元,初值依次为初值依次为1 17 7,BUFFERBUFFER表示首地址表示首地址63 3.操作数项操作数项操作数项可以由操作数项可以由常量、寄存器、标号、变量或表达式常量、寄存器、标号、变量或表达式等组成。等组成。(1)常量常量常量是没有属性的纯数,其数值在汇编过
8、程中被确定,并在程常量是没有属性的纯数,其数值在汇编过程中被确定,并在程序运行时保持不变。分为序运行时保持不变。分为数值常量数值常量和和字符型常量字符型常量。各种形式各种形式数字常量数字常量格式对照表格式对照表7字符串常量字符串常量字字符符串串常常量量是是用用单单引引号号或或双双引引号号引引起起来来的的一一个个或或多多个个字字符符。字字符符串串常常量量是是以以各各字字符符的的ASC码码表表示示的的。如如A用用41H 表表示示,字字符符串串A1B2用用41H,31H,42H,32H表示。表示。8常数项举例常数项举例例例5.2SUB DH,22;常数常数22为立即数,汇编后为为立即数,汇编后为16
9、HMOV BX,SI十十32H;常数常数32H作位移量作位移量DB 12H;定义一个字节数据定义一个字节数据DW 1234H;定义一个字数据定义一个字数据DD 12345678H;定义一个双字数据定义一个双字数据DB 9BD;定义三个字节的字符串数据,在定义三个字节的字符串数据,在 内存中就是内存中就是39H、42H、44H9(2)表达式及运算符算术运算符算术运算符移位运算符移位运算符逻辑运算符逻辑运算符关系运算符关系运算符分析运算符分析运算符综合运算符综合运算符表达式由常数、寄存器、标表达式由常数、寄存器、标号、变量与一些运算符组合号、变量与一些运算符组合而成,分为而成,分为数字表达式数字表
10、达式和和地地址表达式址表达式。汇编过程中,汇。汇编过程中,汇编程序按照一定的优先规则,编程序按照一定的优先规则,对表达式进行计算后得到一对表达式进行计算后得到一个个数值或地址数值或地址,用作指令的,用作指令的操作数。操作数。10算术运算符:算术运算符:(加)、(减)、(加)、(减)、*(乘)、(除)、(乘)、(除)、MOD(求模)求模)移位运算符:移位运算符:SHL(左移)、左移)、SHR(右移)右移)可以用于数值表达式又可用于地址表达式。可以用于数值表达式又可用于地址表达式。算术运算符和移位运算符算术运算符和移位运算符11【例例】算术和移位运算符进行数值表达式运算算术和移位运算符进行数值表达
11、式运算 NUM1EQU25*4 50;NUM1=50NUM2EQUNUM1/7;NUM2=7NUM3EQUNUM1 MOD 7;NUM3=1NUM4EQU0FH MOV AL,NUM4 SHL 4 ;(AL)=11110000B12与(与(AND)、或(、或(OR)、异或(、异或(XOR)、非(、非(NOT)四种运算四种运算。由由于于逻逻辑辑运运算算是是按按位位操操作作,且且在在汇汇编编过过程程中中完完成成,因因而而运运算算的的结结果果仍为整数常量。仍为整数常量。【例例】用逻辑运算符进行运算。用逻辑运算符进行运算。MOVAL,34H AND 0FH;04HALMOVBL,05H OR 30H
12、;35HBLMOVCX,NOT 00FFH ;0FF00HCXMOVDX,789AH XOR 000FH ;7895HDX逻辑运算符逻辑运算符13相等(相等(EQ),),不等(不等(NE),),小于(小于(LT),),大于(大于(GT),),小于等于(小于等于(LE)及大于等于(及大于等于(GE)。)。运算结果成立时逻辑值为运算结果成立时逻辑值为真真,用,用0FFFFH表示;表示;关系不成立时逻辑值为关系不成立时逻辑值为假假,用,用0表示。表示。【例例】用关系运算符进行数值表达式运算。用关系运算符进行数值表达式运算。NUM1EQU10 LT 5 ;NUM1=0 NUM2EQU0AAAAH GT
13、 7FFFH;NUM2=0FFFFH MOVAX,A EQ 41H;0FFFFHAX MOV BX,NUM2 LT NUM1;0BX关系运算符关系运算符14把把标标号号或或变变量量所所指指存存储储器器地地址址的的属属性性(段段、偏偏移移量量和和类类型型)或或一一些些特特征征分分离离出出来来,作作为为操操作作数数使使用。主要介绍用。主要介绍3个:个:SEG 运算符运算符 OFFSET运算符运算符 TYPE运算符运算符分析运算符号分析运算符号15格式:格式:SEG 变量或标号变量或标号功能:分离出其后变量或标号所在段的段首址。功能:分离出其后变量或标号所在段的段首址。【例例】已已知知数数据据段段从
14、从存存储储器器的的23000H地地址址开开始始,DBUF是该段中的一个变量名。是该段中的一个变量名。MOV BX,SEG DBUF汇编为:汇编为:MOV BX,2300H SEG SEG 运算符运算符16格式:格式:OFFSET 变量或标号变量或标号功能:分离出其后变量或标号的偏移地址。功能:分离出其后变量或标号的偏移地址。【例例】已知标号已知标号START的段地址为的段地址为2100H,物理地址为物理地址为21200H。MOV DX,OFFSET START汇编为:汇编为:MOV DX,0200H这条指令与指令这条指令与指令 LEA DX,START功能相同。功能相同。OFFSET OFFS
15、ET 运算符运算符17格式:格式:TYPE 变量或标号变量或标号功功能能:分分离离出出其其后后变变量量或或标标号号的的类类型型。如如果果是是变变量量,将将返返回回该该变变量量的的类类型型对对应应字字节节数数;如如果果是是标标号号,则则返返回回代代表标号类型的数值。它们之间的关系见下表所示。表标号类型的数值。它们之间的关系见下表所示。TYPETYPE运算符运算符【例例】已定义已定义 ARRAY DB 22ARRAY DB 22,3333指令指令 ADD SIADD SI,TYPE ARRAYTYPE ARRAY汇编为:汇编为:ADD SIADD SI,1 118 段属性前缀运算符段属性前缀运算符
16、“”格式为:格式为:段寄存器名段寄存器名 地址表达式地址表达式或或 段名段名 地址表达式地址表达式或或 组名组名 地址表达式地址表达式此运算符用来表示一个标号、变量或地址表达式的段属性。此运算符用来表示一个标号、变量或地址表达式的段属性。【例例】用段前缀指定附加段内操作数的地址用段前缀指定附加段内操作数的地址MOV AL,ES DATA ;指令源操作数在附加段指令源操作数在附加段DATA地址单元中地址单元中(5 5)综合运算符)综合运算符19 LOW和和HIGH格式为:格式为:LOW 表达式表达式或或 HIGH 表达式表达式此运算符用于对一个此运算符用于对一个16位数据或地址表达式,位数据或地
17、址表达式,用用HIGH取其高取其高位字节、位字节、LOW取其低位字节取其低位字节。所以此运算符又称为字节分离。所以此运算符又称为字节分离运算符。运算符。【例例】已知已知 RESULT EQU 7788H则则MOV AH,HIGH RESULT汇编为:汇编为:MOV AH,77HMOV AL,LOW RESULT汇编为:汇编为:MOV AL,88H(5 5)综合运算符)综合运算符20本节介绍了几种常用的运算符。为了正确计算表达式的本节介绍了几种常用的运算符。为了正确计算表达式的数值,应该按照运算符的优先级:数值,应该按照运算符的优先级:先高后低、自左向右(优先级相同时)地进行计算。括先高后低、自
18、左向右(优先级相同时)地进行计算。括号内的表达式应优先计算。号内的表达式应优先计算。下面给出相关运算符下面给出相关运算符 从高到低的优先级排列顺序:从高到低的优先级排列顺序:表达式及运算符小结表达式及运算符小结211.(在圆括号中的项),(在圆括号中的项),方括号中的项方括号中的项,结构变量,结构变量(变量、字段)(变量、字段)2.LENGTH,SIZE、WIDTH和和MASK3.PTR,OFFSET,SEG,TYPE,THIS及段运算符及段运算符4.HIGH和和 LOW5.*,MOD,SHL(左移),左移),SHR(右移)右移)6.+,-7.EQ,NE,LT,LE,GT,GE8.NOT9.A
19、ND10.OR,XOR11.SHORT表达式及运算符小结表达式及运算符小结高高低低224.注释项一一行行语语句句分分号号后后面面的的内内容容,主主要要用用来来说说明明程程序序或或语语句句功功能能,增增加加程程序序的的可可读读性性。对对于于较较大大的的程程序序,注注释释项项更更不能缺少。不能缺少。分号(;)放在语句后,用来说明该语句的功能;分号(;)放在语句后,用来说明该语句的功能;分分号号放放在在某某一一行行的的开开头头,用用来来说说明明下下面面一一段段程程序序的的功功能;能;分分号号加加到到指指令令前前,可可暂暂时时冻冻结结有有疑疑问问的的指指令令,调调试试正正确确后后,再再把把这这些些指指
20、令令解解冻冻或或删删除除,这这样样可可减减少少语语句句增增、删的编辑工作。删的编辑工作。23MOV CX,0MOV CX,0;传送指令,具有传送指令,具有2 2个操作数个操作数DELAY:DELAY:NOP NOP ;空操作指令,没有操作数,带有标号空操作指令,没有操作数,带有标号LOOP LOOP DELAYDELAY;循环指令,标号循环指令,标号DELAYDELAY说明转移位置说明转移位置BUFFERBUFFER DB DB 1,2,3,4,5,6,7 1,2,3,4,5,6,7;数据定义伪指令,在主存中开辟数据定义伪指令,在主存中开辟7 7个连续的字节单元,个连续的字节单元,初值依次为初
21、值依次为1 17 7,BUFFERBUFFER表示首地址表示首地址汇编语言语句实例汇编语言语句实例24本节小结本节小结汇编语言指令格式汇编语言指令格式 名字项名字项 操作项操作项 操作数项操作数项 ;注释项;注释项 标号和变量的属性:标号和变量的属性:段属性、偏移属性、类型属性段属性、偏移属性、类型属性操作数的表达形式操作数的表达形式 算术、移位、逻辑、关系、属性、综合运算符算术、移位、逻辑、关系、属性、综合运算符首页25二、汇编语言伪指令二、汇编语言伪指令伪指令:伪指令:在汇编程序对源程序汇编期间由汇编程序处理在汇编程序对源程序汇编期间由汇编程序处理的操作(不是真正执行的指令),可以完成的操
22、作(不是真正执行的指令),可以完成处理器选择、处理器选择、定义程序模式、定义数据、分配存储区、指示程序结束定义程序模式、定义数据、分配存储区、指示程序结束等等功能。功能。常用伪指令:常用伪指令:处理器选择伪指令;处理器选择伪指令;段定义伪指令段定义伪指令程序开始与结束伪指令;程序开始与结束伪指令;数据定义与存储器分配伪指令;数据定义与存储器分配伪指令;赋值伪指令;赋值伪指令;地址计数器与对准伪指地址计数器与对准伪指令;令;基数控制伪指令;基数控制伪指令;偶地址对准伪指令;偶地址对准伪指令;261.处理器选择伪操作.8086 选择选择 8086 指令系统指令系统.286 选择选择 80286 指
23、令系统指令系统.286P 选择保护模式下的选择保护模式下的 80286 指令系统指令系统.386 选择选择 80386 指令系统指令系统.386P 选择保护模式下的选择保护模式下的 80386 指令系统指令系统.486 选择选择 80486 指令系统指令系统.486P 选择保护模式下的选择保护模式下的 80486 指令系统指令系统.586 选择选择 Pentium 指令系统指令系统.586P 选择保护模式下的选择保护模式下的 Pentium 指令系统指令系统一般放在整个程一般放在整个程序的序的最前面最前面。默。默认值为认值为.8086.8086272.2.段定义伪指令段定义伪指令完整的汇编语言
24、源程序由完整的汇编语言源程序由段段组成组成一个汇编语言源程序可以包含若干个一个汇编语言源程序可以包含若干个代码段代码段、数数据段据段、附加段或堆栈段附加段或堆栈段,段与段之间的顺序可随,段与段之间的顺序可随意排列。意排列。需独立运行的需独立运行的程序必须包含一个代码段程序必须包含一个代码段,并指示,并指示程序执行的起始点,一个程序只有一个起始点程序执行的起始点,一个程序只有一个起始点所有的所有的可执行性语句必须位于某一个代码段内可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内说明性语句可根据需要位于任一段内通常,程序还需要一个通常,程序还需要一个堆栈段堆栈段282.段定义伪
25、操作源程序分别用两种格式书写源程序分别用两种格式书写v第一种格式从第一种格式从MASM 5.0MASM 5.0开始支持开始支持简化段定义格式简化段定义格式v第二种格式第二种格式MASM 5.0MASM 5.0以前以前就具有就具有完整段定义格式完整段定义格式Hello,Everybody!程序功能程序功能291;EXAMPLE5.42;程序注释程序注释;数据段说明数据段说明2 DATA SEGMENT;数据段数据段 3 DATA ENDS;堆栈段说明堆栈段说明4STACK SEGMENT PARA STACKSTACK;堆栈段堆栈段 5 STACK ENDS;代码段说明代码段说明6 CODE S
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 微机原理 8086汇编程序设计 微机 原理 8086 汇编程序 设计
限制150内