资源描述:
《最新第四章-汇编语言程序设计-5教学讲义PPT.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第四章-汇编语言程序设计-5主要内容:§4.1汇编语言和汇编程序§4.2汇编语言程序规范★§4.3伪指令★§4.5宏指令§4.6汇编语言程序设计★机器语言:二进制数形式的指令和数据。助记符:用便于记忆的英语单词表示的指令操作码。它反映了指令的功能和主要特征,便于人们理解和记忆。汇编语言:指令助记符、符号地址、标号、伪指令等语言元素的集合及这些元素使用的规则。汇编语言源程序:用汇编语言编写的程序。§4.1汇编语言和汇编程序1.分段结构汇编语言源程序通常由一个或几个程序模块组成,每个模块一般由三个逻辑段组成:数据段——存放数据、变量堆栈段——堆栈区域代码段——存放程序指令
2、示例stackSEGMENTPARA‘stack‘DB100DUP(‘stack’)stackENDSdataSEGMENT<数据、变量在此定义>dataENDScodeSEGMENTASSUMECS:code,DS:data,SS:stackstart:MOVAX,dataMOVDS,AXMOVES,AX<此处加入你自己的程序段>MOVAL,4CHINT21HcodeENDSENDstart堆栈段数据段代码段2.语句的类型指令语句:由指令助记符构成,汇编后将产生相应的机器代码构成的目标程序,供CPU执行。伪指令语句:为汇编程序和链接程序提供一些必要控制信息的、由伪指
3、令构成的管理性语句。宏指令语句:为程序简洁,将一组反复出现的指令集中定义为一条宏指令,汇编后还原为这组指令对应的目标代码。3.语句的构成与规范汇编语言程序的每个语句由4个域构成:[标号、名字]操作符[操作数][;注释]标号名字域:标号—指令的符号地址,用来代表指令在存储器中的地址。标号后应加上冒号。名字—段、过程、变量的名字,用来代表它们在存储器中的地址。名字后不加冒号。示例语句的构成与规范操作符域:指令、伪指令、宏指令助记符。操作数域:即指令的操作对象。可以有0个、1个或2个。操作数之间以逗号分隔。形式:寄存器、存储单元、常数或表达式。注释域:以分号开头,用来说明程
4、序的功能、分段,以便阅读和理解。汇编时不予处理。示例汇编语言的一个实例:hello.asmdataSEGMENTHelloDB‘Hello,world!’,0DH,0AH,’$’dataENDSprogSEGMENTASSUMECS:prog,DS:datastart:MOVAX,dataMOVDS,AXLEADX,hello;取字符串首地址MOVAH,9INT21H;显示字符串MOVAH,4CHINT21H;退回DOSprogENDSENDstart名字标号注释注释注释4.数据项与表达式常量★标号★变量★表达式★①常量-没有属性的纯数二进制数:以B结尾,如01001
5、101B。十进制数:如85,或以D结尾。十六进制数:以H结尾,第1个数字为A-F时,前面应加0,如0F160H,否则被误会是标识符。字符串:用单引号括起来的1个或多个字符,每个字符的ASCII码值构成。如‘256’,汇编时被翻译成ASCII码323536H,而不是256。标号:指令语句的名字也是其符号地址。标号有3个属性:段地址:即标号所在段的段地址;偏移量:标号所代表存储单元的段内偏移地址;类型:NEAR(段内引用)或FAR(段外引用)常作为转移指令的转移地址②标号③变量变量:存于内存单元中的数据,可被程序改变变量名:是变量的符号地址变量也有3个属性:段地址:变量所
6、在段的段地址偏移量:变量单元地址与段首址间的位移量。类型:有BYTE、WORD和DWORD三种,由定义变量的伪指令确定。变量与标号统称为存储器操作数。标号和变量名的使用规则组成:A-Za-z0-9?.@_$不能以数字开头,句号(.)只能作首字符长度小于31个字符不能与保留字(指令助记符、伪指令、预定义符号等)重名不能重复定义例:正确:LP1,AGAIN,NEXT,_GO,OK_1错误:4M,LOOP,AAA,#HELP,+ONE④表达式表达式:由常数、寄存器名、标号、变量与一些运算符的组合而成。运算符有6类:算术运算符★逻辑运算符★关系运算符★分析运算符★综合运算符-
7、属性运算符★优先级别算术运算符+、-、*、/、MOD、SHL、SHR完成整数的算术运算,结果也是整数。注意:地址运算要求两个地址要在同一段内,只有加、减法运算才有实际意义。用于数字表达式:MOVAX,4*1024;汇编后的形式为:MOVAX,4096用于地址表达式:LEASI,TAB+3;若TAB的偏移地址为1000H,汇编后的形式为:LEASI,[1003H]求余、左移、右移[例4-1]一个程序片断:DATASEGMENTVRDB1,3,5,6DATAENDSCODESEGMENTMOVAH,VR+2;将VR+2单元内容5→AHMOVAL,3*10