《微机原理与汇编语言ppt课件.ppt》由会员分享,可在线阅读,更多相关《微机原理与汇编语言ppt课件.ppt(145页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分封面第五章 汇编语言程序设计变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分5.1 5.1 汇编语言的基本概念汇编语言的基本概念 5.1.1 5.1.1 汇编语言源程序的格式汇编语言源程序的格式 5.1.2 5.1.2 汇编语言上机过程汇编语言上机过程 5.1.3 5.1.3 汇编语言程序和汇编语言程序和DOSDOS操作系统的接口操作系统的接口5.2 5.2 伪指令语句伪指
2、令语句 5.3 5.3 宏指令语句宏指令语句 5.4 5.4 常用系统功能调用和常用系统功能调用和BIOSBIOS中断调用中断调用5.5 5.5 汇编语言程序设计的基本方法汇编语言程序设计的基本方法5.6 5.6 汇编语言与汇编语言与C/C+C/C+语言的混合编程语言的混合编程变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分5.1 5.1 汇编语言的基本概念汇编语言的基本概念1 1机器语言机器语言(Machine Language)(Machine Language)2 2汇编语言汇编语言(Assembly
3、 Language)(Assembly Language) 比较几个重要的概念比较几个重要的概念: : 1). 1).汇编语言程序汇编语言程序( (源程序源程序):):用汇编语言编写的源程序用汇编语言编写的源程序. . 2). 2).汇编程序汇编程序: :将汇编语言程序将汇编语言程序( (源程序源程序) )翻译成目标程序翻译成目标程序的程序的程序, ,是一种工具软件是一种工具软件, ,如如MASM.EXEMASM.EXE等等. .有基本汇编有基本汇编( (或小汇或小汇编编ASM)ASM)和宏汇编和宏汇编(MASM)(MASM)之分。之分。 3).3).汇编汇编: :利用汇编程序利用汇编程序(
4、(如如MASM.EXEMASM.EXE等等) )将汇编语言程序将汇编语言程序( (源程序源程序) )翻译成目标程序的过程翻译成目标程序的过程. .3. 3. 高级语言高级语言(High Level Language)(High Level Language)用汇编语言编写的源程序汇编程序目标程序用高级语言编写的源程序编译或解释程序目标程序变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分汇编语言和高级语言(1)l汇编语言与处理器密切相关l高级语言与具体计算机无关汇编语言:汇编语言:高级语言:高级语言: 汇编语
5、言和高级语言(1)变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分汇编语言和高级语言(2)l汇编语言功能有限、涉及硬件细节l高级语言提供了强大的功能,不必关心琐碎问题汇编语言:汇编语言:高级语言:高级语言: 汇编语言和高级语言(2)变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分汇编语言和高级语言(3)l汇编语言本质上就是机器语言l高级语言不针对具体计算机系统汇编语言:汇编语言: 高级语言:高级语言:汇编语言和高级语言(
6、3)变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分汇编语言和高级语言(4)汇编语言的优点:汇编语言的缺点:汇编语言:汇编语言:?高级语言:高级语言:?汇编语言和高级语言(4)变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分汇编语言和高级语言(5)l汇编语言的优点使得它在程序设计中占有重要的位置,是不可被取代的l汇编语言的缺点使得人们主要采用高级语言进行程序开发工作l有时需要采用高级语言和汇编语言混合编程的方法,互相取长
7、补短,更好地解决实际问题汇编语言和高级语言(5)变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分汇编语言的应用场合l程序要具有较快的执行时间,或者只能占用较小的存储容量。l程序与计算机硬件密切相关,程序要直接、有效地控制硬件。l大型软件需要提高性能、优化处理的部分。l没有合适的高级语言、或只能采用汇编语言的时候。l分析具体系统尤其是该系统的低层软件、加密解密软件、分析和防治计算机病毒等等。汇编语言的应用场合变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是
8、电力系统接线组成中一个重要组成部分硬指令和伪指令使CPU产生动作、并在程序执行时才处理的语句。(Directive)不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,定义数据、分配存储区、定义段及定义过程等等。伪指令与具体的处理器类型无关,但与汇编程序的版本有关 本课程采用微软宏汇编程序本课程采用微软宏汇编程序 MASM 6.11变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分3.1.2 汇编语言的程序格式完整的汇编语言源程序由段组成。完整的汇编语言源程序由段组成。一个汇编语言源程序可以包含若
9、干个代码段、数一个汇编语言源程序可以包含若干个代码段、数据段、附加段或堆栈段,段与段之间的顺序可随据段、附加段或堆栈段,段与段之间的顺序可随意排列。意排列。需独立运行的程序必须包含一个代码段,并指示需独立运行的程序必须包含一个代码段,并指示程序执行的起始点,一个程序只有一个起始点。程序执行的起始点,一个程序只有一个起始点。所有的可执行性语句必须位于某一个代码段内,所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内。说明性语句可根据需要位于任一段内。通常,程序还需要一个堆栈段。通常,程序还需要一个堆栈段。5.1.1 5.1.1 汇编语言的程序格式汇编语言的程序格式变电站电
10、气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分汇编语言源程序源程序分别用两种格式书写。 第一种格式从MASM 5.0开始支持 第二种格式MASM 5.0以前就具有Hello, Everybody !程序功能程序功能变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分;lt301a.asm(文件名).model small;定义程序的存储模式.stack;定义堆栈段.data;定义数据段stringdb Hello, Everybo
11、dy !,0dh,0ah,$;在数据段定义要显示的字符串.code;定义代码段.startup;程序起始点,建立DS、SSmov dx,offset string;指定字符串mov ah,9int 21h;利用功能调用显示信息.exit 0;程序结束点,返回DOSend;汇编结束例:简化段定义格式例:简化段定义格式变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分;SampleA.ASM.model small.stack.data.;在数据段定义数据.code.startup;(注1).;在代码段填入指令序
12、列.exit 0;(注2).;子程序代码end;(注3)简化段定义格式简化段定义格式 MASM 6.x支持变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分;SampleC.ASM.model small.stack.data.;在数据段定义数据.codestart:mov ax,datamov ds,ax.;在代码段填入指令序列mov ax,4c00hint 21h.;子程序代码end start简化段定义格式简化段定义格式 MASM 5.x及以上支持变电站电气主接线是指变电站的变压器、输电线路怎样与电力系
13、统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分;lt301b.asm(文件名)stacksegment stack;定义堆栈段dw 512 dup(?);堆栈段有512字(1024字节)空间stackends ;堆栈段结束data segment;定义数据段stringdb Hello, Everybody !,0dh,0ah,$data endscode segment code;定义代码段assume cs:code,ds:data,ss:stackstart:mov ax,data;建立DS段地址mov ds,ax例:完整段定义格式例:完整段定义格式变电
14、站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分mov dx,offset stringmov ah,9int 21hmov ax,4c00hint 21h;利用功能调用返回DOScode ends ;代码段结束end start;汇编结束,同时指明程序起始点例:完整段定义格式例:完整段定义格式变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分5.1.1 汇编语言源程序的格式汇编语言源程序的格式 例例5.1 要求将两个要求将两
15、个5字节十六进制数相加,可以编字节十六进制数相加,可以编写出以下汇编语言源程序。写出以下汇编语言源程序。 3B74AC60F8H+20D59E36C1H=?变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分START:MOV AX,(SEG) DATAMOV DS,AX ;初始化;初始化DS MOV CX,5 ;循环次数送;循环次数送CXMOV SI,0 ;置;置SI初值为初值为0 CLC ;清;清CF标志标志LOOPER:MOV AL,(OFFSET) DATA2SI ;取一个字节加数;取一个字节加数ADC
16、 (OFFSET) DATA1SI,AL ;与被加数相加;与被加数相加 INC SI ;SI加加1 DEC CX ;CX减减1JNZ LOOPER ;若不等于;若不等于0,转,转LOOPERMOV AH,4CH INT 21H;返回;返回DOS CODE ENDS ;代码段结束;代码段结束 END START ;源程序结束;源程序结束 DATASEGMENT;定义数据段;定义数据段 DATA1 DB 0F8H,60H,0ACH,74H,3BH;被加数;被加数 DATA2 DB 0C1H,36H,9EH,0D5H,20H ;加数;加数 DATAENDS ;数据段结束;数据段结束 CODE SEG
17、MENT ;定义代码段;定义代码段ASSUME CS:CODE,DS:DATA 汇编语言源程序的格式与伪指令汇编语言源程序的格式与伪指令变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分-u0B8B:0000 B88A0B MOV AX,0B8A0B8B:0003 8ED8 MOV DS,AX0B8B:0005 B90500 MOV CX,00050B8B:0008 BE0000 MOV SI,00000B8B:000B F8 CLC0B8B:000C 8A840500 MOV AL,SI+00050B8B:
18、0010 10840000 ADC SI+0000,AL0B8B:0014 46 INC SI0B8B:0015 49 DEC CX0B8B:0016 75F4 JNZ 000C0B8B:0018 B44C MOV AH,4C0B8B:001A CD21 INT 21-d 0b8a:00000B8A:0000 F8 60 AC 74 3B C1 36 9E-D5 20 00 00 00 00 00 00汇编语言源程序的格式与伪指令汇编语言源程序的格式与伪指令变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分1
19、.1.分段结构分段结构 汇编语言源程序的结构是分段结构形式,一个汇编语言源汇编语言源程序的结构是分段结构形式,一个汇编语言源程序由若干段程序由若干段(SEGMENT)组成,每个段以组成,每个段以SEGMENT语句开始,语句开始,以以ENDS语句结束。整个源程序的结尾是语句结束。整个源程序的结尾是END语句。语句。 这里所说的汇编语言源程序中的段与前面讨论的这里所说的汇编语言源程序中的段与前面讨论的CPU管理管理的存储器的段,既有的存储器的段,既有联系联系,又在概念上有所,又在概念上有所区别区别: 1、CPU对存储器是分段管理的,它有四个段寄存器对存储器是分段管理的,它有四个段寄存器(CS,ES
20、,SS和和DS) (各一个)。(各一个)。 2、在汇编语言程序中也要求分段组织指令、数据和堆栈,、在汇编语言程序中也要求分段组织指令、数据和堆栈,以便将源程序汇编成为目标程序后,可以分别装入存储器的相以便将源程序汇编成为目标程序后,可以分别装入存储器的相应段中。应段中。 3、而在汇编语言源程序中,设置段的自由度比较大。例如,、而在汇编语言源程序中,设置段的自由度比较大。例如,一个源程序中可以有多个数据段或多个代码段等等一个源程序中可以有多个数据段或多个代码段等等,但至少有一但至少有一个代码段个代码段。变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的
21、主接线是电力系统接线组成中一个重要组成部分2. 汇编语言语句的类型和格式汇编语言语句的类型和格式 1)语句的类型语句的类型 汇编语言源程序中的语句可以分为三种类型:指令语句、伪汇编语言源程序中的语句可以分为三种类型:指令语句、伪指令语句和宏指令语句。指令语句和宏指令语句。 (1) 指令语句指令语句:它是能产生目标代码,它是能产生目标代码,CPU 可以执行的能完可以执行的能完成特定功能的语句。成特定功能的语句。 (2) 伪指令语句伪指令语句:它是一种不产生目标代码的语句,它仅仅它是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。在汇编过程中告诉汇编程序应如何汇编。例如,告诉汇
22、编程序已例如,告诉汇编程序已写出的汇编语言源程序有几个段,段的名字是什么;定义变量,写出的汇编语言源程序有几个段,段的名字是什么;定义变量,定义过程,给变量分配存储单元,给数字或表达式命名等。显然,定义过程,给变量分配存储单元,给数字或表达式命名等。显然,伪指令语句是汇编程序在汇编时使用的。伪指令语句是汇编程序在汇编时使用的。 (3)宏指令语句宏指令语句:它是一种用户利用:它是一种用户利用宏指令语句自己定义的宏指令语句自己定义的语句。语句。变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 2) 语句的格式
23、指令语句与伪指令语句的格式是类似的。一般情况下,汇编语指令语句与伪指令语句的格式是类似的。一般情况下,汇编语言的语句可以由部分构成:言的语句可以由部分构成: 名字名字 助记符助记符 操作数操作数 ;注释;注释其中带方括号的部分表示任选项,可以有,也可以没有。例其中带方括号的部分表示任选项,可以有,也可以没有。例5.1中有如下语句:中有如下语句: LOOPER: MOV AL,DATA2SI; 取一个字节加数取一个字节加数 DATA1 DB 0F8H,60H,0ACH,74H,3BH;被加数;被加数 变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主
24、接线是电力系统接线组成中一个重要组成部分 1) 1) 名字名字l 在指令语句中,这个名字是一个标号在指令语句中,这个名字是一个标号。标号后面通常有一个。标号后面通常有一个冒号。冒号。 标号有三种属性:段、偏移量和类型(标号有三种属性:段、偏移量和类型(NEAR和和FAR)。)。l 伪指令语句中伪指令语句中的名字可以是变量名、段名、过程名。伪指令的名字可以是变量名、段名、过程名。伪指令语句的名字后面通常不跟冒号,这是它和标号的一个明显区别。语句的名字后面通常不跟冒号,这是它和标号的一个明显区别。 变量也有三种属性:段、偏移量和类型(变量也有三种属性:段、偏移量和类型(BYTE、WORD、DWOR
25、D、QWORD、TBYTE)。)。 注:注:段名时默认的是段属性;变量名是段名时默认的是段属性;变量名是默认的是偏移量的属性,默认的是偏移量的属性,见例见例5.15.1。 变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 2) 助记符助记符 汇编语言语句中的第二个组成部分是助记符汇编语言语句中的第二个组成部分是助记符(Memonic)。 在指令语句中在指令语句中的第二部分是的第二部分是CPU指令系统中指令的助记符,指令系统中指令的助记符,如如MOV、ADC等。等。 在伪指令语句中在伪指令语句中的第二部分是伪
26、指令的定义符,如的第二部分是伪指令的定义符,如DB、SEGMENT、ENDS、END等。它们在程序中的作用是定义变等。它们在程序中的作用是定义变量的类型、定义段以及告诉汇编程序结束汇编等。量的类型、定义段以及告诉汇编程序结束汇编等。变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 3) 操作数操作数 汇编语言语句中的第三个组成部分是操作数。在指令语句汇编语言语句中的第三个组成部分是操作数。在指令语句中是指令的操作数,可能有单操作数或双操作数,也可能无操中是指令的操作数,可能有单操作数或双操作数,也可能无操作
27、数;而在伪指令中可能有更多个操作数。作数;而在伪指令中可能有更多个操作数。当操作数不止一个当操作数不止一个时,相互之间应该用逗号隔开。时,相互之间应该用逗号隔开。 (1) 常数常数。常数就是指令中出现的那些固定值,可以分为数值常。常数就是指令中出现的那些固定值,可以分为数值常数和字符串常数两类。汇编语言用不同的后缀加以区别。如:数和字符串常数两类。汇编语言用不同的后缀加以区别。如: 0B7H, 0FFH,103,35O, ABCDEFG,179,1001100B。 (2) 寄存器寄存器。8086/8088CPU的寄存器可以作为指令的操作数。的寄存器可以作为指令的操作数。 (3) 标号标号。由于
28、标号代表一条指令的符号地址,因此可以作为。由于标号代表一条指令的符号地址,因此可以作为转移转移(无条件转移或条件转移无条件转移或条件转移)、过程调用、过程调用CALL以及循环控制以及循环控制LOOP指令的操作数。指令的操作数。 ( 4) 变 量变 量 。 因 为 变 量 是 存 储 器 中 某 个 数 据 区 的 名 字 如。 因 为 变 量 是 存 储 器 中 某 个 数 据 区 的 名 字 如(DATA1),所以在指令中可以作为存储器操),所以在指令中可以作为存储器操作数。作数。 变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统
29、接线组成中一个重要组成部分 算术运算符算术运算符。常用的算术运算符有:。常用的算术运算符有:+(加加),(减减),*(乘乘),/(除除)和和MOD(模除,即两个整数相除后取余数模除,即两个整数相除后取余数)等。等。 逻辑运算符逻辑运算符。逻辑运算符有:。逻辑运算符有:AND(逻辑逻辑“与与”),OR(逻辑逻辑“或或”),XOR(逻辑逻辑“异或异或”)和和NOT(逻辑逻辑“非非”)。 关系运算符关系运算符。关系运算符有:。关系运算符有:EQ(等于等于),NE(不等不等),LT(小于小于),GT(大于大于),LE(小于或等于小于或等于),GE(大于或等于大于或等于)等。等。 当关系不成立当关系不成
30、立(假假)时,结果为时,结果为0(全全0);当关系成立;当关系成立(真真)时,结时,结果为果为0FFFFH(全全1)。例如:。例如: MOV AX,4 EQ 3 ;关系不成立,故;关系不成立,故(AX)0 MOV AX,4 NE 3 ;关系成立,故;关系成立,故(AX)0FFFFH (5) 表达式表达式。汇编语言语句中的表达式,按其性质可分为两种:。汇编语言语句中的表达式,按其性质可分为两种:数值表达式和地址表达式。数值表达式和地址表达式。变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分分析运算符。分析运算
31、符。分析运算符用于分析一个存储器操作数的分析运算符用于分析一个存储器操作数的属性。属性。 SEGSEG运算符。运算符。利用利用SEGSEG运算符可以得到一个标号或变量运算符可以得到一个标号或变量所在段的段地址。例如:所在段的段地址。例如: MOV AXMOV AX,SEG ARRAYSEG ARRAY MOV DS MOV DS,AX AX OFFSET OFFSET运算符。运算符。利用利用OFFSETOFFSET运算符可以得到一个标号运算符可以得到一个标号或变量的偏移地址。例如:或变量的偏移地址。例如: MOV DIMOV DI,OFFSET DATA1 OFFSET DATA1 汇编语言源
32、程序的格式汇编语言源程序的格式P167变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 TYPETYPE运算符。运算符。获取变量中每个操作数所含的字节数。获取变量中每个操作数所含的字节数。这个数值与存储器操作数类型属性的对应关系如下表。这个数值与存储器操作数类型属性的对应关系如下表。 VARVAR DW ? DW ? ;变量;变量VARVAR的类型为字的类型为字ARRAY DD 10 DUP(?) ARRAY DD 10 DUP(?) ;变量;变量ARRAYARRAY的类型为双字的类型为双字STR DB T
33、HIS IS TESTSTR DB THIS IS TEST ;变量;变量STRSTR的类型为字节的类型为字节 MOVMOVAXAX,TYPE VAR TYPE VAR ;(AX)=0002(AX)=0002MOV MOV BXBX,TYPE ARRAY TYPE ARRAY ;(BX)=0004(BX)=0004MOV MOV CXCX,TYPE STR TYPE STR ;(CX)=0001(CX)=0001汇编语言源程序的格式汇编语言源程序的格式变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 LEN
34、GTH LENGTH运算符。运算符。变量有重复操作符变量有重复操作符DUPDUP时时, ,获取该变量重复获取该变量重复的次数;如果未用的次数;如果未用DUPDUP说明,则得到的结果总是说明,则得到的结果总是1 1。 SIZESIZE运算符。运算符。变量有重复操作符变量有重复操作符DUPDUP时时, ,获取分配给该变量获取分配给该变量的字节总数;的字节总数;如果未用如果未用DUPDUP说明,则得到的是说明,则得到的是TYPETYPE的返回值。的返回值。 一般地:一般地:SIZE=LENGHSIZE=LENGHTYPETYPE汇编语言源程序的格式汇编语言源程序的格式变电站电气主接线是指变电站的变压
35、器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分VAR DW ?;变量;变量VAR的类型为字的类型为字ARRAY DD 10 DUP(?) ;变量;变量ARRAY的类型为双字的类型为双字STR DB THIS IS TEST ;变量;变量STR的类型为字节的类型为字节 MOVAX,TYPE VAR ;(AX)2 MOV BX,TYPE ARRAY ;(BX)4 MOV CX,TYPE STR ;(CX)1MOV DL,LENGTH VAR ;(DL)=1=01HMOV DL,LENGTH ARRAY ;(DL)=10D=0AHMOV DL
36、,LENGTH STR ;(DL)=1=01HMOV DH,SIZE VAR ;(DH)=12=2D=02HMOV DH,SIZE ARRAY ;(DH)=104=40D=28HMOV DH,SIZE STR ;(DH)=11=1D=01H例题:例题:汇编语言源程序的格式汇编语言源程序的格式变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分课堂练习课堂练习:P213-5,6:P213-5,6变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中
37、一个重要组成部分合成运算符合成运算符(P168)(P168) PTR PTR运算符。运算符。PTRPTR运算符可以指定或修改存储器操作数的运算符可以指定或修改存储器操作数的类型,例如:类型,例如: INC BYTE PTRBXSIINC BYTE PTRBXSI INC WORD PTRBXSI INC WORD PTRBXSI THIS THIS运算符。运算符。THISTHIS运算符也可指定存储器操作数的类型。运算符也可指定存储器操作数的类型。例如,要求对同一个数据区既可以字节为单位,又可以字为例如,要求对同一个数据区既可以字节为单位,又可以字为单位进行存取,则可用以下语句:单位进行存取,则
38、可用以下语句:TAB1 EQU THIS WORD TAB1 EQU THIS WORD ;EQU THIS;EQU THIS的作用同的作用同LABLELABLETAB2 DB 100 DUP(?)TAB2 DB 100 DUP(?) SHORTSHORT运算符。运算符。SHORTSHORT运算符指定一个标号的类型为运算符指定一个标号的类型为SHORT(SHORT(短标号短标号) ),即标号到引用该标号指令之间的距离在,即标号到引用该标号指令之间的距离在128+127128+127个字节的范围内。如个字节的范围内。如:JMP (SHORT) LOOPER:JMP (SHORT) LOOPERJ
39、MP NEAR PTR LOOPER汇编语言源程序的格式汇编语言源程序的格式变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分其他运算符其他运算符 段超越运算符段超越运算符“:”。如:如: MOV AXMOV AX,ESES:DIDI 字节分离运算符字节分离运算符LOWLOW和和HIGHHIGH。运算符运算符LOWLOW和和HIGHHIGH分别得到分别得到一个数值或地址表达式的低位和高位字节。例如:一个数值或地址表达式的低位和高位字节。例如: STUFF EQU STUFF EQU 0ABCDH0ABCDH
40、MOV MOVAHAH,HIGH STUFF HIGH STUFF ;(AH)0ABH(AH)0ABH MOV MOV ALAL,LOW STUFF LOW STUFF ;(AL)0CDH(AL)0CDH注释。注释。注释前面要求加上分号注释前面要求加上分号( (;) )。汇编程序对于注释不。汇编程序对于注释不予理会,即注释对汇编后产生的目标程序没有任何影响。予理会,即注释对汇编后产生的目标程序没有任何影响。 汇编语言源程序的格式汇编语言源程序的格式手工编写的源程序汇编语言源文件(.ASM)EDITMASM机器语言目标文件(.OBJ)机器语言执行文件(.EXE)LINK编辑程序编辑汇编程序汇编连
41、接程序连接图5.4 汇编语言程序上机过程 5.1.2 汇编语言程序的上机过程汇编语言程序的上机过程 变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 在计算机上运行汇编语言程序的步骤是:在计算机上运行汇编语言程序的步骤是: (1) 用用编辑程序编辑程序(EDIT)建立建立ASM源程序文件。源程序文件。 (2) 用用汇编程序汇编程序(MASM或或ASM)把把ASM文件汇编成文件汇编成OBJ文件。文件。 (3) 用用连接程序连接程序(LINK)把把OBJ文件转换成文件转换成EXE文件。文件。 (4) 用用DEB
42、UG调试程序调试程序检查可执行文件是否有逻辑或算法上检查可执行文件是否有逻辑或算法上的错误。的错误。 (5) 在在DOS命令状态下直接键入文件名就可命令状态下直接键入文件名就可执行执行该文件。该文件。 汇编语言程序的上机过程汇编语言程序的上机过程 变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 EXE程序的组成程序的组成:1、重定位信息:程序段前缀区、重定位信息:程序段前缀区PSP2、装入模块:程序本身。、装入模块:程序本身。注:注:DS、ES指向指向PSP段地址。程段地址。程序中须重新设置,使其指向数序
43、中须重新设置,使其指向数据段(和附加段)。如:据段(和附加段)。如:MOV AX,DATAMOV DS,AX5.1.3 汇编语言和汇编语言和DOS操作系统的接口操作系统的接口当当DOSDOS装入或执行一个程序时,装入或执行一个程序时,DOSDOS确定当时主存最低的可用地址作为该确定当时主存最低的可用地址作为该程序的装入起始点。此点以下的区域称为程序段。在程序段内偏移程序的装入起始点。此点以下的区域称为程序段。在程序段内偏移0 0处,处,DOSDOS为该程序建立一个程序段前缀控制块为该程序建立一个程序段前缀控制块PSPPSP(Program Segment Program Segment Pre
44、fixPrefix),它占),它占256256(=100h=100h)个字节;而在偏移)个字节;而在偏移100h100h处才装入程序本身处才装入程序本身. .另外,上图中另外,上图中,是指程序定位的初始情况,实际上程序中各段间的先后顺是指程序定位的初始情况,实际上程序中各段间的先后顺序是依程序的结构而定的。序是依程序的结构而定的。0000H(256B)0100h0100h顺序因程序而改变变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 1标准方法标准方法 首先将用户程序的主程序定义成一个首先将用户程序的主程
45、序定义成一个FAR过程,其最后一过程,其最后一条指令为条指令为RET。然后在代码段的主程序。然后在代码段的主程序(即即FAR过程过程)的开始部分的开始部分用如下三条指令将用如下三条指令将PSP中中INT 20H 指令的段地址及偏移地址压指令的段地址及偏移地址压入堆栈:入堆栈:PUSH DS ;保护;保护PSP段地址段地址MOV AX,0 ;保护偏移地址;保护偏移地址0PUSH AX 变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分MAIN PROC FAR ;主程序部分;主程序部分START:PUSH DS
46、 ;将;将DS压入堆栈保存压入堆栈保存 MOV AX,0 PUSH AX ;将;将0压入堆栈保存压入堆栈保存 RET ;(IP)(SP)+1:(SP), (SP)(SP)+2 ;(CS)(SP)+1:(SP), (SP)(SP)+2MAIN ENDP.分析(例):一程序如下,设初始化时,分析(例):一程序如下,设初始化时,0B88:0000 INT 20H0000880BDSAXIPCSSS0000H0B88H0B88H变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分 2. 非标准方法非标准方法 也可在用户
47、的程序中不定义过程段,只在代码段结束之前也可在用户的程序中不定义过程段,只在代码段结束之前(即即CODE ENDS之前之前)增加两条语句:增加两条语句:MOV AH,4CHINT 21H则程序执行完后也会自动返回则程序执行完后也会自动返回DOS状态。状态。 3. 其它方法其它方法: 方法一方法一: INT 20H ;可放在任保指令位置可放在任保指令位置. 方法二方法二: MOV AH,0 INT 21H ;调用调用DOS的相应功能号的相应功能号变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分硬指令和伪指令使
48、CPU产生动作、并在程序执行时才处理的语句。(Directive)不产生CPU动作、在程序执行前由汇编程序处理的说明性语句,例如,定义数据、分配存储区、定义段及定义过程等等。伪指令与具体的处理器类型无关,但与汇编程序的版本有关 本课程采用微软宏汇编程序本课程采用微软宏汇编程序 MASM.EXE5.2 5.2 伪指令语句伪指令语句变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分5.2.15.2.1数据定义伪指令数据定义伪指令lDB (Define Byte).DB (Define Byte).每个操作数占每个
49、操作数占1 1个字节个字节. .lDW (Define Word).DW (Define Word).每个操作数占每个操作数占1 1个字个字. .lDD (Define Double word).DD (Define Double word).每个操作数占每个操作数占2 2个字个字. .lDF DF 每个操作数占每个操作数占3 3个字个字. .lDQ DQ 每个操作数占每个操作数占4 4个字个字. .lDT DT 每个操作数占每个操作数占5 5个字个字. . 数据定义伪指令的一般格式为:数据定义伪指令的一般格式为: 变量名变量名 伪指令定义符伪指令定义符 操作数操作数 ,操作数,操作数操作数操
50、作数: :常数常数, ,表达式表达式, ,字符串字符串,?,?汇编语言源程序的格式与伪指令汇编语言源程序的格式与伪指令变电站电气主接线是指变电站的变压器、输电线路怎样与电力系统相连接,从而完成输配电任务。变电站的主接线是电力系统接线组成中一个重要组成部分DATA DB 101,0F0H ;存入;存入65H,F0H EXPR DB 2*8+7 ;存入;存入17H STR DB WELCOME! ;存入;存入8个字符的个字符的ASCII码值码值AB DB AB ;存入;存入41H,42HBA DW AB ;存入;存入42H,41HABDD DD AB ;存入;存入42H,41H,00,00OFFA