第五章汇编语言程序设计_第1页
第五章汇编语言程序设计_第2页
第五章汇编语言程序设计_第3页
第五章汇编语言程序设计_第4页
第五章汇编语言程序设计_第5页
已阅读5页,还剩170页未读 继续免费阅读

下载本文档

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

文档简介

1、第第5章章汇编语言程序设计汇编语言程序设计20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术2 2主要内容主要内容掌握:掌握:n汇编语言与汇编程序的概念;汇编语言与汇编程序的概念;n汇编语言程序设计过程;汇编语言程序设计过程;n汇编语言源程序的结构框架;汇编语言源程序的结构框架;n常用伪指令及基本常用伪指令及基本DOS功能模块的应用。功能模块的应用。20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3 3第第5章章 汇编语言程序设计汇编语言程序设计主要内容:主要内容:n5.1 概述概述n

2、5.2 语句行构成语句行构成n5.3 伪指令伪指令n5.4 DOS系统功能及系统功能及BIOS调用调用n5.5 汇编语言程序设计举例汇编语言程序设计举例 学时分配:学时分配:n10学时学时第一节第一节汇编语言程序概述汇编语言程序概述mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术5 55.1 概述概述主要内容:主要内容:n5.1.1 汇编语言源程序汇编语言源程序n5.1.2 汇编语言源程序的结构汇编语言源程序的结构 20222022年年3 3月月4 4日星期五日星期五中北大学中

3、北大学微机原理及接口技术微机原理及接口技术6 6n 机器语言机器语言二进制数形式的指令和数据。二进制数形式的指令和数据。B0 64 是什么意思?这就是机器语言。既不直观,又是什么意思?这就是机器语言。既不直观,又不易理解和记忆不易理解和记忆.而而MOV AL,64H ;很容易记忆;很容易记忆理解,这就是理解,这就是助记符助记符。 助记符助记符用便于记忆的英语单词表示的指令用便于记忆的英语单词表示的指令操作码。它反映了指令的功能和主要特征操作码。它反映了指令的功能和主要特征,便于人便于人们理解和记忆。们理解和记忆。5.1.1汇编语言源程序汇编语言源程序20222022年年3 3月月4 4日星期五

4、日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7 7n 汇编语言汇编语言是一种用是一种用助记符助记符来表示指令的操作来表示指令的操作码和操作数码和操作数, ,用标号和符号来代替地址、常量和变用标号和符号来代替地址、常量和变量的符号语言。量的符号语言。 用汇编语言编写的程序不能由机器直接执行,而用汇编语言编写的程序不能由机器直接执行,而必须翻译成由机器代码组成的目标程序,这个过程必须翻译成由机器代码组成的目标程序,这个过程称为汇编。称为汇编。高级语言中称该过程为高级语言中称该过程为“解释解释”或或“编译编译”。执行翻译的程序称为。执行翻译的程序称为“汇编程序汇编程序”。5.1.1汇

5、编语言源程序汇编语言源程序20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8 8n 汇编语言汇编语言是面向具体计算机硬件的语言是面向具体计算机硬件的语言,和机器和机器密切相关。它最大缺点是可读性差密切相关。它最大缺点是可读性差,编程效率低。编程效率低。n 高级语言高级语言编程时不需要对机器指令系统有深编程时不需要对机器指令系统有深入了解。可读性强入了解。可读性强, ,功能强。功能强。 为什么要用汇编语言为什么要用汇编语言?汇编语言编写的程序节汇编语言编写的程序节省内存省内存, ,执行速度快执行速度快, ,并为用户直接控制对象提供并为用户直

6、接控制对象提供了手段。故实时性要求很高的程序多采用汇编语了手段。故实时性要求很高的程序多采用汇编语言程序。言程序。 5.1.1汇编语言源程序汇编语言源程序20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术9 9n计算机语言:计算机语言:机器语言机器语言汇编语言汇编语言高级语言高级语言面向机器面向机器 的语言的语言机器语言机器语言汇编语言汇编语言高级语言高级语言5.1.1汇编语言源程序汇编语言源程序20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1010n汇编语言源程序汇编语言源程序 用

