已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章 汇编语言程序设计基础1教学目的:掌握微型汇编语言格式和程序设计方法2教学要求: 熟悉汇编语言程序的结构、语句类型和格式。 熟悉数据项及表达式,要求能明确区分标号和变量。 熟悉各类伪指令,要求掌握常用伪指令格式和应用。3教学重点:指令语句格式和伪指令语句格式汇编语言程序格式。4掌握难点:伪指令伪指令存储器分配技术5教学进程安排:P1021336教学方法:课堂讲授7教学内容摘要:4.1 汇编语言语句格式4.1.1 程序格式4.1.2 语句格式指令语句和伪指令语句的格式是类似的,格式如下:名字 操作码 操作数 ;注释1名字名字的标识符名字的定义规则名字的2种主要形式标号属性:段属性:标号所在的段地址,即CS的内容。偏移属性:标号在代码段的偏移地址。类型属性:段内Near 或者段间Far变量属性:段属性:变量名所在的段地址,DS,ES或SS偏移属性:变量名的偏移地址。类型属性:字节DB,字DW或者双字DD2.操作码3.操作数常数表达式算术运算符逻辑运算符关系运算符4.注释项4.2 伪指令机器指令:程序运行期间由计算机来执行。伪操作(伪指令):在汇编程序(MASM)对源程序汇编期间由汇编程序处理的操作。4.2.1 表达式赋值伪操作1. 等值伪指令EQU0A041064000001FBFF3C000000FDFF0000DATA_BYTEDATA_WORDDATA_DW10d410h100d60d0FFFDh-5100h格式: EQU 2. 等号伪指令 =EMP=7EMP=EMP+13. 解除定义伪指令PURGE格式:PURGE 注:EQU:表达式名不允许重复定义;:允许重复定义。4.2.2 定义数据的伪指令变量 助记符 操作数,操作数 ;注释功能:为操作数分配存储单元,并用变量与存储单元建立联系。DB、DW、DD、DQ、DT【例4-2】操作数可以是常数,或者是表达式(根据该表达式可以求得一个常数),如DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,-5图4.1 例4-2的汇编结果DATA_DWDD3C,OFFFDH汇编程序可以在汇编期间在存储器中存入数据,汇编后的内存分布如图4.1所示。【例4-3】操作数也可以是字符串,如:MESSAGEDBHELLO则存储器存储情况如图4.2所示,而DB AB和DW AB的存储情况则分别如图4.2和所示。【例4-4】操作数?可以保留存储空间,但不存入数据。 如:ABCDB0,?,?,0MESSAGE48454C4C4F41424241HELLOABBA字符串的存储 DB AB DW AB DEFDW?,52,?经汇编后的存储情况如图4.3所示。图4.2 例4-3的汇编结果【例4-5】 使用DUP实现重复定义ARRAY1DB2DUP(0,1,2,?)ARRAY2DB100DUP( ? )汇编后的存储情况如图4.4所示。由图可见,例4-5中的第一个语句和语句ARRAY1 DB 0,1,2,?,0,1,2,?是等价的。100个字节00-00-3400-ABCDEF52d000102-000102-ARRAY1ARRAY2图4.3 例4-4的汇编结果 图4.4 例4-5的汇编结果4.2.3 定义程序开始和结束的伪指令在程序的开始可以用NAME或TITLE作为模块的名字。1、NAME module_name说明:汇编程序将以给出的module_name作为模块的名字。2、TITLE text说明:指定列表文件的每一页上打印的标题注:如程序中没使用NAME伪操作,则汇编程序将用text(最多可有60个字符)中的前6个字符作为模块名;如程序中即无NAME又无TITLE伪操作,则将用源文件名作为模块名。3、END label说明:源程序结束伪操作。注:label指示程序开始执行的起始地址;如多个程序模块相连,则只有主程序要使用标号,其它子程序只用END而不必指定标号。4、MASM 6.0版的汇编程序增加了定义程序的入口点和出口点的伪操作.STARTUP:定义程序的初始入口点,并且产生设置DS,SS和SP的代码。.EXIT:用来产生退出程序并返回操作系统的代码,格式: 格式:EXIT return_value return_value:返回给操作系统的值,常用0。.END:程序结束伪操作(省略了标号label)。4.2.4 指令集选择伪指令ARRAY010002007C000300040082000074.8086 选择8086指令系统.286 选择80286指令系统.286P 选择保护方式下的80286指令系统4.2.5 地址计数器与对准伪操作1. 地址计数器$JNE $+6【例4-6】$ 用法示例ARRAYDW1,2,$+4,3,4,$+4如汇编时ARRAY分配的偏移地址为0074,则汇编后的存储区将如图4.5所示。注意:ARRAY数组中的两个 $+4 得到的结果是不同的,这是 图4.5 例4-6的汇编结果由于$的值是在不断变化的缘故。当在指令中用到$ 时,它只代表该指令的首地址,而与$本身所在的字节无关。2. ORG伪操作 ORG伪操作用来设置当前地址计数器的值,其格式为:ORGCONSTANTEXPRESSION3. EVEN伪操作4. ALIGN伪操作ALIGN伪操作为保证双字类型数组边界从4的倍数开始创造了条件,其格式为:ALIGNBOUNDARY其中BOUNDARY必须是2的幂,例如:.DATAALIGN4ARRAYDB100DUP(?)就可保证ARRAY的值为4的倍数。当然,ALIGN2和EVEN是等价的。4.2.6 基数控制伪指令.RADIXEXPRESSION4.2.7 过程定义伪指令可把具有独立功能的程序段定义为过程,供其它程序调用。过程定义的语法格式为: PROCNEAR/FARRET ENDP4.3 汇编语言源程序格式汇编语言语句格式:name operation operand ;comment name: 名字项,是一个符号,可以是标号或变量; operation: 操作项,可以是指令,伪操作或宏指令名; operand:操作数; comment: 注释,用来说明语句的功能。4.3.1 名字项可以是标号或变量,用来说明本语句的符号地址,例3.76,P92。可用下列字符来表示名字:AZ,09,?,.,$注:第一个字母不可以是数字;如用到.,则必须是第一个字符;可用很多字符,但只有前31个字符被识别。(1) 标号:在代码段中定义,后面跟:,也可以用LABEL或EQU来定义(还可以作为过程名来定义,第六章),经常在转移指令或CALL指令指令的操作数字段出现,用以表示转向地址。标号有三种属性:段、偏移及类型:段属性:定义标号的段起始地址,此值必须在一个段寄存器中,标号的段总是在CS寄存器中。偏移属性:从段起始地址到定义标号的位置之间的字节数。类型属性:指出该标号是在本段内引用还是在其它段中引用。在段内引用,称为NEAR;在段外引用,称为FAR。(2) 变量:在数据段或附加数据段中定义,也可以用LABEL或EQU伪操作来定义。标号有三种属性:段、偏移及类型: 段属性:定义变量的段起始地址,此值必须在一个段寄存器中。 偏移属性:从段起始地址到定义变量的位置之间的字节数。 类型属性:定义该变量的类型,如DB,DW,DD,DF,DQ,DT4.3.2 操作项:可以是指令,伪操作或宏指令名的助记符。指令:汇编程序将其翻译为机器语言指令;伪操作:汇编程序将根据其所要求的功能进行处理;宏指令:根据其定义展开(第七章)。4.3.3 操作数项:可以是常数、寄存器、标号、变量或表达式。常用操作符:算术操作符、逻辑与移位操作符、关系操作符、数值回送操作符、属性操作符。(1)算术操作符:、-、*、/、MOD(求余数) 可用于数字表达式或地址表达式,用于地址表达式要注意物理意义。(2)逻辑与移位操作符:NOT, AND, OR, XOR和SHL, SHR。只能用于数字表达式。(3)关系操作符:EQ(相等)、NE(不等)、LT(小于)、 GT(大于)、LE(小于或等于)、GE(大于或等于).关系操作符的两个操作数必须都是数字,或是同一段内的两个存储器地址;计算的结果为逻辑值,结果为真,表示为:0FFFFH;结果为假,表示为:0。(4)数值回送操作符主要有:TYPE, LENGTH, SIZE, OFFSET, SEG等。TYPE 格式:TYPE expression 说明:如表达式是变量,则回送该变量的类型,以字节数表示:DB为1,DW为2,DD为4,DQ为8,DT为10; 如表达式是标号,则回送代表该标号类型的数值,NEAR为1,FAR为2;如表达式是常数,则回送0。例: ARRAY DW 1, 2, 3 ADDSI, TYPEARRAY等价于:ADD SI, 2LENGTH 格式:LENGTH Variable 说明: 如变量中使用DUP,则回送分配给该变量的单元数; 其它回送1。例:FEES DW 100 DUP (0) ARRAY DW1, 2, 3等价于 MOV CX, LENGTH FEES MOV DX, LENGTH ARRAY MOV CX, 100 MOV DX, 1SIZE格式:SIZE Variable说明:回送值是:LENGTH 值 * TYPE 值例:MOV AX, SIZE FEES MOV BX, SIZE ARRAY MOV AX, 200 MOV BX, 2OFFSET:回送偏移地址。(5)属性操作符主要有:PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD等。PTR:给已分配的存储地址赋予另一种属性。 格式:type PTR expression 注:typeBYTE、WORD、DWORD、FWORD、QWORD、TBYTE、NEAR、FAR等。例: OPERDW 1234H, 5678H MOV AL, BYTE PTR OPER MOV AH, BYTE PTR OPER+1段操作符:用来表示标量、变量或地址表达式的段属性.例:MOV AX, ES:BX+SISHORT:用来修饰JMP指令中转向地址的属性,指出转向地址是下一条指令地址的127个字节范围内。THIS 使操作数的段地址和偏移地址与下一个存储单元相同。 格式:THIS attribute或type 说明:attribute或type BYTE、WORD、DWORD、FWORD、QWORD、TBYTE、NEAR、FAR等。例:FIRST EQU THIS BYTESECONDDW100 DUP (?)HIGH 和 LOW 称为字节分离操作符,HIGH取其高位字节,LOW取其低
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论