资源描述:
《《微机原理汇编语言》PPT课件》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第4章汇编语言程序设计4.1汇编语言程序格式及开发过程4.2汇编语言的基本语法和伪指令4.3基本结构程序设计举例4.4子程序结构程序设计举例4.5BIOS和DOS中断14.1汇编语言程序格式及开发过程汇编语言——用指令的助记符、符号地址、标号等符号书写程序的语言。源程序——用汇编语言编写的程序。汇编——把源程序翻译成机器语言程序的过程。汇编程序——完成汇编任务的程序。2汇编语言语句三种基本语句:指令语句(指令性语句):在汇编时产生一个目标代码。伪指令语句(指示性语句):无目标代码,为汇编程序服务。宏指令语句3编辑文本编辑器,如EDIT.COM连接连接
2、程序,如LINK.EXE调试调试程序,如DEBUG.EXE应用程序错误错误源程序:文件名.asm目标模块:文件名.obj可执行文件:文件名.exe汇编汇编程序,如MASM.EXE错误错误错误1.汇编语言程序的开发过程42.汇编语言源程序格式.MODELSMALL.STACK256.DATAMDB30HNDB20HPDB40H.CODE.STARTUPMOVBL,MMOVAL,BLSUBAL,NADDAL,P.EXIT0ENDep11)简化格式(.EXE)例:计算M-N+P5例:显示10行HELLODATASEGMENTMESGDB'HELLO!',0A
3、H,0DH,'$'DATAENDSSTACKSEGMENTSTACKDB100DUP(?)STACKENDSCODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACKBEG:MOVAX,STACKMOVSS,AXMOVSP,1002)完整格式1(.EXE)6MOVAX,DATAMOVDS,AXMOVCX,10LAST:MOVAH,9MOVDX,OFFSETMESGINT21HLOOPLASTMOVAH,4CHINT21HCODEENDSENDBEGep273)完整格式2(.EXE)例:计算100+99+98+…+2+1datas
4、egmentsumdw?dataendscodesegmentmainprocfarassumecs:code,ds:datapushdssubax,axpushaxmovax,datamovds,axxorax,axmovcx,100again:addax,cxloopagainmovsum,axretmainendpcodeendsendmainep384)简化格式(.COM).modeltiny;微型存储模式.code;只有代码段.startup;程序起始点=ORG100Hmovdx,offsetstringmovah,9;显示信息int21hm
5、ovah,01h;等待按键int21hmovah,02h;响铃movdl,07hint21h.exit0;程序结束点,返回DOSStringdb‘Pressanykeytocontinue!$’end;汇编结束Ep495)完整格式(.COM)C_SEGSEGMENTASSUMECS:C_SEG,DS:C_SEG,ES:C_SEGORG100HBEGIN:JMPSTARTMANDB?WOMANDB?NUMDW6START:MOVCX,NUMMOVDX,0INPUT:MOVAH,1INT21H10CMPAL,'1'JZMANCNTCMPAL,'0'JZWO
6、MANCNTJMPINPUTMANCNT:INCDLJMPNEXTWOMANCNT:INCDHNEXT:LOOPINPUTMOVMAN,DLMOVWOMAN,DHMOVAH,4CHINT21HC_SEGENDSENDBEGINep5114.2汇编语言的基本语法和伪指令1.汇编语言的基本语法1)标号与变量标号:是一条指令语句的符号地址。可作为转移类指令的操作数,即转移地址。变量:存放在某些存储单元中的值。12①段属性标号和变量对应存储单元的段地址②偏移属性标号和变量对应存储单元的偏移地址③类型属性标号的类型可以是NEAR和FAR,分别表示段内或段间变量的
7、类型可以是BYTE、WORD和DWORD等地址属性标号和变量具有三种属性13变量、标号的命名一般最多由31个字母、数字及规定的特殊符号(.、_、$、?、@)组成,不能以数字开头.只能位于名字首$、?不能单独作为名字不区别标识符中的字母大小写不能使用汇编语言的保留字14保留字保留字(ReservedWord)是汇编程序已经利用的标识符,主要有:指令助记符——例如:MOV、ADD伪指令助记符——例如:DB、EQU运算符——例如:OFFSET、PTR寄存器名——例如:AX、CS预定义符号——例如:@data152)常数常数表示一个固定的数值数值常数字符串常数
8、用引号括起来的单个字符或多个字符,其数值是每个字符对应的ASCII码的值。符号常数利用一个标