7、助记符编写的程序用助记符编写的程序源程序的编译程序源程序的编译程序汇编程序汇编程序汇编语言汇编语言源程序源程序机器语言机器语言目标程序目标程序5.1.1汇编语言源程序汇编语言源程序20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1111汇编语言程序设计与执行过程汇编语言程序设计与执行过程n输入汇编语言源程序输入汇编语言源程序 源文件源文件 .ASMn汇编(编译)汇编(编译) 目标文件目标文件 .OBJn链接链接 可执行文件可执行文件 .EXEn调试调试 最终程序最终程序20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微

8、机原理及接口技术微机原理及接口技术1212 汇编语言源程序通常由一个或几个程序模块汇编语言源程序通常由一个或几个程序模块组成组成, ,每个模块一般由三个逻辑段组成:每个模块一般由三个逻辑段组成: 数据段数据段存放数据、变量存放数据、变量 堆栈段堆栈段堆栈区域堆栈区域 代码段代码段存放程序指令存放程序指令5.1.2汇编语言源程序的结构汇编语言源程序的结构 20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1313n一个基本的汇编语言程序框架如下:一个基本的汇编语言程序框架如下: data SEGMENT data ENDS stack SEG

9、MENT PARA stack DB 100 DUP(stack) stack ENDS code SEGMENT ASSUME CS:code, DS:data, ES:data start: MOV AX, data MOV DS, AX MOV ES, AX MOV AL, 4CH INT 21H code ENDS END start 数据段数据段堆栈段堆栈段代码段代码段20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1414n汇编语言的语句有两种:汇编语言的语句有两种: 指令性语句指令性语句由由80868086指令助记符构成的语

10、句指令助记符构成的语句 指示性语句指示性语句由伪指令构成的语句由伪指令构成的语句n指令性语句指令性语句的格式为:的格式为: 标号标号: : 指令助记符指令助记符 目的操作数,源操作数目的操作数,源操作数 ; ;注释注释n指示性语句指示性语句的格式为:的格式为: 名字名字 伪指令伪指令 操作数操作数1,1,操作数操作数2,2, ,操作数操作数n n ; ;注释注释 注:各部分之间至少要用一个空格作为分隔符注:各部分之间至少要用一个空格作为分隔符5.1.2汇编语言源程序的结构汇编语言源程序的结构 20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技

11、术1515n 指令性语句指令性语句由由CPUCPU执行,每一条指令性语句都执行,每一条指令性语句都有有一条机器码指令与其对应一条机器码指令与其对应。 指示性语句指示性语句由由汇编程序汇编程序执行。它指出汇编程序执行。它指出汇编程序应如何对源程序进行汇编,如何定义变量、分配应如何对源程序进行汇编,如何定义变量、分配存储单元以及指示程序开始和结束等。指示性语存储单元以及指示程序开始和结束等。指示性语句句无机器码指令与其相对应无机器码指令与其相对应。 在在形式形式上:带不带冒号上:带不带冒号, ,是否可转向它是否可转向它 在在本质本质上:汇编时能否形成对应的机器码上:汇编时能否形成对应的机器码5.1

12、.2汇编语言源程序的结构汇编语言源程序的结构 20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1616指令性语句格式指令性语句格式n指令性语句指令性语句 由由CPU执行的指令执行的指令n语句格式:语句格式:标号:标号: 前缀前缀 助记符助记符 操作数操作数,操作数操作数 ;注释;注释指令的符号地址,指令的符号地址,标号后要有冒号标号后要有冒号操作码操作码注释前加分号注释前加分号20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1717指示性语句格式指示性语句格式n指示性语句指示性语句

13、:由:由汇编程序汇编程序执行,用于分配内存执行,用于分配内存空间、定义变量、指示程序开始和结束等空间、定义变量、指示程序开始和结束等n语句格式:语句格式:名字名字 伪指令助记符伪指令助记符 操作数操作数 ,操作数,操作数, ;注释;注释变量的符号地址变量的符号地址其后不加冒号其后不加冒号指示性语句中至少有一个操作数指示性语句中至少有一个操作数20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1818 语句的构成元素:语句的构成元素:n标号标号指令的符号地址,用来代表指令在存储指令的符号地址,用来代表指令在存储器中的地址。器中的地址。只能出现

