汇编语言课件第4章80X86汇编语言程序设计

上传人:xian****812 文档编号:324058420 上传时间:2022-07-12 格式:PPT 页数:135 大小:1.18MB
返回 下载 相关 举报
汇编语言课件第4章80X86汇编语言程序设计_第1页
第1页 / 共135页
汇编语言课件第4章80X86汇编语言程序设计_第2页
第2页 / 共135页
汇编语言课件第4章80X86汇编语言程序设计_第3页
第3页 / 共135页
汇编语言课件第4章80X86汇编语言程序设计_第4页
第4页 / 共135页
汇编语言课件第4章80X86汇编语言程序设计_第5页
第5页 / 共135页
点击查看更多>>
资源描述

《汇编语言课件第4章80X86汇编语言程序设计》由会员分享,可在线阅读,更多相关《汇编语言课件第4章80X86汇编语言程序设计(135页珍藏版)》请在金锄头文库上搜索。

1、第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计本章主要内容:本章主要内容:MASMMASM宏汇编语句结构以及开发过程宏汇编语句结构以及开发过程MASMMASM汇编语言表达式、运算符汇编语言表达式、运算符程序段的定义和属性程序段的定义和属性复杂数据结构复杂数据结构宏汇编宏汇编基本汇编语言程序设计基本汇编语言程序设计子程序设计子程序设计高级汇编语言程序设计高级汇编语言程序设计第第4 4章章 80X86 80X86汇编语言程序设计汇编语言

2、程序设计4.1 MASM4.1 MASM宏汇编语句结构以及开发过程宏汇编语句结构以及开发过程 1 1语句的类型语句的类型硬指令语句硬指令语句(指令性语句指令性语句)是指能产生目标代码,是指能产生目标代码,CPUCPU可以执行的,能完成特定功能可以执行的,能完成特定功能的语句,它主要由的语句,它主要由CPUCPU指令组成。指令组成。伪指令语句(指示性语句)伪指令语句(指示性语句)是一种不产生目标代码的语句,它仅仅在汇编过程中告诉是一种不产生目标代码的语句,它仅仅在汇编过程中告诉汇编程序应如何汇编。汇编程序应如何汇编。定义变量,定义过程,给变量分配存储单元,给数字定义变量,定义过程,给变量分配存储

3、单元,给数字或表达式命名等。所以伪指令语句是汇编程序在汇编或表达式命名等。所以伪指令语句是汇编程序在汇编时用的,不产生机器码。时用的,不产生机器码。宏指令语句宏指令语句它是一个指令序列,汇编时凡有宏指令语它是一个指令序列,汇编时凡有宏指令语句的地方都将用相应的指令序列的目标代码插入。句的地方都将用相应的指令序列的目标代码插入。第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计 指令性语句指令性语句是计算机可执行的是计算机可执行的,而而伪指令伪指令不能执行不能执行,用用来定义变量来定义变量,分配存储单元分配存储单元,指示程序开始和结束等。指示程序开始和结束等。这两种语句的差别

4、:这两种语句的差别:在形式上:带不带在形式上:带不带冒号冒号,是否可转向它是否可转向它.在本质上:汇编时能否形成在本质上:汇编时能否形成对应的机器码对应的机器码.第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计2 2语句的格式语句的格式汇编语言源程序由语句序列构成。汇编语言源程序由语句序列构成。汇编语言源程序中的每条语句一般占一行,每行不超过汇编语言源程序中的每条语句一般占一行,每行不超过132132个个字符(字符(MASM 6.0MASM 6.0开始可以是开始可以是512512个字符),个字符),执行性语句执行性语句标号:硬指令助记符标号:硬指令助记符 操作数,操作数;

5、注释操作数,操作数;注释说明性语句说明性语句名字名字 伪指令助记符伪指令助记符 参数,参数参数,参数 ;注释;注释第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计4.1.2 4.1.2 汇编语言的程序格式汇编语言的程序格式在实地址模式和虚拟在实地址模式和虚拟80868086模式下,按照逻辑段组织程序,模式下,按照逻辑段组织程序,具有代码段、数据段、附加段和堆栈段。具有代码段、数据段、附加段和堆栈段。一个汇编语言源程序可以包含若干个代码段、数据段、一个汇编语言源程序可以包含若干个代码段、数据段、堆栈段或附加段,段与段之间的顺序可随意排列。堆栈段或附加段,段与段之间的顺序可随

