微机原理与控制技术-卢晓红7-76汇编语言程序设计.ppt

上传人:wuy****n92 文档编号:73259739 上传时间:2023-02-17 格式:PPT 页数:76 大小:583.50KB
返回 下载 相关 举报
微机原理与控制技术-卢晓红7-76汇编语言程序设计.ppt_第1页
第1页 / 共76页
微机原理与控制技术-卢晓红7-76汇编语言程序设计.ppt_第2页
第2页 / 共76页
点击查看更多>>
资源描述

《微机原理与控制技术-卢晓红7-76汇编语言程序设计.ppt》由会员分享,可在线阅读,更多相关《微机原理与控制技术-卢晓红7-76汇编语言程序设计.ppt(76页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、微机原理与控制技术微机原理与控制技术 卢晓红卢晓红 1第七章:汇编语言程序设计第七章:汇编语言程序设计2 27.1 7.1 汇编语言的基本概念汇编语言的基本概念7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式7.3 7.3 伪指令语句伪指令语句7.4 7.4 宏指令语句宏指令语句*7.5 7.5 汇编语言程序的上机过程汇编语言程序的上机过程7.6 7.6 汇编语言程序设计汇编语言程序设计 第七章:汇编语言程序设计第七章:汇编语言程序设计3 3 7.1 汇编语言的基本概念汇编语言的基本概念7.1.1 机器语言机器语言(Machine Language)u机机器器语语言言是是一一种种用用二

2、二进进制制表表示示指指令令和和数数据据,能能被被机机器器直直接接识识别别的的计计算算机机语语言言。它它的的缺缺点点是是不不直直观观,不不易易理理解解和和记记忆忆,因因此此编编写写、阅阅读读和和修修改改机机器器语语言言程程序序都都比比较较繁繁琐琐。但但(机机器器语语言言程程序序)是是计计算算机机惟惟一一能能够够直直接接理理解解和和执执行行的的程程序序,具具有有执执行行速速度度快快、占用内存少等特点。占用内存少等特点。4 4 n7.1.2 高级语言高级语言(High Level Language)u如如果果说说(机机器器语语言言)是是面面向向机机器器的的,那那么么(高高级级语语言言)则则是是“面面

3、向向过过程程”的的语语言言。利利用用这这些些语语言言编编程程,程程序序员员可可以以完完全全不不考考虑虑机机器器的的结结构构特特点点,不不必必了了解解和和熟熟记记机机器器的的指指令令系系统统,仅仅使使用用一一些些接接近近人人们们书书写写习习惯惯的的英英语语和和数数学学表表达达式式形形式式的的语语句句去去编编制制程程序序。这这样样编编写写的的程程序序与与问问题题本本身身的的数数学学模模型型之之间间有有着着良良好好的的对对应应关关系系,可可在在各各种种机机器器上上通通用用(不不同同机机器器之之间间仅仅做做少少量量修修改改)。但但是是,这这种种用用高高级级语语言言编编写写的的源源程程序序并并不不能能在

4、在机机器器上上直直接接执执行行,需需要要被被翻翻译译成成对对应应的的目目标标程程序序(即即机机器器语语言言程程序序),机机器器才才能能运运行行。具具有有这这种种翻翻译译作作用用的的程程序序称称为为(解解释释程程序序或或编编译程序)。译程序)。7.1 汇编语言的基本概念汇编语言的基本概念5 5 n7.1.3 汇编语言汇编语言(Assembly Language)u(汇汇编编语语言言)是是一一种种采采用用助助记记符符表表示示的的程程序序设设计计语语言言,即即用用(助助记记符符)来来表表示示指指令令的的操操作作码码和和操操作作数数,用用(标标号号或或符符号号)代代表表地地址址、常常量量或或变变量量。

5、助助记记符符一一般般都都是是英英文文字字的的缩缩写写,以以方方便便人人们们书书写写、阅阅读读和和检检查查。实实际际上上,用用汇汇编编语语言言编编写写的的(汇汇编编语语言言源源程程序序)就就是是机机器器语语言言程程序序的的符符号号表表示示,汇汇编编语语言言源源程程序序与与其其经经过过汇汇编编所所产产生生的的目目标标代代码码程程序序之之间间有有明明显显的的一一一一对对应应关关系系,故故也也称称汇汇编编语言为符号语言语言为符号语言。u用用汇汇编编语语言言编编写写的的源源程程序序也也需需要要翻翻译译成成(目目标标程程序序)才才能能被被机机器器执执行行。这这个个翻翻译译过过程程称称为为(汇汇编编),完完