14、在指令性语句中,标号后只能出现在指令性语句中,标号后应加上冒号。应加上冒号。n名字名字段、过程、变量的名字,用来代表它们段、过程、变量的名字,用来代表它们在存储器中的地址。在存储器中的地址。只能出现在指示性语句中,只能出现在指示性语句中,名字后不加冒号。名字后不加冒号。n指令助记符指令助记符8086助记符、伪指令助记符、伪指令5.1.2汇编语言源程序的结构汇编语言源程序的结构 20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术1919n操作数操作数即指令的操作对象即指令的操作对象n对指令性语句对指令性语句0,1,2个个n对指示性语句对指示性

15、语句根据需要而定根据需要而定n操作数之间以逗号分隔操作数之间以逗号分隔n操作数可以是:操作数可以是:寄存器、存储单元、常数或寄存器、存储单元、常数或表达式表达式例如:例如:AX,DI+BX+10,200, 16*8+TABLE等等5.1.2汇编语言源程序的结构汇编语言源程序的结构 20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术2020n 注释注释以分号开头,放在指令后,也可单独一行以分号开头,放在指令后,也可单独一行注意注解的写法。要写指令注意注解的写法。要写指令(段段)在程序中的作用,在程序中的作用,而不要写指令的操作。而不要写指令的

16、操作。n 例如:例如:以下为同一条指令写的注释以下为同一条指令写的注释 1)MOV CX,100 ;传送传送100到到CX 2)MOV CX,100 ;循环计数器置初值循环计数器置初值 显然,第二种写法要比第一种写法要好。显然,第二种写法要比第一种写法要好。 5.1.2汇编语言源程序的结构汇编语言源程序的结构 20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术2121汇编语言的一个实例汇编语言的一个实例: hello.asm Hello DB Hello, world!,0DH,0AH,$ ASSUME DS:DATA ,CS:PROGST

17、ART: MOV AX,DATA MOV DS,AX LEA DX,hello ;取字符串首地址取字符串首地址 MOV AH,9 INT 21H ;显示字符串显示字符串 MOV AH,4CH INT 21H ;退回退回DOS名字名字标号标号第二节第二节语句行构成语句行构成mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术23235.2 语句行构成语句行构成主要内容:主要内容:n5.2.1 标记标记n5.2.2 表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大

18、学中北大学微机原理及接口技术微机原理及接口技术2424 5.2 语句行构成语句行构成n 语句行是由标记及分隔符按照一定规则组织语句行是由标记及分隔符按照一定规则组织起来的。起来的。语句行包括语句行包括常量常量、变量变量、标号标号及及表达表达式式。n 标记是汇编语言源程序的最小的、具有意义标记是汇编语言源程序的最小的、具有意义的单位,如的单位,如标识符标识符、保留字保留字、界符界符、常数常数和和注注释释,所有这些都称为标记。,所有这些都称为标记。20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术2525 5.2.1 标记标记1.常量常量n 数

19、字常量数字常量n二进制数二进制数,以以B结尾。如结尾。如01001101B。n十进制数十进制数,如如85。n十六进制数十六进制数,以以H结尾。第结尾。第1个数字为个数字为A-F时,时,前面应加前面应加0,如,如0F160H。20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术2626 1.常量常量n 字符串常量字符串常量n字符串:用引号括起来的字符串:用引号括起来的1个或多个字符。如个或多个字符。如ERROR!, a,汇编时被翻译成对应的汇编时被翻译成对应的ASCII码码45H,52H,52H,4FH,52H,21H和和61H。n用单引号引起

20、来的字符或字符串也代表常数。用单引号引起来的字符或字符串也代表常数。5.2.1 标记标记20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术27272.标号标号指令所在内存单元的符号地址指令所在内存单元的符号地址n 标号三个属性:标号三个属性: 段地址段地址:即标号所在段的段地址;:即标号所在段的段地址; 偏移量偏移量:标号所代表存储单元的段内偏移地址:标号所代表存储单元的段内偏移地址 类类 型型:NEAR或或FAR: 5.2.1 标记标记20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术

21、2828n 标号类型属性:标号类型属性: NEAR表示标号所在语句与转移指令表示标号所在语句与转移指令/ 调用调用指令在同一码段内,跳转时只需改变指令在同一码段内,跳转时只需改变IP即可。即可。 FAR标号所在语句与转移指令标号所在语句与转移指令/调用指令不调用指令不在同一代码段内。在同一代码段内。 如没有对类型进行说明,默认为如没有对类型进行说明,默认为NEAR。n 标号通常作为标号通常作为转移指令转移指令或或CALL指令指令的转移地址的转移地址5.2.1 标记标记20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术29293.变量变量 即

