




已阅读5页,还剩67页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1,第4章汇编语言程序设计,2,主要内容,汇编语言源程序的结构汇编语言语句格式伪指令功能调用汇编语言程序设计,3,4.1汇编语言源程序,了解:汇编语言源程序的结构汇编语言语句类型及格式,4,一、汇编语言源程序结构,5,1.汇编语言源程序与汇编程序,汇编语言源程序汇编程序,用助记符编写,汇编程序,汇编语言源程序,机器语言目标程序,源程序的编译程序,6,2.汇编语言程序设计与执行过程,输入汇编语言源程序(EDIT)汇编(MASM)链接(LINK)调试(TD),源文件.ASM,目标文件.OBJ,可执行文件.EXE,最终程序,7,3.汇编语言源程序结构,数据段名SEGMENT数据段名ENDS附加段名SEGMENT附加段名ENDS,堆栈段名SEGMENT堆栈段名ENDS代码段名SEGMENT代码段名ENDSEND,8,二、汇编语言语句类型及格式,9,1.汇编语言语句类型,指令性语句指示性语句,CPU执行的语句,能够生成目标代码,CPU不执行,而由汇编程序执行的语句,不生成目标代码,10,2.汇编语言语句格式,指令性语句:标号:前缀助记符操作数,操作数;注释,指令的符号地址标号后要有冒号,操作码,注释前加分号,11,指示性语句格式,名字伪指令助记符操作数,操作数,;注释,变量的符号地址其后不加冒号,指示性语句中至少有一个操作数,12,3.标号、名字,标号后有冒号,在指令性语句前;名字后不加冒号,在指示性语句前。英文字母、数字及专用字符组成,最大长度不能超过31个,且不能由数字打头,不能用保留字(如寄存器名,指令助记符,伪指令)。,13,4.操作码,指令码伪指令助记符指示汇编程序要完成的操作。作用:定义变量分配存储单元指示程序开始和结束等,命令CPU要完成的操作,14,5.注释,用分号作为注释的开始;用于说明程序或语句的功能,以便于阅读和理解,15,6.操作数,寄存器存储器单元常量变量或标号表达式,16,常量,数字常量字符串常量例:AMOVAL,A例:ABCD,汇编时被译成对应的ASCII码41H,42H,43H,44H,用单引号引起的字符或字符串,17,变量,代表内存中的数据区,程序中视为存储器操作数变量的属性:变量所在段的段地址变量单元地址与段首地址之间的位移量。字节型、字型和双字型,段值,偏移量,类型,18,表达式,算术运算逻辑运算关系运算取值运算和属性运算其它运算,19,算术运算和逻辑运算符,算术运算符+,-,*,/,MOD逻辑运算符AND,OR,NOT,XOR例:MOVAL,8AND4MOVAL,8+4-1,20,关系运算符,表示关系是否成立的运算符参与关系运算的必须是两个数值关系成立,结果=FFFFH关系不成立,结果=0。运算符:EQ,NE,LT,GT,LE,GE,例:MOVAL,3LT4,21,取值运算符,取得其后变量或标号的偏移地址取得其后变量或标号的段地址,TYPE取变量的类型LENGTH取所定义存储区的长度SIZE取所定义存储区的字节数,用于分析存储器操作数的属性,OFFSET,SEG,22,取值运算符例,MOVAX,SEGDATAMOVDS,AXMOVBX,OFFSETDATALEABX,DATA,等价于,23,取值运算符例,若BUFFER存储区用如下伪指令定义:BUFFERDW200DUP(0)则:TYPEBUFFER等于2LENGTHBUFFER等于200SIZEBUFFER等于400,24,属性运算符,用于指定其后存储器操作数的类型运算符:PTR例:MOVBYTRPTRBX,12H,25,其它运算符,方括号:段重设符段寄存器名:,方括号中内容为操作数的偏移地址,用于修改默认的段基地址,26,4.2伪指令,掌握:伪指令的格式及实现的操作伪指令的应用,27,伪指令,由汇编程序执行的“指令系统”作用:定义变量;分配存储区定义逻辑段;指示程序开始和结束;定义过程等。,28,常用伪指令,数据定义伪指令符号定义伪指令段定义伪指令结束伪指令过程定义伪指令宏命令伪指令,29,一、数据定义伪指令,用于定义数据区中变量的类型及大小格式:变量名伪指令助记符操作数,;注释,表示符号地址,定义变量类型,定义变量值及区域大小,30,1.数据定义伪指令助记符,DB定义的变量为字节型DW定义的变量为字类型(双字节)DD定义的变量为双字型(4字节)DQ定义的变量为4字型(8字节)DT定义的变量为10字节型,31,数据定义伪指令例,DATA1DB11H,22H,33H,44HDATA2DW11H,22H,3344HDATA3DD11H*2,22H,33445566H,以上变量在内存中的存放形式,32,数据定义伪指令的几点说明,伪指令的性质决定所定义变量的属性;定义字符串必须用DB伪指令例:DATA1DBABCD,66H,A,B,C,D,41H,42H,43H,44H,66H,33,2.重复操作符,作用:为一个数据区的各单元设置相同的初值目的:常用于声明一个数据区格式:变量名伪指令助记符nDUP(初值,)例:BW20DUP(0),34,3.“?”的作用,表示随机值,用于预留存储空间MEM1DB34H,A,?DW20DUP(?),预留40个字节单元,每单元为随机值,随机数占1个字节单元,35,数据定义伪指令例,M1DBHowareyou?M2DW3DUP(11H),3344HDB4DUP(?)M3DB3DUP(22H,11H,?),变量在内存中的分区,36,数据定义伪指令例,M1,H,o,w,a,M2,11H,11H,00H,44H,33H,r,e,y,o,u,?,11H,00H,00H,随机数,M3,11H,22H,11H,22H,11H,22H,XX,XX,XX,XX,XX,XX,XX,37,二、符号定义伪指令,格式:符号名EQU表达式操作:用符号名取代后边的表达式,不可重新定义例:CONSTANTEQU100VAREQU30H+99H,EQU说明的表达式不占用内存空间,38,三、段定义伪指令,说明逻辑段的起始和结束;说明不同程序模块中同类逻辑段之间的联系形态,39,段定义伪指令格式,段名SEGMENT定位类型组合类型类别段名ENDS,说明逻辑段的起点,说明不同模块中同名段的组和连接方式,40,定位类型,PARA:段的起点从节边界开始(16个字节为1节)BYTE:段的起点从存储器任何地址开始WORD:段的起点从偶地址开始PAGE:段的起点从页边界开始(256个字节为1页),41,组合类型,与其它模块中的同名段在满足定位类型的前提下具有的组合方式:NONE:不组合PUBLIC:依次连接(顺序由LINK程序确定)COMMON:覆盖连接STACK:堆栈段的依次连接AT表达式:段定义在表达式值为段基的节边界MEMORY:相应段在同名段的最高地址处。,42,类别,不同模块连接时将相同类别的段放在连续的内存区域中,43,段定义伪指令例,DATASEGMENTPUBLICCODEMEM1DB11H,22HDATAENDS,44,四、设定段寄存器伪指令,说明所定义逻辑段的性质格式:ASSUME段寄存器名:段名,段寄存器名:段名,,45,五、结束伪指令,表示源程序结束格式:END标号,46,一个完整源程序结构例,DSEGSEGMENTDATA1DB1,2,DATA2DW1234HDSEGENDSESEGSEGMENTDB20DUP(?)ESEGENDSSSEGSEGMENTSTACKSTACKDB200DUP(?)SSEGENDS,47,一个完整源程序结构例,CSEGSEGMENTASSUMECS:CSEG,DS:DSEG,ES:ESEG,SS:SSEGSTART:MOVAX,DSEGMOVDS,AXMOVAX,ESEGMOVES,AXMOVAX,SSEGMOVSS,AXCSEGENDSENDSTART,源程序代码,48,六、过程定义伪指令,用于定义一个过程体格式:过程名PROCNEAR/FARRET过程名ENDP,P162例,过程入口的符号地址,49,七、宏命令伪指令,源程序中由汇编程序识别的具有独立功能的一段程序代码格式:宏命令名MACROENDM,宏体,P163例,宏,50,八、其它伪指令,段内程序代码或变量的起始偏移地址格式:ORG表达式例:ORG2000H,计算值为非负常数,ORG,51,其它伪指令,NAME-为目标程序设定一个名字格式:NAME模块名TITLE-为程序清单指定打印标题格式:TITLE标题名,可以缺省,52,4.3功能调用,DOS功能调用BIOS功能调用,53,DOS功能调用,包含多个子功能的功能包,用软中断指令调用,中断类型码固定为21H;各子功能采用功能号来区分。,附录D,54,DOS功能调用,设备管理目录管理文件管理其它,55,DOS功能调用,调用格式:MOVAH,功能号INT21H,56,一、单字符输入,调用方法:MOVAH,01INT21H输入的字符在AL中,57,单字符输入例,GET_KEY:MOVAH,1INT21HCMPAL,YJZYESCMPAL,NJZNOJNZGET_KEYYES:NO:,交互式应答程序,58,二、字符串输入,注意问题:调用格式字符输入缓冲区的定义,59,1.调用格式,功能号OAH字符串在内存中的存放地址INT21H,AH,DS:DX,60,2.定义字符缓冲区,用户自定义缓冲区格式:,0DH,N1,N2,整个缓冲区,最大可键入字符数,实际键入字符数,存放键入的字符,存放字符个数:65533,61,输入字符串程序段,DAT1DB20,?,20DUP(?)LEADX,DAT1MOVAH,0AHINT21H,在数据段中定义,62,输入缓冲区,14H,?,20个字节,定义后的输入缓冲区初始状态:,63,三、单字符显示输出,功能号O2H待输出字符INT21H,AH,DL,64,单字符显示输出例,MOVAH,02MOVDL,41HINT21H,执行结果:屏幕显示A,65,四、字符串输出显示,功能号O9H待输出字符串的偏移地址INT21H,AH,DS:DX,66,字符串输出显示,被显示的字符串必须以$结束,且所显示的内容不应出现非可见的ASCII码,67,字符串输出显示例,DATASEGMENTMESS1DBInputString:0DH,0AH,$DATAENDSCODESEGMENTMOVAH,09MOVDX,OFFSETMESS1INT21H,68,4.4汇编语言程序设计,设计步骤:根据实际问题抽象出数学模型确定算法画程序流程图分配内存工作单
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年5月四川西南石油大学考试招聘事业编制辅导员15人模拟试卷附答案详解(黄金题型)
- 2025年合肥肥西县中医院项目工作人员招聘2人考前自测高频考点模拟试题及1套完整答案详解
- 2025广东中山市沙溪镇人民政府所属事业单位招聘事业单位人员11人(教师6人)考前自测高频考点模拟试题带答案详解
- 2025广东肇庆市怀集县卫生健康局赴高校招聘卫生专业技术人员74人考前自测高频考点模拟试题附答案详解
- 2025年甘肃省张掖市市直医疗卫生单位招聘专业技术人员考前自测高频考点模拟试题及1套参考答案详解
- 2025黑龙江鸡西市博物馆现公益性岗位招聘2人模拟试卷及答案详解(有一套)
- 2025年临沂兰山区教育和体育局部分事业单位公开招聘教师(55名)考前自测高频考点模拟试题及答案详解(夺冠)
- 2025第十三届贵州人才博览会贵阳幼儿师范高等专科学校引进高层次及急需紧缺人才模拟试卷及答案详解(名师系列)
- 2025内蒙古应急管理厅选聘应急管理综合行政执法社会监督员的考前自测高频考点模拟试题及完整答案详解1套
- 2025年度上饶市广信区公安局招聘编制外聘用人员25人模拟试卷及答案详解(必刷)
- 上甘岭战役课件
- GB/T 45951-2025科技馆常设展览实施通用流程
- 新生儿硬肿症个案护理
- (2025)汽车驾驶员(技师)考试题库及答案
- 2025年全科医师转岗培训理论必刷试题库及答案
- 城市智能感知系统-洞察及研究
- 中储粮损耗管理办法
- 2025年《治安管理处罚法》新修订课件
- 【课件】有理数的加法(第1课时+有理数的加法法则)(课件)数学人教版2024七年级上册
- 透析患者血磷控制健康宣教
- 2025年江苏省苏州市中考数学模拟试卷(十三)(含答案)
评论
0/150
提交评论