6、成成汇汇编任务的程序称为(编任务的程序称为(汇编程序)汇编程序)。7.1 汇编语言的基本概念汇编语言的基本概念6 6 u用用汇汇编编语语言言编编写写程程序序能能够够直直接接利利用用硬硬件件系系统统的的特特性性(如如寄寄存存器器、标标志志、中中断断系系统统等等)直直接接对对位位、字字节节、字字寄寄存存器器或或存存储储单单元元、I/OI/O端端口口进进行行处处理理,同同时时也也能能直直接接使使用用CPU CPU 指指令令系系统统和和指指令令系系统统提提供供的的各各种种寻寻址址方方式式,编编制制出出高高质质量量的的程程序序,这这样样的的程程序序不不但但占占用用内内存存空空间间少少,而而且且执执行行速

7、速度度快快。所所以以,汇汇编编语语言言大大量量被被用用于于编编写写计计算算机系统程序、实时通信程序、实时控制程序等机系统程序、实时通信程序、实时控制程序等。用汇编语言用汇编语言编写的源程序编写的源程序汇编程序汇编程序目标程序目标程序7.1 汇编语言的基本概念汇编语言的基本概念汇编汇编7 7 u(汇汇编编程程序序)是是最最早早也也是是最最成成熟熟的的一一种种系系统统软软件件。它它除除了了能能够够将将(汇汇编编语语言言源源程程序序)翻翻译译成成(机机器器语语言言程程序序)这这一一主主要要功功能能外外,还还能能够够根根据据用用户户的的要要求求自自动动分分配配存存储储区区域域(包包括括程程序序区区、数

8、数据据区区、暂暂存存区区等等);自自动动地地把把各各种种进进位位制制数数转转换换成成二二进进制制数数,把把字字符符转转换换成成ASCIIASCII码码,计计算算表表达达式式的的值值等等;自自动动对对源源程程序序进进行行检检查查,给给出出错错误误信信息息(如如非非法法格格式式,未未定定义义的的助助记记符符、标标号号,漏漏掉掉操操作作数数等等)等等。具具有有这这些些功功能能的的汇汇编编程程序序又又称称为为基基本本汇汇编编(或小汇编或小汇编ASM-86)ASM-86)。u在在基基本本汇汇编编的的基基础础上上,进进一一步步允允许许在在源源程程序序中中把把一一个个指指令令序序列列定定义义为为一一条条宏宏

9、指指令令的的汇汇编编程程序序,就就叫叫做做宏宏汇汇编编(MASM-86)(MASM-86)。它它包包含含全全部部ASMASM功功能能,还还增增加加了了宏宏指指令令、结结构构、记记录录等等高高级级汇编语言功能。汇编语言功能。7.1 汇编语言的基本概念汇编语言的基本概念8 8 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式 分段结构分段结构n汇编语言源程序例汇编语言源程序例u要要求求将将两两个个5 5字字节节十十六六进进制制数数相相加加,可可以以编编写写出出以下汇编语言源程序。以下汇编语言源程序。DATADATA1DATA2DATASEGMENTDB 0F8H,60H,0ACH,74H,

10、3BHDB 0C1H,36H,9EH,0D5H,20HENDS;定义数据段定义数据段;被加数;被加数;加数;加数;数据段结束;数据段结束3B74AC60F8H+20D59E36C1H=5C4A4A97B9H3B74AC60F8H+20D59E36C1H=5C4A4A97B9H9 9 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式CODESEGMENT;定义代码段;定义代码段ASSUMESTART:CS:CODE,DS:DATAMOV AX,DATAMOV DS,AXMOV CX,5MOV SI,0CLC;初始化;初始化DS;循环次数送;循环次数送CX;置;置SI初值为初值为0;清;清

11、CF标志标志LOOP1:MOV AL,DATA2SIADC DATA1SI,AL;取一个字节加数;取一个字节加数;与被加数相加;与被加数相加INC SILOOP LOOP1MOV AH,4CHINT 21H;SI加加1;CX减减1,若不等于,若不等于0则转移则转移;返回;返回DOSCODEENDSEND START;代码段结束;代码段结束;源程序结束;源程序结束1010 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式 u由由程程序序例例可可以以看看出出,汇汇编编语语言言源源程程序序的的结结构构是是分分段段结结 构构 形形 式式,一一 个个 汇汇 编编 语语 言言 源源 程程 序序 由