22、内存中的存储单元或数据区即内存中的存储单元或数据区 变量名变量名存储单元存储单元(数据区数据区)的符号地址或名字的符号地址或名字n变量也有三个属性变量也有三个属性:n段地址段地址变量所在段的段地址变量所在段的段地址n偏移量偏移量变量单元地址与段首地址之间的位变量单元地址与段首地址之间的位移量。移量。n类类 型型有有BYTE、WORD和和DWORD三种三种n变量在程序中作为变量在程序中作为存储器操作数存储器操作数被引用被引用。5.2.1 标记标记20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3030变量变量标号标号5.2.1 标记标记20

23、222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3131n标号和变量名的使用规则标号和变量名的使用规则n组成:组成:A-Z(不分大小写不分大小写), 0-9, ? . _ $n不能以数字开头,句号不能以数字开头,句号(.)只能作为首字符只能作为首字符n长度小于长度小于31个字符个字符n不能与保留字不能与保留字(指令助记符、伪指令、预定义指令助记符、伪指令、预定义符号等符号等)重名重名n不能重复定义不能重复定义n例如:例如: 正确的:正确的:LP1, AGAIN, NEXT, _GO, OK_1 错误的:错误的:4M, LOOP, AAA, #

24、HELP, +ONE5.2.1 标记标记20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术32324.保留字保留字 是一个汇编语言中预先保留下来的具是一个汇编语言中预先保留下来的具有特殊含义的符号,只能作为固定的用途。有特殊含义的符号,只能作为固定的用途。n例如例如:nMOVnINTnDBnSEGMENT ENDn凡是汇编的凡是汇编的(伪伪)指令、寄存器名等都是保留字指令、寄存器名等都是保留字5.2.1 标记标记20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术33335.2.2表达式表

25、达式n表达式是常数、寄存器、标号、变量与运算符表达式是常数、寄存器、标号、变量与运算符的组合。的组合。n汇编时按优先规则对表达式进行计算,计算出汇编时按优先规则对表达式进行计算,计算出具体的数值或地址,运行时不能改变。具体的数值或地址,运行时不能改变。n表达式中的运算符有表达式中的运算符有7 7类:算术、逻辑、关系、类:算术、逻辑、关系、取值、取地址、属性、其它。取值、取地址、属性、其它。20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术34345.2.2表达式表达式n有数值表达式和地址表达式两种。有数值表达式和地址表达式两种。n数值表达式

26、数值表达式:由各种常量与运算符连接成的式子:由各种常量与运算符连接成的式子n地址表达式地址表达式:将常量、变量、标号、寄存器内容:将常量、变量、标号、寄存器内容和运算符、操作符合成的有意义的式子和运算符、操作符合成的有意义的式子n单个常量、变量、标号是表达式的最简形式。单个常量、变量、标号是表达式的最简形式。20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3535n 用用于数值表达式于数值表达式,例:,例:MOV AX,4*1024 汇编后的形式为汇编后的形式为: MOV AX,4096 n 用于地址表达式用于地址表达式, 例例: LEA

27、 SI,TAB+3 若若TAB的偏移地址为的偏移地址为1000H,则,则 汇编后的形式为:汇编后的形式为: LEA SI,1003H 算术运算符算术运算符 +、-、*、/,MOD5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3636n 逻辑运算符只能用于数值表达式中逻辑运算符只能用于数值表达式中 例:例: MOV CL,36H AND 0FH 经汇编后:经汇编后:MOV CL,06Hn 注意,不要把逻辑运算符与逻辑运算指令混淆注意,不要把逻辑运算符与逻辑运算指令混淆 例:例:AND AX, 3FC0H AND 0F

28、F00H 汇编后源操作数被翻译为:汇编后源操作数被翻译为:3F00H,所以,所以上述指令与上述指令与AND AX, 3F00H等价。等价。逻辑运算符逻辑运算符 AND、OR、XOR、NOT5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3737n 这些逻辑运算符也是这些逻辑运算符也是8086/8088的指令助记的指令助记符符, 会不会造成混乱呢会不会造成混乱呢? n 例:例:AND DX, PORT_VAR AND 0FEHn 不会的不会的, 前者在前者在指令执行时进行指令执行时进行, 而后者在时而后者在时汇汇编进行

