微型计算机技术 陈慈发 第12讲 汇编语言的基本语法_第1页
微型计算机技术 陈慈发 第12讲 汇编语言的基本语法_第2页
微型计算机技术 陈慈发 第12讲 汇编语言的基本语法_第3页
微型计算机技术 陈慈发 第12讲 汇编语言的基本语法_第4页
微型计算机技术 陈慈发 第12讲 汇编语言的基本语法_第5页
已阅读5页,还剩58页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、微机(wi j)技术 第十二讲三峡(sn xi)大学覃 颖07176390287,共六十三页本讲课堂(ktng)讲授内容:汇编语言(hu bin y yn)的基本语法共六十三页语句(yj)类型及格式指令性语句(yj)由指令构成格式: 标号: 操作码 操作数 ;注释【例】 START:MOV AX,DATA指示性语句由命令(伪指令)构成格式: 名字 伪指令 参数 ;注释【例】 DATA SEGMENT AT 2000H共六十三页变量(binling)、常量、标号和表达式1、变量(binling)变量定义格式:变量名 变量定义伪指令 表达式1,表达式2, 【例】VAR1 DB 12H,34HVAR

2、2 DW 1234H,5678HVAR3 DD 12345678HVAR4 DQ 1122334455667788HVAR5 DT 11223344556677889900H共六十三页变量(binling)、常量、标号和表达式1、变量(binling)变量具有三个属性:段地址属性:偏移地址属性:类型属性:字节DB(8 位)一个字节存储单元字DW(16位)两个连续字节存储单元双字DD(32位)四个连续字节存储单元四字DQ(64位)八个连续字节存储单元五字DT(80位)十个连续字节存储单元共六十三页变量、常量(chngling)、标号和表达式2、常量(chngling)数字常量:【例】MOV AX

3、,100DMOV BL,0FCHMOV CL,10001011B共六十三页变量(binling)、常量、标号和表达式2、常量(chngling)字符型常量:【例】hello DB “HELLO WORLD!”ch DB Y, N,12HMOV AL,a共六十三页变量(binling)、常量、标号和表达式2、常量(chngling)符号常量:用标示符(常量名)表示的常量。标示符命名规则:131个ASCII码字符组成合法字符:AZ,az,09,?,$,下划线?不能单独作为标示符不能是独立的保留字或运算符数字不能作为第一个字符共六十三页变量(binling)、常量、标号和表达式2、常量(chngli

4、ng)符号常量:用标示符(常量名)表示的常量。符号常量定义格式:常量名=/EQU表达式【例】R=30PAIEQU3.1416CCEQU10001010B= 可重复定义 EQU 不可重复定义共六十三页变量、常量(chngling)、标号和表达式3、标号(bioho)标号是指令性语句内存存放地址的符号表示。标号定义格式:标号名:汇编指令语句标号也有三个属性:段地址、偏移地址和距离。距离属性有FAR和NEAR两种,可用LABEL定义:标号名LABEL距离共六十三页变量(binling)、常量、标号和表达式4、表达式 表达式由常量、变量、标号(bioho)及连接它们的运算符组成。MASM汇编程序可以使

5、用两种表达式,即数值表达式和地址表达式。共六十三页变量、常量(chngling)、标号和表达式4、表达式一、数值表达式:一般由运算符连接各种( zhn)常量构成。MASM支持的常量运算符包括算术运算符、逻辑运算符和关系运算符。 共六十三页变量、常量(chngling)、标号和表达式4、表达式1)算术运算符:包括加()、减()、乘(*)、除(/)、取模(MOD,求余数)、左移(SHL,相当于乘法),右移(yu y)(SHR,相当于除法)等7种运算符。 【例】NUM DW 08H,32H +(55H SHR 2)MOV DX,1234H MOD 1000H共六十三页变量(binling)、常量、标