12、由 若若 干干 段段(SEGMENT)(SEGMENT)组组成成,每每个个段段以以(SEGMENTSEGMENT语语句句)开开始始,以以(ENDSENDS语语句句)结结束束。整整个个源源程程序序的的结结尾尾是是(ENDEND语句)。语句)。汇汇编编语语言言源源程程序序中中的的段段与与CPUCPU管管理理的的存存储储器器的的段段,既有联系,又在概念上有所区别。既有联系,又在概念上有所区别。u在在汇汇编编语语言言源源程程序序中中,设设置置段段的的自自由由度度比比较较大大。例例如如,一一个个源源程程序序中中可可以以有有多多个个数数据据段段或或多多个个代代码码段段等等等等。一一般般来来说说,汇汇编编语

13、语言言源源程程序序中中段段的的数数目目可可以以根根据据实实际际需需要要而而设设定定。为为了了和和CPUCPU管管理理的的存存储储器器物物理理段段相相区区别别,我我们们将将汇汇编编语语言言程程序序中中的段称为的段称为逻辑段逻辑段。在不致发生混淆的地方,有时简称为段。在不致发生混淆的地方,有时简称为段。1111 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式 汇编语言语句的类型和格式汇编语言语句的类型和格式1语句的类型语句的类型汇编语言源程序中的语句可以分为(汇编语言源程序中的语句可以分为(指令语句)和(伪指指令语句)和(伪指令语句)令语句)两种类型:两种类型:指令语句:指令语句:是能产

14、生目标代码,是能产生目标代码,CPU CPU 可以执行可以执行的能完成特定功能的语句。的能完成特定功能的语句。伪指令语句伪指令语句:是一种不产生目标代码的语句,仅:是一种不产生目标代码的语句,仅用来在汇编过程中告诉汇编程序应如何汇编。用来在汇编过程中告诉汇编程序应如何汇编。例例如,告诉汇编程序已写出的汇编语言源程序有几个如,告诉汇编程序已写出的汇编语言源程序有几个段,段的名字是什么;定义变量,定义过程,给变段,段的名字是什么;定义变量,定义过程,给变量分配存储单元,给数字或表达式命名等。显然,量分配存储单元,给数字或表达式命名等。显然,伪指令语句是汇编程序在汇编时使用的。伪指令语句是汇编程序在

15、汇编时使用的。1212 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式2.2.语句的格式语句的格式指指令令语语句句与与伪伪指指令令语语句句的的格格式式是是类类似似的的。一一般般情情况况下下,汇汇编编语语言言的的语句可以由语句可以由名字、助记符、操作数、注释名字、助记符、操作数、注释部分构成:部分构成:名字名字 助记符助记符 操作数操作数 ;注释;注释 其中带方括号的部分表示任选项,可以有,也可以没有其中带方括号的部分表示任选项,可以有,也可以没有。例如以下语句:例如以下语句:LOOP1:MOV AL,DATA2SI;取一个字节加数取一个字节加数DATA1 DB 0F8H,60H,0A

16、CH,74H74H,3BH;被加数;被加数第第 一一 条条 语语 句句 是是 指指 令令 语语 句句,其其 中中“LOOP1LOOP1:”是是 名名 字字,“MOV”MOV”是是指指令令助助记记符符,“ALAL,DATA2SI”DATA2SI”是是操操作作数数,“;”后面是注释部分。后面是注释部分。第第二二条条语语句句是是伪伪指指令令语语句句,其其中中“DATA1”DATA1”是是名名字字,“DB”DB”是是伪伪指指令令定定义义符符,“0F8H0F8H,60H60H,0ACH0ACH,74H74H,3BH”3BH”操操作作数,数,“;”后面是注释部分。后面是注释部分。7.2 7.2 汇编语言源

17、程序的格式汇编语言源程序的格式(1)(1)名字名字-指令语句中的名字指令语句中的名字汇编语言语句的第一个组成部分是名字汇编语言语句的第一个组成部分是名字(Name)(Name)。在在指指令令语语句句中中,名名字字是是一一个个标标号号。指指令令语语句句中中的的标标号号实实质质上上是是指指令令的的符符号号地地址址。并并非非每每条条指指令令语语句句必必须须有有标标号号,但但如如果果一一条条指指令令前前面面有有一一标标号号,则则程程序序中中其其他他地地方方就就可可以以引引用用这这个个标标号号。在在前前面面程程序序例例中中,STARTSTART、LOOP1LOOP1就就是是标标号号。指指令令语语句句名名