29、的。编进行的。逻辑运算符逻辑运算符 AND、OR、XOR、NOT5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3838n关系运算的结果是一个逻辑值:关系运算的结果是一个逻辑值:真真或或假假n关系为真,结果为全关系为真,结果为全1n关系为假,结果为全关系为假,结果为全0关系运算符关系运算符EQ、NE、LT、 LE、 GT、GE5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术3939n例:例: MOV BX,PORT GT 300H 若若PO

30、RT的值大于的值大于300H,则汇编后为:,则汇编后为: MOV BX,0FFFFH 否则汇编后为:否则汇编后为: MOV BX,0关系运算符关系运算符EQ、NE、LT、 LE、 GT、GE5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4040n SEG:取变量:取变量/标号的段地址标号的段地址n OFFSET:取变量:取变量/标号的偏移地址标号的偏移地址例:例: VAR DB 12H MOV BX,OFFSETVAR ;取变量;取变量VAR的偏移地址的偏移地址 MOV AX,SEG VAR ;取变量;取变量VAR

31、的段地址的段地址取地址运算符取地址运算符SEG、OFFSET5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4141n 注意,以下指令的异同:注意,以下指令的异同: MOV BX, OFFSET VAR LEA BX, VARn OFFSET只能取静态的偏移地址;只能取静态的偏移地址;n LEA指令既可取静态的偏移地址,也可取动态指令既可取静态的偏移地址,也可取动态的偏移地址的偏移地址。 取地址运算符取地址运算符SEG、OFFSET5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北