6、意排列。需独立运行的程序必须包含一个代码段,并指示程序执需独立运行的程序必须包含一个代码段,并指示程序执行的起始位置,一个程序只有一个起始位置。行的起始位置,一个程序只有一个起始位置。所有的可执行性语句必须位于某一个代码段内,说明性所有的可执行性语句必须位于某一个代码段内,说明性语句可根据需要位于任一段内语句可根据需要位于任一段内第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计简化段定义的源程序格式简化段定义的源程序格式MODELMODELSMALLSMALL;定义程序的存储模式;定义程序的存储模式STACKSTACK;定义堆栈段;定义堆栈段DATADATA ;定义数据段

7、;定义数据段 STRING DB Hello STRING DB Hello,Everybody!Everybody!,0DH0DH,0AH0AH,$;在数据段定义要显示的字符串;在数据段定义要显示的字符串CODECODE ;定义代码段;定义代码段STARTUPSTARTUP;说明程序起始位置,并建立;说明程序起始位置,并建立DSDS、SSSS内容内容 MOV MOVDXDX,OFFSET STRINGOFFSET STRING ;指定字符串在数据段的偏移地址;指定字符串在数据段的偏移地址 MOV MOVAHAH,9 9 INT INT21H21H;利用;利用DOSDOS功能调用显示信息功能调

8、用显示信息EXIT 0EXIT 0 ;程序结束点,返回;程序结束点,返回DOSDOS ENDEND;汇编结束;汇编结束第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计完整段定义的源程序格式完整段定义的源程序格式 DATA SEGMENTDATA SEGMENT;定义数据段;定义数据段DATADATA STRING STRINGDB HelloDB Hello,Everybody Everybody!,0DH0DH,0AH0AH,$DATA ENDSDATA ENDS;数据段结束;数据段结束 CODE SEGMENTCODE SEGMENT ;定义代码段;定义代码段CODE

9、 CODE ASSUME CSASSUME CS:CODECODE,DSDS:DATADATA ;确定;确定CSCS、DSDS、SSSS指向的逻辑段指向的逻辑段 STARTSTART:MOV AXMOV AX,DATADATA ;设置数据段的段地址;设置数据段的段地址DSDS MOV DSMOV DS,AXAX MOV DX MOV DX,OFFSET STRINGOFFSET STRING;利用功能调用显示信息;利用功能调用显示信息 MOV AH MOV AH,9 9 INT 21H INT 21H MOV AH MOV AH,4CH 4CH ;利用系统功能调用返回;利用系统功能调用返回DO

10、SDOS INT 21H INT 21H CODE CODEENDSENDS ;代码段结束;代码段结束 END END STARTSTART;汇编结束;汇编结束第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计4.1.3 4.1.3 汇编语言程序的开发过程汇编语言程序的开发过程 源程序编辑源程序编辑源程序汇编源程序汇编目标文件链接目标文件链接可执行文件调试可执行文件调试.ASM.OBJ.EXE可执行文件可执行文件LINK DEBUG修改源代码正确第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计ML.EXE ML.EXE 汇编程序汇编程序ML.ERR M