18、字字标标号号后后面面通通常常有有一一个个冒冒号号。标标号号有有三三种属性:种属性:段、偏移量和类型段、偏移量和类型。标标号号的的段段属属性性是是定定义义标标号号在在程程序序段段的的段段地地址址。当当程程序序中中引引用用一一个标号时,该标号的段值应在个标号时,该标号的段值应在CSCS寄存器中。寄存器中。标标号号的的偏偏移移量量属属性性表表示示标标号号所所在在段段的的起起始始地地址址到到定定义义该该标标号号的的地址之间的字节数。偏移量是一个地址之间的字节数。偏移量是一个1616位无符号数位无符号数。标标号号的的类类型型属属性性有有两两种种:NEARNEAR和和FARFAR。前前一一种种标标号号可可

19、以以在在段段内内被被引引用用,地地址址指指针针为为2 2字字节节;后后一一种种标标号号可可以以在在其其他他段段被被引引用用,地地址址指指针针为为4 4字字节节。如如果果定定义义一一个个标标号号时时后后跟跟冒冒号号,则则汇汇编编程程序序确认其类型为确认其类型为NEARNEAR。1313 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式u伪伪指指令令语语句句中中的的名名字字可可以以是是变变量量名名、段段名名、过过程程名名。有有些些伪伪指指令令规规定定前前面面必必须须有有名名字字,有有些些则则不不允允许许有有名名字字,也也有有一一些些伪伪指指令令的的名名字字是是任任选选的的。即即不不同同的的

20、伪伪指指令令对对于于是是否否有有名名字字有有不不同同的的规规定定。伪伪指指令令语语句句的名字后面通常不跟冒号的名字后面通常不跟冒号,这是它和标号的一个明显区别。,这是它和标号的一个明显区别。u很很多多情情况况下下伪伪指指令令语语句句中中的的名名字字是是变变量量名名。变变量量名名代代表表存存储储器器中中一一个个数数据据区区的的名名字字。例例如如前前面面例例中中的的DATA1DATA1、DATA2DATA2就就是是变变量量名名。变变量量也有三种属性:段、偏移量和类型也有三种属性:段、偏移量和类型。变变量量的的段段属属性性是是变变量量所所代代表表的的数数据据区区所所在在段段的的段段地地址址。由由于于

21、数数据据区区一一般般在在存存储储器器的的数数据据段段中中,因因此此变变量量的的段段地地址址常常常常在在DSDS和和ESES寄存器中。寄存器中。变变量量的的偏偏移移量量属属性性是是该该变变量量所所在在段段的的起起始始地地址址与与变变量量的的地地址址之间的字节数。之间的字节数。变变量量的的类类型型属属性性有有DBDB(BYTEBYTE,字字节节)、DWDW(WORDWORD,字字)、DDDD(Double Double WORDWORD,双双字字)、DQ DQ(四四字字)、DT DT(十十字字)等等,表表示数据区中存取操作对象的大小。示数据区中存取操作对象的大小。1414(1)(1)名字名字-伪指

22、令语句中的名字伪指令语句中的名字 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(2)(2)助记符助记符汇汇编编语语言言语语句句中中的的第第二二个个组组成成部部分分是是助助记记符符(Mnemonic)(Mnemonic)。在在指指令令语语句句中中的的第第二二部部分分是是CPUCPU指指令令系系统统中中指指令令的的助助记记符符,如如MOVMOV、ADCADC等等。助助记记符符约约有有9090多种,在指令系统中已经进行了详细的讨论。多种,在指令系统中已经进行了详细的讨论。在在伪伪指指令令语语句句中中的的第第二二部部分分是是伪伪指指令令的的定定义义符符,如如DBDB、SEGMENTSEGM

23、ENT、ENDSENDS、ENDEND等等。它它们们在在程程序序中中的的作作用用是是定定义义变变量量的的类类型型、定定义义段段以以及及告告诉诉汇汇编编程程序序结结束束汇汇编编等等。关关于于伪伪指指令令的的作作用用和和使使用方法,将在本章后继进行讨论。用方法,将在本章后继进行讨论。1515 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(3)(3)操作数操作数u汇编语言语句中的汇编语言语句中的第三个组成部分是操作数第三个组成部分是操作数。u在在指指令令语语句句中中是是指指令令的的操操作作数数,可可能能有有单单操操作作数数或或双双操操作作数数,也也可可能能无无操操作作数数;而而在在伪伪指

24、指令令中中可可能能有有更更多多个个操操作作数数。当当操操作作数数不不止止一个时,相互之间应该用逗号隔开。一个时,相互之间应该用逗号隔开。u可以作为操作数的有可以作为操作数的有常数、寄存器、标号、变量和表达式常数、寄存器、标号、变量和表达式等。等。常常数数。常常数数就就是是没没有有任任何何属属性性的的确确定定的的纯纯数数值值,可可以以分为数值常数和字符串常数两类。有如下几种类型:分为数值常数和字符串常数两类。有如下几种类型:二进制数(以字母二进制数(以字母B B结尾):结尾):01011101B01011101B;八进制数(以字母八进制数(以字母O O或者或者Q Q结尾):结尾):723Q723