32、大学微机原理及接口技术微机原理及接口技术4242n TYPE 取变量的类型(取变量的类型(1,2,4)n LENGTH 取所定义变量的长度取所定义变量的长度 (即变量中元素的个数)(即变量中元素的个数)n SIZE 取所定义存储区的字节数取所定义存储区的字节数 (=TYPE*LENGTH)取值运算符取值运算符TYPE、LENGTH、SIZE5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4343 ;取值运算符取值运算符TYPE、LENGTH、SIZE5.2.2表达式表达式20222022年年3 3月月4 4日星期五日

33、星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4444取值运算符取值运算符TYPE、LENGTH、SIZE5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4545取值运算符取值运算符TYPE、LENGTH、SIZE5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4646取值运算符取值运算符TYPE、LENGTH、SIZE5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微

34、机原理及接口技术4747属性运算符属性运算符PTRn 用来对存储单元规定类型用来对存储单元规定类型, 通常和伪指令通常和伪指令BYTE,WORD等连起来使用。等连起来使用。n 格式:格式: PTR 类型类型BYTE, WORD, DWORD, NEAR, FAR5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4848n BYTE、WORD、DWORD 用于描述数据存储单元用于描述数据存储单元(变量变量)地址地址n NEAR、FAR 用于描述转移、调用的目的地址用于描述转移、调用的目的地址属性运算符属性运算符PTR5.

35、2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术4949n 例:例: MOV BYTE PTRDI,0 ;字节类型字节类型 MOV WORD PTRDI,0 ;字类型字类型 MOV DI,0B5H ;类型不定类型不定属性运算符属性运算符PTR5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术5050n PTR也可用来进行强制类型转换也可用来进行强制类型转换n 例:例: STR1 DW ? ;STR1定义为字类型定义为字类型 MOV AX, STR

36、1 ;合法合法 MOV AL, STR1 ;非法非法 MOV AL, BYTE PTR STR1 ;合法合法属性运算符属性运算符PTR5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术5151其它运算符其它运算符-指令中用方括号表示存储器操作数,方括号里指令中用方括号表示存储器操作数,方括号里的内容表示操作数的偏移地址。的内容表示操作数的偏移地址。n 例如:例如:MOV AX5.2.2表达式表达式20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术5252运算符运算符

37、“:”(冒号冒号)跟在某个段寄存器跟在某个段寄存器 (DS、ES、SS或或CS)之后表示段超越,用来指定一个存储之后表示段超越,用来指定一个存储器操作数的段属性,而不管其原来隐含的段是什器操作数的段属性,而不管其原来隐含的段是什么么n 例如:例如: MOV AX其它运算符其它运算符-5.2.2表达式表达式第三节第三节伪指令伪指令mov ax,12hcall displayJmp 1234h20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术54545.3 伪指令伪指令主要内容:主要内容:n5.3.1 数据定义伪指令数据定义伪指令n5.3.2

38、符号定义伪指令符号定义伪指令n5.3.3 段定义伪指令段定义伪指令n5.3.4 过程定义伪指令过程定义伪指令n5.3.5 宏命令伪指令宏命令伪指令n5.3.6 模块定义伪指令模块定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术55555.3 伪指令伪指令n数据定义伪指令数据定义伪指令n符号定义伪指令符号定义伪指令n段定义和段寄存器指定伪指令段定义和段寄存器指定伪指令n过程定义伪指令过程定义伪指令n结束伪指令结束伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术56565

39、.3.1数据定义伪指令数据定义伪指令n用于定义数据区中变量的类型用于定义数据区中变量的类型n格式:格式: 变量名变量名 伪指令助记符伪指令助记符 操作数,操作数, ;注释;注释20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术5757伪指令助记符伪指令助记符nDB 定义的变量为字节型定义的变量为字节型nDW 定义的变量为字类型(双字节)定义的变量为字类型(双字节)nDD 定义的变量为双字型(定义的变量为双字型(4字节)字节)nDQ 定义的变量为定义的变量为4字型(字型(8字节)字节)nDT 定义的变量为定义的变量为10字节型字节型5.3.1

40、数据定义伪指令数据定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术5858两个定义的不同之处:两个定义的不同之处:DBAB ;41H在低字节,在低字节,42H在高字节在高字节DW AB ;42H在低字节,在低字节,41H在高字节在高字节5.3.1数据定义伪指令数据定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术5959n伪指令的性质决定所定义变量的属性;伪指令的性质决定所定义变量的属性;n定义字符串必须用定义字符串必须用DB伪指令伪指令n例:例: DATA1 DB

41、 ABCD,66HABCD41H42H43H44H66H5.3.1数据定义伪指令数据定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术6060例:例:DATA_B DB 10,5,10HDATA_W DW 100H,-4DATA_D DD 0FFFBH汇编后的内存分配情况汇编后的内存分配情况如右图所示。如右图所示。05H10H00H01HFCHFFHFBHFFH00H00H0AH20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术6161n重复操作符重复操作符为一个数据区的各单元

42、设置相同的为一个数据区的各单元设置相同的初值初值n格式:格式: 变量名变量名 伪指令助记符伪指令助记符 n DUP(初值,(初值,)n例:例: DW 20 DUP(0) DB 3 DUP(22H,11H,?),?)随机数随机数5.3.1数据定义伪指令数据定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术6262n 操作数操作数?用来保留存储空间用来保留存储空间,但不存入数据但不存入数据.n 例:例:ABC DB 0,1,2,3,4,OK,$ RSV DW ?,?,?,?,?,?,?,?n 重复的数据可以使用重复操作符重复的数据可以

43、使用重复操作符DUP,如上面如上面RSV亦可写成亦可写成: RSV DW 8 DUP(?)n 若操作数中若使用若操作数中若使用$,则表示的是地址计数器的则表示的是地址计数器的当前值当前值5.3.1数据定义伪指令数据定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术6363n 例:例: TABLE DB 10 DUP(?) BUFFER DW TABLE, $+3设设TABLE的偏移地址为的偏移地址为0080H,则汇编后如右图所示:则汇编后如右图所示:BUFFER0080H80HTABLE008AH008BH008CH008DH.8

44、FH00H00H0089H10个个5.3.1数据定义伪指令数据定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术64645.3.2符号定义伪指令符号定义伪指令n 格式:格式: 符号名符号名 EQU (=) 表达式表达式n 操作:把一个表达式用一个符号表示,以后操作:把一个表达式用一个符号表示,以后凡出现该表达式的地方都可用这个符号表示。凡出现该表达式的地方都可用这个符号表示。类似于类似于C语言中的语言中的#define。n 符号定义伪指令有两种:符号定义伪指令有两种:EQU,=20222022年年3 3月月4 4日星期五日星期五中

45、北大学中北大学微机原理及接口技术微机原理及接口技术6565n用用EQU定义的符号未清除前定义的符号未清除前,不能重新定义。不能重新定义。清除清除EQU定义可用定义可用PURGE伪指令。伪指令。n用用”=”定义的符号可在任何时候进行重定义定义的符号可在任何时候进行重定义n二者均不占用存储空间二者均不占用存储空间,仅是给符号赋值仅是给符号赋值 5.3.2符号定义伪指令符号定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术66661.等值伪指令等值伪指令EQUn 格式为:符号名格式为:符号名 EQU 表达式表达式 或:新符号名或:新符号

46、名 EQU 老符号名老符号名n 例例: CONSTANT EQU 100NEW_PORT EQU PORT_VAL+1n EQU伪指令在未解除前,不能重新定义。伪指令在未解除前,不能重新定义。5.3.2符号定义伪指令符号定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术67672.等号等号(=)伪指令伪指令n 与与EQU类似,但允许重新定义类似,但允许重新定义n 例:例:EMP = 7;值为;值为7 EMP = EMP+1 ;值为;值为85.3.2符号定义伪指令符号定义伪指令20222022年年3 3月月4 4日星期五日星期五中北

47、大学中北大学微机原理及接口技术微机原理及接口技术68683.解除伪指令解除伪指令PURGEn 已用已用EQU定义的符号,可用定义的符号,可用PURGE解除,再解除,再 重新定义。重新定义。n 例:例: PURGE NEW_PORT NEW_PORT EQU POTR_VAL+85.3.2符号定义伪指令符号定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术6969例:例:FIVE EQU 5 COUNT EQU CX TEN EQU 10 DIST = BYTE PTRSI+BP GOTO = JMP MOV AX , TEN MO

48、V CX , COUNT ADD DIST , FIVE DIST = WORD PTRSI+BP+1 ADD DIST, AX GOTO LABEL定义定义引用引用5.3.2符号定义伪指令符号定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术70705.3.3段定义伪指令段定义伪指令n 汇编语言程序是按段来组织程序和数据的。汇编语言程序是按段来组织程序和数据的。n 和存储器的物理段相对应,汇编语言程序中的和存储器的物理段相对应,汇编语言程序中的段称为逻辑段。汇编连接后被映射到物理段中。段称为逻辑段。汇编连接后被映射到物理段中。n

49、 说明逻辑段的起始和结束;说明逻辑段的起始和结束;n 说明不同程序模块中同类逻辑段之间的联系形说明不同程序模块中同类逻辑段之间的联系形态态n 三类段:代码三类段:代码(程序程序)、数据、堆栈、数据、堆栈n 段定义伪指令段定义伪指令SEGMENT ENDS ASSUME ORG20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7171段名段名 SEGMENT 定位类型定位类型 组合类型组合类型 类别类别 段名段名 ENDS说明逻辑说明逻辑段的起点段的起点说明不同模块说明不同模块中同名段的组中同名段的组和连接方式和连接方式5.3.3段定义伪指令

50、段定义伪指令方括号中为可选项,规定了逻辑段的一些其他特性方括号中为可选项,规定了逻辑段的一些其他特性20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7272DATA SEGMENT MEM1 DB 11H,22HMEM2 DW 1234HDATA ENDS5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7373n 这两个伪指令总是成对出现,二者前面的段名应这两个伪指令总是成对出现,二者前面的段名应一致。一致。SEGMENT说明了一个段的开始,说明了一

51、个段的开始,ENDS说说明了一个段的结束。明了一个段的结束。n 对数据段和堆栈段,段中的语句一般是变量定义。对数据段和堆栈段,段中的语句一般是变量定义。对代码段则是指令语句。对代码段则是指令语句。SEGMENT和和ENDS伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7474逻辑段从一个节逻辑段从一个节 (16个字个字节节) 的边界开始。的边界开始。即即段的起始地址应能被段的起始地址应能被16整除整除, 或段或段起始物理地址应为起始物理地址应为0H。默认类型默认类型SEGMENT和和ENDS

52、伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7575,即段可以从任,即段可以从任何地址开始。何地址开始。逻辑段从字边界开始。即段的起始地逻辑段从字边界开始。即段的起始地址必须是偶数。址必须是偶数。逻辑段从页边界开始。逻辑段从页边界开始。256字节称为一字节称为一页,故段的起始物理地址应为页,故段的起始物理地址应为00H。SEGMENT和和ENDS伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口

53、技术7676 说明不同模块中同名段的组合方式。说明不同模块中同名段的组合方式。n PUBLIC : 所有此类型的同名段组合成一个逻辑所有此类型的同名段组合成一个逻辑段,公用一个段地址,运行时装入同一个物理段中段,公用一个段地址,运行时装入同一个物理段中n COMMON : 所有此类型的同名段具有相同的起所有此类型的同名段具有相同的起始地址始地址(覆盖覆盖),共享相同的存储区域。,共享相同的存储区域。SEGMENT和和ENDS伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7777 2) 组合类

