第3章 汇编语言及编程N.pdf
上传人:qw****27 上传时间:2024-09-12 格式:PDF 页数:81 大小:2.2MB 金币:15 举报 版权申诉
预览加载中,请您耐心等待几秒...

第3章 汇编语言及编程N.pdf

第3章汇编语言及编程N.pdf

预览

免费试读已结束,剩余 71 页请下载文档后查看

15 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

第三章汇编语言及编程3.1汇编语言程序结构与汇编语句3.2伪指令语句3.3汇编语言编程环境3.4DOS/BIOS功能调用3.5三种基本结构程序的设计3.6子程序设计与调用3.1汇编语言程序结构与汇编语句3.1.1汇编语言源程序结构3.1.2汇编语言的语句3.1.1汇编语言源程序结构80X86/Pentium系列MPU汇编语言都是以逻辑段为基础,按段的概念来组织代码和数据的。因此,源程序结构与逻辑段的定义方法密切相关,而宏汇编语言MASM5.0以上的版本中,逻辑段既可用完整段定义,又可用简化段定义。3.1.1汇编语言源程序结构1.标准的单模块源程序框架[.586]DATASEGMENT[USE16/USE32];定义数据段;数据定义伪指令序列⑵采用完整段定义时,对程序DATAENDSSTACKSEGMENT[USE16/USE中定义的逻辑段,要说明32]STACK;定义堆栈段逻辑⑶对数据段(有时还有堆栈段段与段寄存器的寻址关系。;数据定义伪指令序列),程STACKENDS序中要包含初始化段寄存器的语句。CODESEGMENT[USE16/USE32];定义代码段ASSUMECSCS:CODE,SS:STACK,DS:DATA,ES:DATADATA程序中要包含START:MOV返AX,DATA;取数据段基址回DOS的语句。MOVDS,AX⑴一个源程序由若干逻辑段;建立DS的可寻址性MOVES,AX组成。一般一个源程序具有数;建立ES段的可寻址性据段、附加数据段、堆栈段和;核心程序段⑸源程序(模块)MOVAH,44CHCH代码段;;但只有代码段是必不返回DOS操作系统以END伪指令结束INT21H21H可少的。CODEENDSENDENDSTART3.1.1汇编语言源程序结构2.返回DOS状态的方法(1)使用DOS的4CH号功能调用这种方法是在代码段结束前加调用语句:MOVAH,4CH;功能号4CH→AHINT21H;中断调用(2)使用20H号软功能调用调用方式是在代码段结束前加调用语句:INT20H(3)使用DOS的0号功能调用调用方式是在代码段结束前加调用语句:MOVAH,0INT21H3.1.1汇编语言源程序结构(4)将主程序定义为远过程也称为“标准序”方法。这种方法是在代码段开始处按下述方式定义主程序:CODESEGMENT…ASSUME…主过程名PROCFARPUSHDSSUBAX,AX;标准序PUSHAXRET主过程名ENDPEND主过程名3.1.2汇编语言的语句语句是汇编语言程序的基本组成单位,用于规定汇编语言的一个基本操作。汇编语言包含三种基本语句:指令语句是可执行语句,由硬件不可执行语句,(CPU)完成其功能,汇其功能由相应软伪指令语句编时产生目标代码。件完成,不产生目标代码。宏指令语句用户定义的新指令,汇编时产生相应的目标代码。3.1.2汇编语言的语句1.语句格式指令语句:[标号:]助记符[操作数][;注释]伪指令语句:[名字]定义符[操作数][;注释]标号和名字——分别是给指令单元和伪指令起的符号名称,统称为标识符。(注意组成的语法规则)助记符和定义符——分别用于规定指令语句的操作性质和伪指令语句的伪操作功能,统称操作符。操作数——操作数允许有多个,这时各操作数之间要用逗号“,”隔开。3.1.2汇编语言的语句2.数据汇编语言中使用的数据有常数、变量和标号。(1)常数常数是指那些在汇编过程中已有确定数值的量,分为数值常数和字符串常数两类。主要用作:指令语句中的立即操作数基址、变址或基址加变址寻址中的位移量伪指令语句中用于给变量赋初值3.1.2汇编语言的语句(2)变量与标号标号是指令的符号化地址,一定在代码段,而变量是数据的符号化地址,一般在数据段,有时也可在代码段定义。变量与标号有三个共同属性:段基址:所在段的起始地址(SEG)偏移值:相对于段基址的位移量(OFFSET)类型:所占字节数(TYPE)3.1.2汇编语言的语句变量与标号区别标号可以用作转移控制类指令的操作数,但变量不能。变量可以用作基址、变址或基址加变址寻址的位移量,但标号不能。3.1.2汇编语言的语句例3.1假设VAR1和VAR2为字变量,LAB为程序中的一个标号,判断下列指令是否正确,若错误请指出错,不允许存储器变量间直接传数错误之处:错,源与目的操作数①ADDVAR1,VAR2类型不一致②SUBAL