资源描述:
《第四章 汇编语言程序设计ppt课件.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、汇编语言程序的一般概念汇编语言源程序(文件):用汇编语言按一定格式编写的程序,它不能直接执行。源程序的属性为ASM。目标文件(属性为OBJ):将源程序经汇编后转换成的二进制代码的文件。执行文件(属性为EXE):经连接后将目标文件与库文件或其它目标文件连接在一起形成的可执行的文件。汇编:将源程序转换成目标文件的翻译过程。汇编程序:完成汇编工作的程序。汇编程序的主要功能为:检查源程序;测出源程序中的语法错误,给出出错信息;产生目标代码程序,并给出列表文件(LST文件);展开宏指令;常用的汇编程序有小汇编ASM,宏汇编MASM,以及TASM,TASMX,TA
2、SM32。上机的步骤编辑建立ASM源程序;将ASM文件经汇编(MASM)转换成OBJ文件;将OBJ文件经连接(LINK)转变成EXE文件上机执行。LINK连接编辑源程序PROGR.ASM文件PROGR.OBJ文件PROGR.EXE文件MASM汇编4.2汇编语言程序格式汇编语言语句的类型指令语句:能产生目标代码,CPU可以执行,完成特定功能的语句。它由CPU指令组成。伪指令语句:不产生目标代码,仅是为汇编程序作指示的语句。宏指令语句:是一个指令序列。在汇编时,所有的宏指令语句都被展开为相应的指令序列。语句的格式汇编语言源程序中每个语句可由4项组成,格式如
3、下:[名字]助记符[操作数][;注释][name]operation[operand][;commands]其中,带方括号的部分为可选项。名字源程序中用以下字符表示名字:字母A~Z,数字0~9,字符?、·、@、_、$数字不能放在名字之首。在指令语句中,名字一般是标号。标号:是某指令代码存放单元的符号地址,它代表某条指令。标号后必须有一个冒号:。标号有三种属性:段,偏移量,类型(FAR,NEAR)在伪指令语句中,名字通常是变量(名),段名,过程名。伪指令语句中的名字后不接冒号。变量(名):某个存储器中数据单元或数据区的符号地址,它代表数据单元或数据区。变
4、量有三种属性:段,偏移量,类型(BYTE,WORD,DWORD,QWORD)助记符:分为指令助记符和伪指令助记符。操作数:指令操作的对象。可作操作数的有:常量,寄存器,标号,变量和表达式。常量:如立即数,直接寻址的地址,ASCⅡ码字符串等。寄存器:如AX,AH,DS,SP,DX等表达式:是常数、寄存器、标号、变量与一些操作符相组合的序列。有数字表达式和地址表达式两种。数字表达式产生一个数值结果;地址表达式产生一个地址。注释:它不会被汇编,它的功能是能增加源程序的可读性。注释前必须加分号‘;’。操作符算术操作符常用的有:+(加)、-(减)、﹡(乘)、/(
5、除)、MOD(模除,即两个整数相除后取余数)。例4.1MOVDX,BLOCK+(6-1)﹡2该指令语句与MOVDX,BLOCK+10等价,即把首地址为BLOCK的字数组的第6个字符送给DX寄存器。例4.2数组ARRAY定义如下,试写出把数组长度(字数)存入CX寄存器的指令。ARRAYDW1,2,3,4,5,6,7ENDDW?END是为计算数组长度而建立的符号地址。所需指令为:MOVCX,(END-ARRAY)/2汇编后计算表达式而形成了指令MOVCX,7逻辑运算操作符AND(逻辑与),OR(逻辑或),XOR(逻辑异或),NOT(逻辑非)。它们只能用于数
6、字表达式中例4.3:INAL,PORT_VALOUTPORT_VALAND0FEH,AL当输入端口号PORT_VAL为偶数时,输出端口号与之相同;当它为奇数时,输出端口号比输入端口号小1。例4.4ANDDX,PORT_VALAND0FEH汇编‘PORT_VALAND0FEH’确定了外设端口号;在程序运行时,‘AND’完成将DX与外设端口号相‘与’的操作。关系运算操作符EQ(等于),NE(不等),LT(小于),GT(大于),LE(小于或等于),GE(大于或等于)参与关系运算操作的两个操作数必须都同为数字或为同一段内的两个存储器地址。计算的结果应为逻辑值:
7、结果为真,表示为0FFFFH(全1)结果为假,表示为0(全0)例4.5:MOVAX,4EQ3;结果为假,故(AX)←0MOVAX,4NE3;结果为真,故(AX)←0FFFFH例4.6MOVBX,((PORT_VALLT5)AND20)OR((PORT_VALGE5)AND30)当PORT_VAL﹤5时,汇编结果为:MOVBX,30否则,汇编结果为:MOVBX,204)分析运算符SEG,OFFESET,TYPE,SIZE,LENGTHSEG格式:SEG变量/标号功能:取变量或标号的所在段的段地址值例4.7MOVAX,SEGARRAY;(AX)←ARRAY
8、的;段地址MOVDS,AX;(DS)←(AX)OFFSET格式:OFFSET变量/标号功能:取