54、型组合类型nAT : 按绝对地址定位,段地址就是按绝对地址定位,段地址就是表达式的值。表达式的值。nSTACK : 专用于说明堆栈段,组合方式同专用于说明堆栈段,组合方式同PUBLICnNONE表示本段不与任何段连接,为系统默认方式表示本段不与任何段连接,为系统默认方式nMEMORY表示本段在连接时定位在所有段之上,表示本段在连接时定位在所有段之上,即高地址处。即高地址处。SEGMENT和和ENDS伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术78783) 类别类别n 用单引号括起来的字符串

55、。所有同类别的段被用单引号括起来的字符串。所有同类别的段被安排在安排在连续的存储区域连续的存储区域中。中。SEGMENT和和ENDS伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术7979如:在模块如:在模块1中有段定义:中有段定义: seg1 SEGMENT PARA STACK stack seg1 ENDS 在模块在模块2中有段定义:中有段定义: seg2 SEGMENT PARA STACK stack seg2 ENDS则连接时这两个段被安排在一起。则连接时这两个段被安排在一起。SE

56、GMENT和和ENDS伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8080n在代码段中,还必须明确段和段寄存器的关系,在代码段中,还必须明确段和段寄存器的关系,这由这由ASSUME语句来指定。语句来指定。n说明所定义逻辑段的性质说明所定义逻辑段的性质n格式:格式: ASSUME 段寄存器名:段名段寄存器名:段名 ,段寄存器名:段名,段寄存器名:段名,n如:如:ASSUME CS:code, DS:data, ES:data语句中的语句中的code和和data为段名。为段名。ASSUME伪指

