资源描述:
《哈尔滨师范大学恒星学院数学与计算机系》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、汇编语言程序格式ò汇编程序功能ò伪操作ò汇编语言程序格式ò汇编语言的上机过程哈尔滨师范大学恒星学院数学与计算机系汇编程序的功能IBMPC机中有两个汇编程序:小汇编程序ASM和宏汇编程序MASM.汇编程序的主要功能是:(1)检查源程序(2)检查出源程序中的语法错误,并给出出错信息(3)产生源程序的目标程序(*.OBJ),并可给出列表文件(*.LST文件)(4)展开宏指令哈尔滨师范大学恒星学院数学与计算机系伪操作在汇编程序对源程序汇编期间由汇编程序处理的操作,可以完成如数据定义,分配存储区,指示程序结束等功能。哈尔滨师范大学恒星学院数学与计算机系伪操作数据定义及存储器分配伪操作段
2、定义伪操作表达式赋值伪操作EQU程序开始和结束伪操作对准伪操作基数控制伪操作哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作[变量]助记符操作数[,操作数,…][;注释]助记符:DB(字节)DW(字)DD(双字)DQ(四个字)DT(十个字节)这些伪操作可以把其后跟着的数据存入指定的存储单元,或者只分配存储器空间而并不存入确定的数值.DW和DD伪操作可以存储偏移地址或完整的地址.哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作例4.7操作数可以是常数,或者是表达式(根据该表达式可以求得一个常数),如DATA_BYTEDB10,4,10HDATA_WO
3、RDDW100,100H,-5DATA_DWDD3*20,OFFFDH哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作例4.8操作数可以是字符串如MESSAGEDB‘HELLO’DB‘AB’DW‘AB’哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作例4.9操作数?可以保留存储空间,但不存入数据。如:ABCDB0,?,?,?,0DEFDW?,52,?哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作思考:要为一个变量VAR分配1000个字节的存储单元,并为分配的存储单元赋0值,应该如何操作?哈尔滨师范大学恒星学院数学与计算机系数据定义及
4、存储器分配伪操作操作数字段可以使用复制操作符(duplicationoperator)来复制某个(或某些)操作数.其格式为:reapeat_countDUP(operand,…,operand)其中repeat_count可以是一个表达式,它的值应该是一个正整数,用来指定括号中的操作数的重复次数.哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作例4.10ARRAY1DB2DUP(0,1,2,?)ARRAY1DB0,1,2,?,0,1,2,?ARRAY2DB100DUP(?)哈尔滨师范大学恒星学院数学与计算机系例4.11DUP操作可以嵌套,如ARRAY3DB100
5、DUP(0,2DUP(1,2),0,3)哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作例4.14OPER1DB?,?OPER2DW?,?……MOVOPER1,0;字节指令MOVOPER2,0;字指令哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作例4.15OPER1DB1,2OPER2DW1234H,5678H⋯⋯MOVAX,OPER1+1MOVAL,OPER2两条MOV指令的两个操作数的类型属性是不相同的:OPER1+1为字节类型属性而AX为字类型属性;OPER2为字类型属性,而AL为字节类型属性。汇编程序将指示出错:这两条MOV指令中的两个操
6、作数的类型匹配哈尔滨师范大学恒星学院数学与计算机系PTR属性操作符可以指定操作数的类型属性,即使用PTR属性操作符:typePTRVariable±constantexpression其中类型(type)可以是BYTE,WORD或DWORD(双字)例4.15第一条传送指令(MOV)可以写成:MOVAX,WORDPTROPER1+1运行时就把OPER1+1的字内容送AX,即把OPER1+1的内容送AL,把OPER2的第一个字节的内容送AH,所以指令执行完后,(AX)=3042H。哈尔滨师范大学恒星学院数学与计算机系数据定义及存储器分配伪操作例4.15第二条传送指令(MOV)可以
7、写成:MOVAL,BYTEPTROPER2运行时把OPER2的第一个字节的内容送AL,即(AL)=34HMOVAL,BYTEPTROPER2+1把OPER2中的第一个字的高位字节送AL,即(AL)=12H总结:同一个变量可以具有不同的类型属性哈尔滨师范大学恒星学院数学与计算机系还可以用LABEL伪操作来定义,其格式为:nameLABELtype对于数据项可表示为:Variable_nameLABELtype其中类型(type)可以是BYTE,WORD或DWORD对于可执行的代码,则可表示为:Label_