您好,欢迎访问三七文档
当前位置:首页 > 行业资料 > 冶金工业 > 经典教材_微机原理及应用和汇编语言程序设计课件chap_51
主要内容:宏汇编语言的语法汇编程序与上机过程表达式语句伪指令第五章汇编语言及汇编程序上课认真听讲,下课按时完成布置的习题,这门课就一定不会挂!重点1.介绍宏汇编语言的语法2.介绍系统功能调用3.汇编过程难点伪指令的格式与应用5.1宏汇编语言的语法机器语言:机器能识别并执行,称目标程序,是二进制码。汇编语言:用指令助记符、符号地址、标号等书写的语言。汇编语言源程序:用汇编语言编写的程序。汇编:汇编语言源程序目标程序一、汇编语言语句的类型和格式①类型:指令语句,伪指令语句和宏指令语句②格式:[标号]指令助记符[操作数][;注解]1.标号:是给指令或某一存储单元地址所起的名字。2.指令助记符:表示不同操作的指令3.操作数:是指令执行的对象。4.注释:为源程序所加的注解,用于提高程序的可读性。用方括号括起来的部分,可以有也可以没有。每部分之间用空格(至少一个)分开二.常数、变量和标号1.常数:(1)数字常量:(2)字符串常量:ASCII码2.变量变量是代表存放在存储单元的数据。变量名,可认为是存放数据的存储单元的符号地址变量的属性:段值(SEG)、偏移量(OFFEST)、类型(BYTE,WORD,DWORD)定义变量的伪指令符号DB定义字节DW定义字DD定义双字(DQ定义四字DT定义十字)例1:DAT1DB12HDAT2DB34HDAT3DW1234HDAT4DW0A3F1H,4981H;DAT4字单元内容为0A3F1H,它的下一个字单元内容为4981H例2:DA—BDB?;分配一个字节单元DA—WDW?,?;分配两个字单元42H41H000044H43H...00H00HSTRINGS341H42H43H44H45H46HSTRINGS1STRINGS242H41H44H43H例3:STRING1DB‘ABCDEF’STRING2DW‘AB’,’CD’STRING3DD‘AB’,’CD’AABBCCDD例4:带DUP的表达式:定义重复数据操作符变量名DB/DW/DD表达式DUP(表达式2)重复次数重复内容D—B1DB?,?,?,?,?,?D—B2DB6DUP(?)D—B3DB10DUP(4)3.标号标号是一条指令的目标代码的符号地址。属性有:段值(SEG)偏移量(OFFSET)距离属性:NEAR(近),只能被本段内访问。FAR(远),可以被其它段访问。三、表达式与运算符表达式由操作数和运算符组成,汇编时产生一个值。1.算数运算符:+-*\MOD,取余运算符SHL,左移运算符SHR,右移运算符例:32MOD5;汇编时,得到的值=22.逻辑运算符:AND、OR、NOT、XOR例:24HOR0FH;汇编时,得到的值=2FH3.关系运算符:关系运算符是逻辑判断式,为真时,结果取0FFFFH,为假时,结果取0。EQ(等于)、NE(不等于)、LT(小于)、GT(大于)、LE(小于等于)、GE(大于等于)例:25LT26;其值=0FFFFH26GT25;其值=0FFFFH24GE8;其值=04.分析运算符SEG\OFFSET\TYPE\LENGTH\SIZE(1)SEG:操作数的段地址(2)OFFSET:操作数地址的偏移量例:TABLEDW67,89…….MOVAX,SEGTABLEMOVBX,OFFSETTABLEMOVCX,TABLE(3)TYPE求符号名类型的数值格式:TYPE(符号名)符号名类型值:DB:送1,DW:送2,DD:送4例:ARRYDW1,2MOVSI,TYPEARRAY汇编为:MOVSI,2(4)LENGTH为符号名分配的项数。格式:LENGTH(符号名)使用DUP,回送变量的单元数;否则送1。例:SUMDW100DUP(0)MOVCX,LENGTHSUM汇编后:MOVCX,100(5)SIZE变量:回送分配给变量的字节数。格式:SIZE(符号名)例:SUMDW100DUP(0)MOVDX,SIZESUM汇编后:MOVDX,2005.组合运算符(1)定义符号名为新类型格式:类型PTR(符号名)例:OPER1DB10H,21H,30H,45HMOVAX,WORDPTROPER1+2;AX4530H(2).指定新类型THIS格式:THIS(类型)例:LABCEQULABDTHISBYTELABDDW4321H,2255HMOVAL,LABC;AL=21HMOVAX,LABD;AX=4321H符号LABC与LABD有相同的段地址和偏移地址,LABC是字节类型,LABD是字类型.6.分离运算符格式:LOW表达式:取低字节格式:HIGH表达式:取高字节MOVAL,LOW3080H;AL=80H5.2伪指令伪指令:汇编时不产生机器代码,而是由MASM识别,又称汇编命令。1)标号字段:任选字段,标号名后不能用冒号“:”,这是与指令性语句的突出区别.2)伪指令字段数据定义伪指令:DB,DW段定义伪指令:SEGMENT,ENDS3)操作数字段:4)注释字段一、标号赋值伪指令格式:名字EQU表达式新名字EQU老名字功能:把表达式的值赋给符号名。解除语句:格式:PUREG符号1,符号2,符号3功能:解除对符号1、符号2、符号3的赋值。例:PORT1EQU3PORT2EQUPORT1+2PORT3EQUPORT2CONTEQUCX即:PORT1=3,PORT2=5PORT3=5,CX与CONT意义相同PUREGPORT1;解除PORT1的赋值PORT1EQU10即:PORT1=10二、内存数据定义伪指令格式:字节定义:符号DB〈表达式〉字定义:符号DW〈表达式〉四字节定义:符号DD〈表达式〉八字定义:符号DQ〈表达式〉十字节定义:符号DT〈表达式〉例:SOBDB?SUMDW?SLEVDD?TAB1DB28N1DD2.5,3.2E+2例:有如下定义TABLE1DD0,1,2,3TABLE2DB30H,31H,32H,33HTABLE3DB‘12345678910‘ZERDW8DUP(0)DEMDB‘HELLO?’判断下列指令是否正确:1.MOVAX,TABLE12.MOVBX,TABLE23.MOVAL,TABLE34.MOVAX,WORDPTRTABLE1三、定义存储单元的类型功能:指定存储单元的类型是字节型.功能:指定存储单元的类型是字型.功能:指定存储单元的类型是双字型.例:有如下定义:SUMDB12H,80HTABDW1234H1).MOVAX,WORDPTRSUM汇编后:MOVAX,8012H2).MOVBH,BYTEPTRTAB汇编后:MOVBH,34HBYTEWORDDWORD四、段定义语句格式:段名SEGMENT[定位类型][组合类型][‘类别’]…….段名ENDS(1)定位类型:指定段的起始地址边界.4种:PARA(页边界)(能被256除)PAGE(段边界)(能被16除)WORD(字边界)(能被2除)BYTE(2)组合类型6种:PUBLICSTACK空COMMONMEMORYAT(3)类别名五.段说明ASSUME:给各程序段指定段寄存器六.过程定义语句过程定义格式:过程名PROC[NEAR]或FAR………RET过程名ENDP过程调用格式:CALL过程名七.定位伪指令ORG2000H;指定起始地址的偏移量八.结束伪指令格式:END[启动标号或过程]九.定位伪指令格式:ORG表达式十.列表为指令TITLESUBTTLPAGE十一.连接伪指令PUBLICEXTRNINCLUDEGROUP十二.其它5.3宏指令为了简化汇编语言的书写,把一些频繁出现的程序段定义为“宏指令”.在汇编过程中,将宏指令所代替的程序段汇编成相应的机器代码,并插入到源程序中宏指令要使用前:(1)宏定义(2)宏调用(3)宏扩展1.宏代换格式:宏名MACRO[形式参数1,形式参数1,…]…ENDM功能:为指令序列定义一个宏名,称为宏指令.2.局域符号定义语句格式:LOCAL符号[符号1,符号2,…]功能:指出符号1,符号2,…仅在宏代换中有意义.3.删除宏定义语句格式:PURGE宏定义名1[宏定义名2,…]功能:注销程序中引用的宏指令.4.退出宏定义语句格式:EXITM5.重复定义语句格式:IRPC形式参数,字符串…}指令序列ENDM6.包含语句:格式:INCLUDE文件名;把命令后的文件插入该语句处一起编译.例:定义一条宏指令,完成算术左移.SHTMACROX,YMOVCL,XSALY,CLENDM宏调用:SHT6,BL经宏展开:MOVCL,6SALBL,CL宏指令与子程序的区别5.4系统功能调用主要内容:系统功能调用一.简介MS-DOS设置了几十个内部子程序,可以完成I/O设备管理,存储管理,文件管理,合作业管理.它们被做成中断服务程序,其入口地址已由系统置入中断向量表中,可以用软中断指令调用.类型号:20~27H系统功能调用:INT21H二、DOS系统功能调用1.DOS系统功能调用格式1)、在AH中设置功能号2)、在指定的积存器中设置入口参数3)、用INT21H指令执行系统功能调用4)、根据出口参数分析执行情况2.DOS系统功能调用INT21H的部分I/O操作1).键盘输入一个字符并回显功能号AH=01H,出口参数AL=字符;使用格式:MOVAH,01HINT21H2).键盘输入字符到缓冲区:功能号:AH=0AH,入口参数:DS:DX=缓冲区首址使用格式…BUFDB20DB?DB20DUP(?)…MOVDX,OFFSETBUFMOVAH,OAHINT21H3).输出一个字符功能号:AH=2入口参数:DL=字符,光标随字符移动使用格式:MOVDL,‘A’MOVAH,02HINT21H执行上面程序后,将在屏幕上显示字符A.4).输出字符串,功能号:AH=9,入口参数:DS:DX=串地址,字串结束为“$”符号使用格式:BUFDB‘HELLO!’……MOVDX,OFFSETBUFMOVAH,09HINT21H……….5)直接控制台输入输出单字符功能号:AH=06H入口参数:DL=0FFH(输入)DL=字符(输出)出口参数:AL=输入字符6)键盘输入一个字符无回显功能号:AH=08H出口参数:AL=字符;7)返回DOS系统功能号:AH=4CH8)清键盘缓冲区,并调用一种键盘功能功能号:AH=0CHAL=键盘功能号(1、6、7、8、0AH)9).从串口输入单字符AH=03H入口参数AL=字符10)向串口输出单字符AH=04H出口参数DL=字符11)设置时间:INT21/2BHyear:mounth:day=DX:CH:CL12)取得时间:INT21H/2AH13)取得日期:INT21H/2CH5.5汇编过程一.汇编程序的功能将汇编语言源程序翻译成机器语言编写的目标程序.并可输出列表文件检查语法并给出错误信息展开宏指令常用汇编程序:ASM和MASM源程序.ASM输入汇编程序MASM翻译目标代码(.OBJ)列表文件(.LST)交叉索引文件(.CRF)输出二.程序的编辑、汇编与连接1.建立源文件用编辑软件完成.常见软件:Edit、Pe、Q2.汇编源程序用汇编程序MASM对源程序进行汇编AMASMABC.ASM或AMASMABC3.连接产生可执行文件用连接程序LINK对.OBJ进行连接,产生可执行文件;ALINKABC.OBJ或ALINKABC4.执行程序AABC↓或AABC.EXE↓5.调试程序DEBUG程序是专为宏汇编语言设计的一种调试程序.ADEBUGABC.EXEDEBUG程序的子命令(18条)D命令:显示内存内容I命令:输入命令O命令:输出命令U命令:反汇编Q命令:退出DEBUGT命令:单步执行P命令:单步执行命令,指给出指令执行结果datasegmenta1db'hello!','$'dataendscodesegmentassumecs:code,ds:datastart:movax,datamovds,axmovdx,offseta1
本文标题:经典教材_微机原理及应用和汇编语言程序设计课件chap_51
链接地址:https://www.777doc.com/doc-332926 .html