57、令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8181n 这个语句说明:这个语句说明: 1. CS将指向名字为将指向名字为CODE的代码段的代码段 2. DS和和ES将指向名字为将指向名字为DATA的数据段的数据段n 告诉汇编程序用告诉汇编程序用SEGMENT伪操作定义过的段伪操作定义过的段的段地址将要存放在的段地址将要存放在哪个段寄存器哪个段寄存器中。中。n 把段地址装入段寄存器(称为把段地址装入段寄存器(称为段初始化段初始化)的操)的操作需要由程序自己完成作需要由程序自己完成。ASSUME伪

58、指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8282n ASSUME伪指令只是告知汇编程序有关段寄存器伪指令只是告知汇编程序有关段寄存器与段的关系与段的关系,并没有给段寄存器赋初值并没有给段寄存器赋初值 MOVAX,DATA MOVDS,AX MOVES,AXn 将段基址装入段寄存器将段基址装入段寄存器。如果程序中用到堆栈段,。如果程序中用到堆栈段,则则SS也需装入实际的初值。也需装入实际的初值。n 代码段基地址代码段基地址不需要程序员装入不需要程序员装入CS寄存器,而寄存器,而由初始化程序

59、自动装入。由初始化程序自动装入。ASSUME伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8383段初始化段初始化20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8484n ORG规定了段内的指令或数据存放的开始地址规定了段内的指令或数据存放的开始地址(偏移地址的初值偏移地址的初值),其格式:,其格式:ORG n 表达式的值即为开始地址,从此地址起连续存放表达式的值即为开始地址,从此地址起连续存放程序或数据。程序或数据。n 例:例: A

60、BC SEGMENT ORG 0100H BEGIN: ABC ENDS 指令从指令从0100H开始存放开始存放ORG伪指令伪指令5.3.3段定义伪指令段定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8585n用于定义一个过程体用于定义一个过程体n格式:格式: 过程名过程名 PROC NEAR / FAR RET 过程名过程名 ENDP过程入口的符号地址过程入口的符号地址5.3.4过程定义伪指令过程定义伪指令20222022年年3 3月月4 4日星期五日星期五中北大学中北大学微机原理及接口技术微机原理及接口技术8686过程的含

温馨提示

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

最新文档

评论

0/150

提交评论