25、Q,35Q35Q;十进制数(以字母十进制数(以字母D D或省略结尾,):或省略结尾,):129129,129D129D;十十六六进进制制数数(以以字字母母H H结结尾尾):3A5BH3A5BH,0FEH0FEH,常常数数的的第第一一位位必必须须是是数数字字,否否则则汇汇编编时时将将被被看看成成是是标标识识符符,如如常常数数B7HB7H应应写成写成0B7H0B7H,FFHFFH应写成应写成0FFH0FFH。实数:实数:5.23E-4;5.23E-4;1616 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(3)(3)操作数操作数常数常数字字符符串串常常数数:字字符符串串常常数数是是由由

26、单单引引号号括括起起来来的的一一串串字字符符。例例如如ABCDEFGABCDEFG和和179179。单单引引号号内内的的字字符符在在汇汇编编时时都都以以ASCIIASCII的的代代码码形形式式存存放放在在存存储储单单元元中中。如如上上述述两两字字符符串串的的ASCIIASCII代代码码为为41H41H,42H42H,43H43H,44H44H,48H48H和和31H31H,37H37H,39H39H。字符串最长允许有字符串最长允许有255255个字符个字符。1717MOV AXMOV AX,0AF1H0AF1H;源操作数中作立即数;源操作数中作立即数ADC DLADC DL,12H12HMOV

27、 BXMOV BX,SI+23HSI+23H;基址加变址寻址方式中作位移量;基址加变址寻址方式中作位移量DB 12HDB 12H;定义一个字节数据;定义一个字节数据DW 1234HDW 1234H;定义一个字数据定义一个字数据DD 12345678HDD 12345678H;定义一个双字数据定义一个双字数据DB A B C DDB A B C D;定义四字节的字符串数据定义四字节的字符串数据A:41H;a:61H;0:30H 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(3)(3)操作数操作数寄寄存存器器。8086/8088CPU8086/8088CPU的的寄寄存存器器可可以以作作

28、为为指指令令的的操操作数。作数。标标号号。由由于于标标号号代代表表一一条条指指令令的的符符号号地地址址,因因此此可可以以作作为为转转移移(无无条条件件转转移移或或条条件件转转移移)、过过程程调调用用CALLCALL以以及及循循环环控制控制LOOPLOOP指令指令的操作数。的操作数。变变量量。因因为为变变量量是是存存储储器器中中某某个个数数据据区区的的名名字字,所所以以在在指指令令中中可可以以作作为为存存储储器器操操作作数数,代代表表存存放放在在某某些些存存储储单单元元的数据。的数据。表达式表达式。汇编语言语句中的表达式,按其性质可分为两。汇编语言语句中的表达式,按其性质可分为两种种:数数值值表

29、表达达式式和和地地址址表表达达式式。数数值值表表达达式式产产生生一一个个数数值值结结果果,只只有有大大小小,没没有有属属性性。地地址址表表达达式式的的结结果果不不是是一一个个单单纯纯的的数数值值,而而是是一一个个表表示示存存储储器器地地址址的的变变量量或或标标号号,它它有有三种属性:段、偏移量和类型三种属性:段、偏移量和类型。7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式变量变量1919(3)(3)操作数操作数VAR_DATA SEGMENTDATA1 DB 12HDATA2 DB 34HDATA3 DW 5678HVAR_DATA ENDS定义了定义了DATA1DATA1,DATA

30、2DATA2,DATA3DATA3三个变量。三个变量。段属性:存放在段属性:存放在VAR_DATAVAR_DATA逻辑段中;偏移属逻辑段中;偏移属性:性:DATA1DATA1偏移量为偏移量为0 0,DATA2DATA2偏移量为偏移量为1 1,DATA3DATA3偏移量为偏移量为2 2;类型属性:;类型属性:DATA1DATA1、DATA2DATA2是字节属性;是字节属性;DATA3DATA3为字属性。为字属性。DA1 DB 50H,50DA2 DW 0A3F1H,4981HDA1DA1字节单元内容为字节单元内容为50H50H,DA+1DA+1字节单元内字节单元内容为十进制容为十进制50(32H

31、)50(32H);DA2DA2字单元内容为字单元内容为0A3F1H0A3F1H(低字节为(低字节为F1HF1H,高字节为,高字节为0A3H0A3H););DA2+2DA2+2字单元内容为字单元内容为4981H4981H。7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式汇汇编编语语言言语语句句的的最最后后一一个个组组成成部部分分是是注注释释。对对于于一一个个汇汇编编语语言言语语句句来来说说,注注释释部部分分并并不不是是必必要要的的,但但是是加加上上适适当当的的注注释释以以后后,可可以以增增加加源源程程序序的的可可读读性性。因因此此,最最好好在在重重要的程序段前面以及关键处加上简明扼要的注