6、号和表达式4、表达式2)逻辑(lu j)运算符:包括与(AND)、或(OR)、非(NOT)和异或(XOR)等4种运算符。 【例】AND AL,7FH AND 80H请注意两个AND的区别!共六十三页变量(binling)、常量、标号和表达式4、表达式3)关系(gun x)运算符:包括相等(EQ)、不等(NE)、小于(LT)、大于(GT)、小于或等于(LE)、大于或等于(GE)等6种运算符。 【例】MOV DX,10 LT 100汇编后指令代码为:MOV DX,0FFFFH关系运算符运算的常量必须是无符号数。当关系成立时其结果为全1,否则为全0。共六十三页变量、常量(chngling)、标号和表

7、达式4、表达式3)关系(gun x)运算符:【例】MOV BX,(VALUE LT 5) AND 20) OR (VALUE GE 5) AND 30) 相当于根据VALUE的值进行条件汇编:关系运算符可以和逻辑运算符组合使用。当VALUE5时汇编为:MOV BX,20当VALUE5时汇编为:MOV BX,30共六十三页变量、常量(chngling)、标号和表达式4、表达式二、地址(dzh)表达式:地址(dzh)表达式的结果是一个存储单元的地址(dzh)。常用的地址(dzh)表达式形式是:标号(或变量) / 数字注意:如果指令中的操作数需要用到地址表达式时,应注意其物理意义。比如将两个地址作乘

8、/除操作就没有意义,对不同段数据的地址相加减当然也没有意义。【例】MOV AX,VAR + 4共六十三页变量、常量(chngling)、标号和表达式4、表达式表达式中可以使用(shyng)的运算符有6类,它们是算术运算符、 逻辑运算符、关系运算符、分析运算符、合成运算符、其它运算符等,其优先级如下表所示:共六十三页变量、常量(chngling)、标号和表达式4、表达式高优先级低1( ), 2LENGTH,SIZE,WIDTH,MASK3PTR,OFFSET,SEG,TYPE,THIS 4*,/,MOD5,6EQ,NE,LT,LE,GT,GE7NOT8AND9OR,XOR共六十三页伪指令(指示(

9、zhsh)性语句)1、变量(binling)定义伪指令格式:变量名 DB/DW/DD/DQ/DT 表达式, 功能:为变量分配1字节/字/双字/四字/五字的存储单元,并给它们赋值。说明:使用这些伪指令可以定义数值、字符串、数组等。共六十三页伪指令(指示(zhsh)性语句)2、DUP重复子句伪指令格式:重复次数 DUP (重复定义(dngy)的内容)功能:与变量定义伪指令配合,用于重复定义数据。说明:重复次数用于说明需要定义多少次括号中的重复定义的内容,常用于为变量预留存储空间。【例】ST1 DB 2 DUP(0)ST2 DW 2,2 DUP(?)ST3 DB 2 DUP(0,1,2,3)ST10

10、0ST3000001ST202020003?00?01?02?03共六十三页伪指令(指示(zhsh)性语句)3、变量(binling)属性伪指令格式:SEG 变量功能:获得该变量所在的段地址值。【例】 MOV BX,SEG VAR1 在数据定义中变量具有5种属性,可以用伪指令来获得变量的相关属性信息。1)段属性共六十三页伪指令(指示(zhsh)性语句)3、变量(binling)属性伪指令格式:OFFSET 变量功能:获得该变量所在段中的偏移地址值。【例】 MOV SI,OFFSET VAR2 在数据定义中变量具有5种属性,可以用伪指令来获得变量的相关属性信息。2)偏移地址属性共六十三页伪指令(

11、指示(zhsh)性语句)3、变量(binling)属性伪指令格式:TYPE 变量功能:获得变量定义的类型。【例】 MOV AX,TYPE VAR3 在数据定义中变量具有5种属性,可以用伪指令来获得变量的相关属性信息。3)类型属性说明:类型以字节的整数倍表示,DB型为1,DW型为2,DD型为4,DQ型为8,DT型为10;NEAR型为FFFFH,FAR型为FFFEH 。共六十三页伪指令(指示(zhsh)性语句)3、变量(binling)属性伪指令格式:LENGTH 变量功能:获得变量定义的数据元素个数。【例】 MOV AX,LENGTH VAR4 在数据定义中变量具有5种属性,可以用伪指令来获得变

