如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
第4章汇编语言程序设计第4章汇编语言程序设计用汇编语言编写程序能够:第4章汇编语言程序设计第4章汇编语言程序设计上机环境汇编语言上机过程D:>EDITABC.asmD:>MASMABC有语法错,回EDIT下改该程序D:>LINKABC有错,回在EDIT下改程序D:>ABC运行结果错,回EDIT下改程序或在DEBUG下调试,找原因。D:>DEBUGABC.exe4.2汇编语言的程序结构与语句格式第4章汇编语言程序设计8086/8088/80286允许同时使用以上4种类型的段:代码段CS、堆栈段SS、数据段DS和附加段ES80386/80486和Pentium系列允许同时使用6种段:以上4个段+FS和GS两个附加数据段一个源程序中每种类型的段可不止使用一个,如:n个数据段。4.每条语句由4个字段构成。各字段间用空格分开。第4章汇编语言程序设计第二种方法:非标准方法①不定义主程序为FAR过程,并去掉标准序。②在代码段结束之前(即CODEENDS之前)增加两句:MOVAH,4CHINT21H;4CH号的DOS系统功能调用(2)伪指令语句____汇编时给汇编程序提供与硬件有关的汇编信息,本身并不产生目标代码,CPU不执行。是指示汇编程序进行汇编的操作。第4章汇编语言程序设计第4章汇编语言程序设计(3)操作数——指令语句中提供给指令的操作对象、存放位置。操作数可以是1个、2个或0个,2个时用逗号‘,’分开。(INCBX;MOVAX,DATA;RET)——伪指令语句中操作数的格式和含义随伪操作指令不同而不同。常用:①数值常量2﹟(B)、10﹟(D)、8﹟(Q)、16﹟(H)的整型常量。对16﹟:必须以数字打头,若最高位为字母A~F,必须加前缀0,以与H结尾的标识符区别(如:AH,abcdH)。②字符串常量‘1234’是用单引号括起来的一个或多个字符,值为字符的ASCII码值。例:‘A’=41H‘AB’=4142H‘1234’→31H,32H,33H,34H→31323334HMOVAL,‘G’(3)标号和变量都与存储器地址相关联,都具有以下三种属性:段属性(SEGMENT)——段基址,标号或变量所在段的段地址。偏移量属性(OFFSET)——段内偏移地址,标号或变量所在地址与所在段的段起始地址之差。类型属性(TYPE)——对变量,指变量存取单位的字节数大小。有字节(BYTE)、字(WORD)、双字(DWORD)、4字、10字节5种。——对标号,指标号与使用它的指令之间的距离远近。(如:对转移指令来说,有NEAR标号或FAR标号)4.表达式操作数——表达式由各种操作数、运算符和操作符组成,可出现于源程序的任何地方,在汇编时计算(而不是在程序执行过程中).汇编程序对表达式进行运算后,得到一个确定的数值,再把这个数值汇编到指令中。第4章汇编语言程序设计数值表达式中可使用所有算术运算符地址表达式仅使用‘+、-’两种算术运算符常用:标号或变量±常量形式——运算后仍为标号或变量,其3个属性中的类型及段基址属性不变,仅修改了偏移量属性。例:PLACE+2×3;若PLACE与某存贮单元地址相关,则PLACE+2×3仍与某存贮单元相关。作为运算符时,是在程序汇编时由汇编程序计算的,计算结果充当指令的某一个操作数或构成操作数的部分③关系运算符——EQ、NE、LT、GT、LE和GE。在两个无符号操作数之间进行大小关系比较两个操作数必须同是数值或同是一个段内的两个存储器地址。关系不成立(为假)则结果为“0”(假:0);若关系成立(为真)则结果为全“1”(真:FFFFH)。结果值在汇编时获得。例:MOVBX,PORTLT5汇编为:MOVBX,0FFFFH(条件成立)或MOVBX,0000H(条件不成立)(3)运算符和操作符的优先权等级第4章汇编语言程序设计第4章汇编语言程序设计4.3汇编语言的伪指令语句2.等号语句=格式:符号名=表达式功能与EQU类似。例:PP=89FAH;赋值PP=PP+1;PP=89FBH1.格式[变量名]数据定义符操作数[,操作数]…[,操作数]变量名指示存储器操作数的地址(符号地址)数据定义符指示存储器操作数的类型(字节、字、双字等)操作数指示存储器操作数的内容,是赋给变量的初值。多个相同类型的变量可在一条语句中定义[]——表示可选经过定义的变量有3种属性:SEGMENT,OFFSET,TYPE若某个变量表示的是一个数组,则其类型属性为变量的单个元素所占用的字节数。2.具体形式和功能(1)为数据项分配存储单元,用变量名作为该存储单元的名称。例:XDB25