11、L.ERR 汇编错误信息文件汇编错误信息文件DOSXNT.EXE DOSXNT.EXE MS-DOSMS-DOS扩展文件扩展文件LINK.EXE LINK.EXE 连接程序连接程序LIB.EXE LIB.EXE 子程序库管理文件子程序库管理文件MASM5.1MASM5.1以下以下:MASM.EXEMASM.EXE第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计4.2 MASM4.2 MASM汇编语言表达式、运算符汇编语言表达式、运算符包括常量、变量、标号及表达式包括常量、变量、标号及表达式1.1.常量常量(1)(1)数字常量数字常量 二进制常量二进制常量,以以B B(或(

12、或b b)结尾;)结尾;十进制常量十进制常量,以以D D(或(或d d)结尾或省略;)结尾或省略;十六进制常量十六进制常量,以以H H(或(或h h)结尾)结尾,如如0A8C6H0A8C6H。第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计MASMMASM提供基数控制,提供基数控制,.RADIX.RADIX伪指令可以改变默认进制。伪指令可以改变默认进制。伪指令格式:伪指令格式:.RADIX n.RADIX n要求:要求:n n为为2 21616范围内任何数值。范围内任何数值。功能:把功能:把n n表示的数值作为默认基数。表示的数值作为默认基数。例如指令例如指令“.RADI

13、X 16”“.RADIX 16”,将缺省基数改为,将缺省基数改为1616第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计(2)(2)字符串常量字符串常量用用单引号单引号引起来的字符或字符串也代表常数。引起来的字符或字符串也代表常数。例例:A,BCDE,:A,BCDE,汇汇编编时时被被翻翻译译成成对对应应的的ASCIIASCII码码41H41H和和42H,43H,44H,45H42H,43H,44H,45H。字符串最大长度为字符串最大长度为255255个字符个字符第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计(3 3)符号常量)符号常量利用一个标识符

14、表达的一个数值。常数若使用有意利用一个标识符表达的一个数值。常数若使用有意义的符号名来表示,可以提高程序的可读性,同时义的符号名来表示,可以提高程序的可读性,同时更具有通用性。更具有通用性。MASMMASM提供等价机制,用来为常量定义符号名,符号提供等价机制,用来为常量定义符号名,符号定义伪指令有定义伪指令有“EQU”“EQU”和和“”第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计2.2.变量变量变量变量是内存中的数据区是内存中的数据区,在程序中作为存储器操作在程序中作为存储器操作数来使用。数来使用。变量有三种属性变量有三种属性:段段 值值变量定义所在段的段地址变量定义

15、所在段的段地址偏移量偏移量变量单元地址与段起始地址之变量单元地址与段起始地址之 间的位移量。间的位移量。类类 型型有字节、字和双字等。有字节、字和双字等。第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计 3.3.标号标号标号标号是是某条指令所存放单元的某条指令所存放单元的符号地址符号地址,可作为转移指令可作为转移指令或或CALLCALL指令的转移地址。指令的转移地址。标号也有三种属性:标号也有三种属性:段值段值总是在总是在CSCS段寄存器中段寄存器中,偏移量偏移量概念与变量同概念与变量同,类型类型分分NEARNEAR和和FARFAR两种。两种。NEARNEAR表示标号所在

16、语句与转移指令或调用指令在表示标号所在语句与转移指令或调用指令在同同一码段内一码段内,只需改变只需改变IPIP即可。即可。FARFAR标号所在语句与转移指令或调用指令标号所在语句与转移指令或调用指令不在同一代不在同一代码段内。码段内。若没有对类型进行说明若没有对类型进行说明,默认为默认为NEARNEAR。标号?变量?标号?变量?请仔细阅读网络课程请仔细阅读网络课程 问题专讲问题专讲 汇编语言的汇编语言的符号、标号和变量符号一文!符号、标号和变量符号一文!第第4 4章章 80X86 80X86汇编语言程序设计汇编语言程序设计4.4.表达式表达式 表达式表达式是常量、寄存器、标号、变量与一些运算符是常量、寄存器、标号、变量与一些运算符组合的序列组合的序列,分分数值表达式数值表达式和和地址表达式地址表达式两种两种。汇编。汇编时按一定的优先规则对表达式进行计算后可得到一时按一定的优先规则对表达式进行计算后可得到一个数值或一个地址。个数值或一个地址。下面介绍几种运算符下面介绍几种运算符:算术运算符、逻辑运算符、关系运算符、移位运算算术运算符、逻辑运算符、关系运算符、移位运算符、高低运算符、分析符

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

当前位置:首页 > 中学教育 > 教学课件 > 高中课件

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号