12、量的相关属性信息。4)长度属性说明:只有使用DUP定义变量时才能够得出有效的元素个数,否则将得出长度为1。共六十三页伪指令(指示(zhsh)性语句)3、变量(binling)属性伪指令格式:SIZE 变量功能:获得变量定义时占用的内存空间大小,以字节为单位表示。【例】 MOV AX,SIZE VAR5 在数据定义中变量具有5种属性,可以用伪指令来获得变量的相关属性信息。5)大小属性说明:SIZELENGTHTYPE 共六十三页伪指令(指示(zhsh)性语句)3、变量(binling)属性伪指令【例】设某数据段1000H:0000H开始存储如下定义的各类变量:BUF1 DB 1,2,3,4,5B

13、UF2 DB 5 DUP(?)BUF3 DW 5 DUP(?)BUF4 DW 1,2,3,4,5SEG BUF11000HOFFSET BUF1 0TYPE BUF11LENGTH BUF11SIZE BUF11SEG BUF21000HOFFSET BUF2 5TYPE BUF21LENGTH BUF25SIZE BUF25SEG BUF31000HOFFSET BUF3 10TYPE BUF22LENGTH BUF25SIZE BUF210SEG BUF41000HOFFSET BUF4 20TYPE BUF42LENGTH BUF41SIZE BUF42共六十三页伪指令(指示(zhsh)

14、性语句)4、数据类型伪指令格式(g shi):类型 PTR 表达式功能:指定表达式的数据类型。说明:该伪指令可以指定的数据类型有BYTE、WORD、DWORD三种。共六十三页伪指令(指示(zhsh)性语句)5、符号(fho)定义伪指令格式:符号 EQU 表达式功能:将表达式的值赋给EQU左边的符号。说明:表达式可以是常量、变量、标号、数值或地址表达式。EQU指令定义的符号是不可以被再定义的,除非使用PURGE伪指令将此定义撤销后重新定义。共六十三页伪指令(指示(zhsh)性语句)5、符号(fho)定义伪指令格式:符号 = 表达式功能:与EQU伪指令的功能完全相同。说明:与EQU指令的区别在于用

15、“”定义的符号可被再定义。共六十三页伪指令(指示(zhsh)性语句)6、段定义(dngy)伪指令格式:段名SEGMENT 定位方式组合方式类别名 ;(段体) 段名 ENDS 功能:定义一个逻辑段。说明:任何一个逻辑段都是从SEGMENT开始,以ENDS结束。共六十三页伪指令(指示(zhsh)性语句)6、段定义(dngy)伪指令定位方式:说明该段的起始地址边界规则PAGE指定起始地址的低8位是0,称页边界XXXX XXXX XXXX 0000 0000BPARA指定起始地址的低4位是0,称段边界(缺省)XXXX XXXX XXXX XXXX 0000BWORD指定起始地址的低2位是0,称字边界X

16、XXX XXXX XXXX XXXX XX00BBYTE指定起始地址为任意值XXXX XXXX XXXX XXXX XXXXB共六十三页伪指令(指示(zhsh)性语句)6、段定义(dngy)伪指令组合方式:连接程序时设定本段与其它同名段的连接方式,适用于模块化程序设计。PUBLIC同名段依次连接起来,形成一个连续的段COMMON同名段共用同一起始地址,相互重叠段的长度,取最长段的长度AT 表达式定位在表达式所指定的段地址(代码段例外)共六十三页伪指令(指示(zhsh)性语句)6、段定义(dngy)伪指令组合方式:连接程序时设定本段与其它同名段的连接方式,适用于模块化程序设计。STACK同名段构