32、释。要的程序段前面以及关键处加上简明扼要的注释。注注释释前前面面要要求求加加上上分分号号(;)。如如果果注注释释的的内内容容较较多多,超超过过一一行行,则则换换行行以以后后前前面面还还要要加加上上分分号号。注注释释也也可可以以从从一一行行的的最最前前面面开开始始,以以表表示示对对一一个个程程序序段段的的说说明明。汇汇编编程程序序对对于于注注释释不不予予理理会会,即即注注释释对对汇汇编编后后产产生生的的目目标标程程序序没没有有任何影响。任何影响。(4)(4)注释注释2020 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式n表达式与运算符表达式与运算符(1)(1)算算术术运运算算符符。常

33、常用用的的算算术术运运算算符符有有:+(+(加加),(减减),*(乘乘),/(/(除除)和和MODMOD(除除法法取取余余运运算算符符,即即两两个个整整数数相相除除后后取取余余数数),SHLSHL左移操作符;左移操作符;SHRSHR右移操作符。右移操作符。u32 MOD 5=232 MOD 5=2。u21H SHL 2=84H21H SHL 2=84H。(2)(2)逻逻辑辑运运算算符符。逻逻辑辑运运算算符符有有:AND(AND(逻逻辑辑“与与”),OR(OR(逻逻辑辑“或或”),XOR(XOR(逻辑逻辑“异或异或”)和和NOT(NOT(逻辑逻辑“非非”)。u逻逻辑辑运运算算符符只只用用于于数数

34、值值表表达达式式中中对对数数值值进进行行按按位位逻逻辑辑运运算算,并得到一个数值结果。并得到一个数值结果。u24H AND 0FH=04H24H AND 0FH=04Hu24H OR OFH=2FH24H OR OFH=2FHu24H XOR OFH=2BH24H XOR OFH=2BHuNOT 24H=0DBHNOT 24H=0DBH2121 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(3)(3)关关系系运运算算符符。关关系系运运算算符符有有:EQ(EQ(等等于于),NE(NE(不不等等),LT(LT(小小于于),GT(GT(大于大于),LE(LE(小于或等于小于或等于),GE

35、(GE(大于或等于大于或等于)等。等。u运运算算结结果果只只可可能能是是两两个个特特定定的的数数值值之之一一:当当关关系系不不成成立立(假假)时时,结果为结果为0(0(全全0)0);当关系成立;当关系成立(真真)时,结果为时,结果为0FFFFH(0FFFFH(全全1)1)。例如:。例如:MOV AX,4 EQ 3MOV AX,4 NE 3;关系不成立,故关系不成立,故(AX)0(AX)0;关系成立,故;关系成立,故(AX)0FFFFH(AX)0FFFFH2222n表达式与运算符表达式与运算符(4)(4)分析运算符。分析运算符。分析运算符用于分析一个存储器操作数的属性,分析运算符用于分析一个存储

36、器操作数的属性,如段值、偏移量和类型等,或取得它定义的存储空间的大小。分析如段值、偏移量和类型等,或取得它定义的存储空间的大小。分析运算符有运算符有SEGSEG(求段基址)、(求段基址)、OFFSET OFFSET(求偏移地址)(求偏移地址)、TYPE TYPE(求类型值)(求类型值)、SIZE SIZE(求字节数)和(求字节数)和LENGTH LENGTH(求长度项数)(求长度项数)等。等。7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(4)(4)分析运算符。分析运算符。uSEGSEG运运算算符符。利利用用SEGSEG运运算算符符可可以以得得到到一一个个标标号号或或变变量量所所在在

37、段段的的段段地地址址。例例如如,下下面面两两条条指指令令将将变变量量ARRAYARRAY的的段段地地址址送送DSDS寄存器。寄存器。MOV AXMOV AX,SEG ARRAYSEG ARRAYMOV DSMOV DS,AXAXuOFFSETOFFSET运运算算符符。利利用用OFFSETOFFSET运运算算符符可可以以得得到到一一个个标标号号或或变量的偏移地址。例如:变量的偏移地址。例如:MOV DIMOV DI,OFFSET DATA1OFFSET DATA1uTYPETYPE运算符。运算符。TYPETYPE运算符的运算结果是一个数值,这个数运算符的运算结果是一个数值,这个数值与存储器操作数

38、的类型属性具有对应关系。值与存储器操作数的类型属性具有对应关系。2323n表达式与运算符表达式与运算符类型类型BYTEWORDDWORDQWORDTBYTENEARFARType值值124810-1-2 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式uLENGTHLENGTH运算符。运算符。如果一个变量已用重复操作符如果一个变量已用重复操作符DUPDUP说明其变量的说明其变量的个数,则利用个数,则利用LENGTH LENGTH 运算符可得到这个变量的个数。如果未用运算符可得到这个变量的个数。如果未用DUPDUP说明,则得到的结果总是说明,则得到的结果总是1 1。D_B1 DB 20H

39、 DUP(?);D_B1 DB 20H DUP(?);保留保留20H20H个字节,每个字节可以预置任意内容个字节,每个字节可以预置任意内容 D_B2 DW 10H DUP(4)D_B2 DW 10H DUP(4);重复;重复10H10H个字单元,每个单元预置为个字单元,每个单元预置为4 4 LENGTH D_B1=20HLENGTH D_B1=20H LENGTH D_B2=10HLENGTH D_B2=10HuSIZESIZE运算符。运算符。如果一个变量已用重复操作符如果一个变量已用重复操作符DUPDUP说明,则利用说明,则利用SIZE SIZE 运算符可得到分配给该变量的字节总数。如果未用

40、运算符可得到分配给该变量的字节总数。如果未用DUPDUP说明,则得到说明,则得到的结果是的结果是TYPETYPE运算的结果。运算的结果。2424n表达式与运算符表达式与运算符(4)(4)分析运算符。分析运算符。SIZE=LENGTH*TYPESIZE D_B1=20H*1=20H;SIZE D_B2=10H*2=20H;7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式nTYPETYPE、LENGTHLENGTH和和SIZESIZE运算符应用例运算符应用例VAR DW?VAR DW?ARRAY DD 10 DUP(?)ARRAY DD 10 DUP(?)STR DB THIS IS TE

41、STSTR DB THIS IS TESTMOV AXMOV AX,TYPE VARTYPE VARMOV BXMOV BX,TYPE ARRAYTYPE ARRAYMOV CXMOV CX,TYPE STRTYPE STRMOV DXMOV DX,LENGTH ARRAYLENGTH ARRAYMOV SIMOV SI,SIZE ARRAYSIZE ARRAY变量变量ARRAYARRAY的个数为的个数为1010,类型为类型为DWORD(DWORD(双字双字),因,因此,此,SIZE ARRAYSIZE ARRAY的结果为的结果为1041044040。SIZESIZE的运算结果等于的运算结果等

42、于LENGTHLENGTH的运算结果乘以的运算结果乘以TYPE TYPE 的运算结果。的运算结果。;变量;变量VARVAR的类型为字的类型为字;变量;变量ARRAYARRAY的类型为双字的类型为双字;变量;变量STRSTR的类型为字节的类型为字节;(AX)2(AX)2;(BX)4(BX)4;(CX)1(CX)1;(DX)10(DX)10;(SI)40(SI)40TYPE返回值存储器操作数类型1246810-1-2BYTEWORDDWORDFWORDQWORDTBYTENEARFAR2525 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(5)(5)合成运算符。合成运算符。合成运算符可

43、以用来建立或临时改变变量或标号的类型合成运算符可以用来建立或临时改变变量或标号的类型或存储器操作数的存储单元类型。合成运算符有或存储器操作数的存储单元类型。合成运算符有PTRPTR、THISTHIS、SHORTSHORT等。等。PTRPTR运算符。运算符。PTRPTR运算符可以指定或修改存储器操作数的类型,例如:运算符可以指定或修改存储器操作数的类型,例如:INC INC BYTEBYTE PTRPTRBXSIBXSI 指令中利用指令中利用PTRPTR运算符明确规定了存储器操作数的类型是运算符明确规定了存储器操作数的类型是BYTE(BYTE(字节字节),因此,本,因此,本指令将一个字节型存储器

44、操作数加指令将一个字节型存储器操作数加1 1。MOV BXMOV BX,WORD PTR STUFFWORD PTR STUFF ;从从STUFFSTUFF中取一个字到中取一个字到BXBXSTUFF DD?STUFF DD?;定义定义STUFFSTUFF为双字类型变量为双字类型变量2626利利用用PTRPTR运运算算符符可可以以建建立立一一个个新新的的存存储储器器操操作作数数,它它与与原原来来的的同同名名操操作作数数具具有有相相同同的的段段和和偏偏移移量量,但但可可以以有有不不同同的的类类型型。不不过过这这个新类型只在当前语句中有效。例如:个新类型只在当前语句中有效。例如:n表达式与运算符表达

45、式与运算符 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式THISTHIS运运算算符符。THISTHIS运运算算符符也也可可指指定定存存储储器器操操作作数数的的类类型型。使使用用THISTHIS运运算算符符可可以以使使标标号号或或变变量量更更具具灵灵活活性性。例例如如,要要求求对对同同一一个个数数据据区区既既可可以以字字节节为为单单位位,又又可可以以字字为为单单位位进进行行存存取取,则则可可用用以以下下语语句:句:TAB1 EQU THIS WORDTAB1 EQU THIS WORDTAB2 DB 100 DUP(?)TAB2 DB 100 DUP(?)上面上面TAB1TAB1和和

46、TAB2TAB2具有相同的段地址和偏移地址,实际上代表具有相同的段地址和偏移地址,实际上代表同一个数据区,其中共有同一个数据区,其中共有100100个字节,但个字节,但TAB1TAB1的类型为的类型为WORD(WORD(字字类型类型),而,而TAB2TAB2的类型为的类型为BYTE(BYTE(字节类型字节类型)。SHORTSHORT运运算算符符。SHORTSHORT运运算算符符指指定定一一个个标标号号的的类类型型为为SHORTSHORT(短短标标号号),即即标标号号到到引引用用该该标标号号指指令令之之间间的的距距离离在在 128+127128+127个个字字节节的的范范围围内内。短短标标号号可

47、可以以被被用用于于无无条条件件转转移移指指令令中中。使使用用短短标标号号的的指令比使用缺省的近标号的指令少一个字节。指令比使用缺省的近标号的指令少一个字节。2727n表达式与运算符表达式与运算符(5)(5)合成运算符合成运算符 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式(6)(6)其他运算符其他运算符段超越运算符段超越运算符“:”。运算符。运算符“:”(冒号冒号)跟在段寄存跟在段寄存器名器名(DS(DS,ESES,SSSS和和CS)CS)之后,表示段超越,用以给一个之后,表示段超越,用以给一个存储器操作数指定一个段属性,而不管其原来隐含的段是存储器操作数指定一个段属性,而不管其原

48、来隐含的段是什么。例如:什么。例如:MOV AXMOV AX,ESES:DIDI字节分离运算符字节分离运算符LOWLOW和和HIGHHIGH。运算符。运算符LOWLOW和和HIGHHIGH分分别得到一个数值或地址表达式的低位和高位字节。例如:别得到一个数值或地址表达式的低位和高位字节。例如:STUFF EQUSTUFF EQUMOVMOV0ABCDH0ABCDHAHAH,HIGHHIGH STUFF STUFF ;(AH)0ABH(AH)0ABHMOV ALMOV AL,LOWLOW STUFF STUFF;(AL)0CDH(AL)0CDH2828n表达式与运算符表达式与运算符MOV CLMO

49、V CL,LOW 3A4BH LOW 3A4BH ;CL=4BHCL=4BH 7.2 7.2 汇编语言源程序的格式汇编语言源程序的格式n表达式中运算符的优先级表达式中运算符的优先级 优先级高的先运算,优先级低的后运算。优先级高的先运算,优先级低的后运算。优先级相同时按表达式中从左到右的顺序运算。优先级相同时按表达式中从左到右的顺序运算。括号可以提高运算的优先级,括号内的运算总是在相邻的运括号可以提高运算的优先级,括号内的运算总是在相邻的运算之前进行。算之前进行。优先级优先级运算符运算符高高低低12345678910LEBGTH、SIZE、WIDTH、MASK、PTR、OFFSET、SEG、TY

50、PE、THIS、:(段超越运算符段超越运算符)HIGH、LOW*、/、MOD、SHL、SHR+、EQ、NE、LT、LE、GT、GENOTANDOR、XORSHORT2929 7.37.3 伪伪 指指 令令 语语 句句伪伪指指令令无无论论表表示示形形式式或或其其在在语语句句中中所所处处的的位位置置,都与指令相似。都与指令相似。但二者之间有着重要的区别。但二者之间有着重要的区别。u首首先先,指指令令是是给给CPUCPU的的命命令令,在在运运行行时时由由CPUCPU执执行行,每每条条指指令令对对应应CPUCPU的的一一种种特特定定的的操操作作,例例如如传传送送、加加法法等等;而而伪伪指指令令是是给给

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 大学资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