17、成一个连续的堆栈段,并自动初始化SPMEMORY表示本段定位在所有段的地址之上,高地址处无(NONE)不与任何段相连,各段有独立段基址(缺省方式)共六十三页伪指令(指示(zhsh)性语句)6、段定义(dngy)伪指令类别名:用单引号括起来的字符串 类别名不超过40个字符,用于控制段的存放次序。MASM将所有类别名相同的逻辑段按前述组合方式进行连接。共六十三页伪指令(指示(zhsh)性语句)7、段分配(fnpi)伪指令格式:ASSUME 段寄存器:段名, 功能:说明源程序中定义的逻辑段由哪个段寄存器去寻址。段寄存器可以是CS,SS,DS,ES说明:1)ASSUME语句放在代码段内,作为代码段的第

18、一条指令。2)ASSUME语句只是将逻辑段与段寄存器关联起来,并没有给段寄存器赋值。段寄存器的赋值应在程序中用指令显式指定。共六十三页伪指令(指示(zhsh)性语句)7、段分配(fnpi)伪指令段寄存器的装入:CS的装入: CS和IP用于指向程序中即将执行的指令地址,由汇编程序负责装入,但需要在编程时在代码段第一行加入一个标号,并在最后一行用END伪指令结束该标号。 CODE SEGMENTASSUME CS:CODE, START: CODE ENDSEND START共六十三页伪指令(指示(zhsh)性语句)7、段分配(fnpi)伪指令段寄存器的装入:DS、ES的装入:必须通过编程,直接将

19、段基址通过通用寄存器装入段寄存器。 CODE SEGMENTASSUME CS:CODE, DS:DATA1, ES:DATA2START:MOV AX,DATA1MOV DS,AXMOV AX,DATA2MOV ES,AX CODE ENDSEND START共六十三页伪指令(指示(zhsh)性语句)7、段分配(fnpi)伪指令段寄存器的装入:SS的装入: 方法二:用程序装入。SACK SEGMENT DW 100 DUP (?)TOP LABLE WORDSACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SACKSTART: MOV AX,SACKMOV SS,

20、AXMOV SP,OFFSET TOP 共六十三页伪指令(指示(zhsh)性语句)7、段分配(fnpi)伪指令段寄存器的装入:SS的装入: 方法一:在段定义时将组合方式定义为STACK,并在ASSUME语句中,将堆栈段分配给段寄存器SS。汇编程序将该堆栈段的基址自动装入到SS段寄存器中。SACK SEGMENT STACKDW 100 DUP (?)SACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SACKSTART: 共六十三页伪指令(指示(zhsh)性语句)8、过程(guchng)定义伪指令格式:过程名 PROC NEAR/FAR RET 过程名 ENDP功能:

21、定义一个过程,名字由“过程名”指定说明:NEAR表示近过程,FAR表示远过程,缺省为NEAR。共六十三页伪指令(指示(zhsh)性语句)9、LABLE伪指令格式:名称(mngchng) LABEL 类型/距离说明: LABEL伪指令用于给已定义的变量或标号取一个别名,并可重新定义它的类型或距离属性。别名功能:VARB LABLE BYTEVARW DW 1234H,5678H改变调用距离功能:FNEXT LABLE FARNEXT:MOV AX,BX共六十三页伪指令(指示(zhsh)性语句)10、属性指定(zhdng)操作伪指令格式:THIS 类型功能:用来给后续数据定义新的类型。VARB E

22、QU THIS BYTEVARW DW 1234H,5678H共六十三页伪指令(指示(zhsh)性语句)11、定位(dngwi)伪指令格式:ORG 表达式功能:指定后续代码或数据的起始(偏移)地址。DATA SEGMENTORG 1000HVAR1 DB 12H,34HORG 2000HVAR2 DW 10 DUP(?)DATA ENDS共六十三页伪指令(指示(zhsh)性语句)12、当前(dngqin)位置计数器$ 在汇编程序时,用$表示当前位置计数器(偏移地址),方便程序编写和地址计算。DATA SEGMENTSTRING1 DB “BCDEFGHIJKLMOPR”COUNT = $ -

23、STRING1DATA ENDS共六十三页伪指令(指示(zhsh)性语句)13、END伪指令格式(g shi):END 标号名功能:表明源程序结束。说明:一般放在源程序的最后一行,一个程序模块只允许有一个END语句。共六十三页简化(jinhu)段伪指令1、内存模式(msh)语句.MODEL格式:.MODEL 模式类型功能:指定数据段和代码段允许使用的长度。说明:模式类型也称为内存模式、寻址模式,它表示如何在内存中为程序、数据、堆栈等分配空间并存取它们。共有7种模式类型。共六十三页简化(jinhu)段伪指令1、内存(ni cn)模式语句.MODELTINY:微模式(CSDSSSES)。所有数据及

24、代码放在同一个物理段中,数据访问都为NEAR类型,整个程序小于64KB,生成的可执行文件扩展名为.COM,只在DOS操作系统下使用。SMALL:小模式(SSDSESCS)。所有数据放在一个64KB的物理段中(包括数据和堆栈),所有代码则放在另一个64KB的物理段中。共六十三页简化(jinhu)段伪指令1、内存(ni cn)模式语句.MODELMEDIUM:中模式(数据小,程序大)。所有数据放在一个64KB的物理段中,代码超过64KB时可以放在多个物理段中,程序中转移或调用类型可以为FAR型。COMPACT:紧凑模式或压缩模式(数据大,程序小)。所有代码放在一个64KB的物理段中,程序中的转移或

25、调用类型为NEAR。数据超过64KB时可以放在多个物理段中。共六十三页简化(jinhu)段伪指令1、内存(ni cn)模式语句.MODELLARGE:大模式(数据大,程序大)。代码和数据都可以超过64KB,可放在多个物理段中,数据和代码都可以是远程访问类型。HUGE:巨模式(数据巨大,程序大)。数据段中单个数据项的大小可以超过64KB,代码段允许超过64KB,即有多个代码段和数据段,都允许远程访问。共六十三页简化(jinhu)段伪指令1、内存(ni cn)模式语句.MODELFLAT:平面模式。所有代码和数据被放在一个段中,但段内地址不再是16位,而是32位,所以整个程序可达4GB大小。MAS

26、M6.0以上汇编程序支持,可以在WINDOWS操作系统下使用。共六十三页简化(jinhu)段伪指令2、简化(jinhu)段定义语句格式:.CODE 段名功能:表明其下面的指令是代码段部分。说明:段名用于区分不同的代码段,省略情况下默认段名为_TEXT。代码段定义共六十三页简化(jinhu)段伪指令2、简化段定义(dngy)语句格式:.STACK 字节数功能:定义一个用户自己的堆栈段。说明:堆栈段的默认段名为STACK,“字节数”如果不写则默认为1KB。堆栈段定义共六十三页简化(jinhu)段伪指令2、简化(jinhu)段定义语句格式:.DATA 段名 .DATA? 段名 .CONST 段名功能

27、:表明其下面内容是数据段定义的变量或存储空间预留。说明: “.DATA?” 定义未初始化的数据段; “.CONST”定义一个常数数据段;段名用于与其他数据段区分,省略情况下默认段名分别是_DATA/_BSS/CONST。数据段定义共六十三页简化(jinhu)段伪指令3、程序(chngx)开始伪指令.STARTUP格式:.STARTUP功能:用于指示程序开始位置,自动对DS,SS,SP寄存器进行初始化。共六十三页简化(jinhu)段伪指令4、程序(chngx)返回伪指令.EXIT格式:.EXIT功能:退出本程序,返回DOS操作系统。说明:其功能可以用如下两条指令来代替:MOV AH,4CHINT 21H共六十三页汇编语言(hu bin y yn)宏指令 宏是程序设计的一种(y zhn)方式,它把一段程序代码用一个特定标识符(宏名)来表示。在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论