




已阅读5页,还剩61页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
.,1,第五章汇编语言程序设计,.,2,掌握:汇编语言程序中符号、数据、段结构和过程等的定义方法。掌握:汇编语言程序中段寄存器的各种加载方法。掌握:无条件转移指令、条件转移指令、循环控制指令、子程序的调用指令和返回指令的格式与使用。掌握:顺序、分支、循环和子程序结构的程序设计方法与技术。理解:汇编语言程序中三种语句的格式、特点和作用。理解:汇编语言程序中使用的各种运算符,对常用的运算符应会正确使用。理解:在数值运算、串操作运算和代码转换中程序设计实例。了解:宏定义的定义和使用。,学习目标:,.,3,第五章的内容,5.1概述5.2汇编语言语句5.3汇编语言数据5.4伪指令语句5.5宏指令语句5.6顺序程序设计,5.7分枝程序设计5.8循环程序设计5.9自程序设计5.10实用程序设计示例5.11汇编语言程序的开发,.,4,5.1概述,例5-1A+BS=CA-B,.,5,.,6,.,7,5.2汇编语言语句-(本节内容),伪指令和指令的通用格式均由四个字段组成:名字操作符操作数;4.注释,.,8,5.2汇编语言语句-(本节内容),各字段说明:1.名字字段(NameField)131名字字段的三个注意事项开头2.操作符字段(OperatorField)保留字3.操作数字段(OperandField)4.注释字段(CommentField),.,9,5.3汇编语言数据-(本节内容),5.3.1符号定义语句5.3.2数据定义语句5.3.3数据5.3.4运算符,.,10,5.3汇编语言数据5.3.1符号定义语句1,1.等值伪指令符号EQU表达式/符号(1)常数表达式(2)地址表达式(3)变量名、标号、或指令助记符的化名2.等号伪指令符号=表达式/符号(1)将符号重新定义(2)除指令外将变量名或标号起化名,.,11,5.3.1符号定义语句,3.符号定义伪指令基本形式:符号名EQU表达式符号名=常数表达式功能:给表达式指定一个等价的符号名。说明:(1)=后的表达式只能是常数,对于字符或字符串,汇编时按整数处理。例如:COUNT=20MOVCX,COUNT;等价于MOVCX,20(2)EQU后的表达式可以是数值、字符串、寄存器名、指令助记符等。(3)EQU不能重复定义,而=可重复定义,其作用域从定义点到重新定义之前。,.,12,5.3汇编语言数据5.3.1符号定义语句2,1.等值伪指令符号EQU表达式/符号2.等号伪指令符号=表达式/符号上述两者之间的区别:1.等号伪指令可以重新定义符号2.等号伪指令不可以重新定义汇编指令,EQU可以。,.,13,5.3汇编语言数据5.3.2数据定义语句,变量定义伪指令变量定义伪指令用来为数据分配内存空间,并设置相应内存单元的初始值。形式:变量名变量定义符操作数,操作数其中,变量名是一个符号地址,表示其后操作数的首地址,变量名为可选项,给出变量名只是为了按名存取其对应的内存单元。,.,14,5.3汇编语言数据5.3.2数据定义语句,变量定义符主要包括下列几种:DB(DefineByte):定义字节,后面的每个操作数占1个字节。DW(DefineWord):定义字,后面的每个操作数占1个字。DD(DefineDword):定义双字,后面的每个操作数占2个字。,.,15,5.3汇编语言数据5.3.2数据定义语句,操作数可以是常数、用EQU或=定义的符号常量、表达式、?和DUP子句等。其中,?表示只保留内存空间,未定义初始值。DUP子句的格式为:重复次数DUP(操作数,操作数),.,16,5.3汇编语言数据-5.3.2数据定义语句,段属性变量的三个属性:偏移量属性类型属性1.数值表达式表达式的类型:2.?表达式3.字符串表达式4.带DUP的表达式,.,17,5.3.2数据定义语句-表达式使用1,1.数值表达式例:ageDB50age1DB12H,34H,56Hdata1DW1234H,2345Hdata2DD4567H,6789H,.,18,5.3.2数据定义语句-表达式使用2,2.?表达式例:ageDB?age1DB?,?,?data1DW?,?data2DD?,?,.,19,5.3.2数据定义语句-表达式使用3,3.字符串表达式(DB256,DW/DD12个)例:name1DBabcdefname2DBzhang,wang,liname3DWto,jename4DDma,le,.,20,5.3.2数据定义语句-表达式使用4,4.带DUP表达式例:DB变量名DW表达式1DUP(表达式2)DDDUP可以嵌套,.,21,5.3汇编语言数据-5.3.3数据1,1.数值常数二、八、十、十六进制2.字符常数(1)立即数常数的应用(2)位移量(3)伪指令的赋值,一、常数,.,22,5.3汇编语言数据-5.3.3数据2,二、寄存器操作数:通用寄存器和段寄存器的内容三、存贮器操作数:存贮单元中的内容1.变量(1)变量名地址(2)变量的地址变量名DW/DD另个变量名此时存的是地址,.,23,5.3汇编语言数据-5.3.3数据3,2.标号(1)段属性标号的三个属性(2)偏移量属性near(3)类型属性far类型属性可以用label来设置,如果不设置的话,有默认属性,.,24,5.3汇编语言数据-5.3.3数据4,Label的使用a.与指令语句连用例:sub1_FARLabelfarsub1:MOVAX,789AHb.与数据定义语句连用例:DA_W2LabelWORDDA_W1DB10HDUP(12H,34H),.,25,5.3汇编语言数据-5.3.4运算符,1.算术运算符,.,26,5.3汇编语言数据-5.3.4运算符,2.逻辑运算符,.,27,5.3汇编语言数据-5.3.4运算符,3.关系运算符,.,28,5.3汇编语言数据-5.3.4运算符,4.数值返回运算符(1)SEG和OFFSET运算符(2)TYPE运算符(3)LENGTH运算符和SIZE运算符,.,29,5.3汇编语言数据-5.3.4运算符,5.属性运算符PTR6.运算符优先级,.,30,5.4.1段定义语句一、段定义伪指令,段定义由SEGMENT与ENDS伪指令实现,基本形式如下:段名SEGMENTSTACKUSE16段名ENDS其中,STACK仅用于堆栈段。USE16指出使用16位段。在实模式下,只能使用16位段,而32位段只能用于保护模式程序。在实模式下,如果要使用32位指令,还必须在段定义时给出USE16。段名作为操作数出现在指令中时,MASM将其视为立即数,表示段地址。,.,31,5.4.1段定义语句1.段名(必须有)2.定位类型,1.PAGE2.PARA3.WORD4.BYTE,.,32,5.4.1段定义语句3.组合类型,1.NONE(默认)2.PUBLIC3.COMMON4.STACK5.AT表达式6.MEMORY,.,33,5.4.1段定义语句4.类别名,必须用单引号括起来,在连接处理时,LINK把类别名相同的段放在连续的存储区,他们仍是各自独立的段,.,34,5.4.1段定义语句二、段寻址伪指令,格式:ASSUME段寄存器名:段名,段寄存器名:段名.ASSUME段寄存器名:nothing,ASSUMEnothing,.,35,5.4.1段定义语句三、段寄存器的加载,1.DS和ES的加载:借助通用寄存器传送段基值给DS和ES2.SS的加载3.CS的加载(1)END加载起始地址(2)JMP、CALL、RET指令,(1)自动加载(2)执行程序,.,36,5.4.2过程定义语句,使用格式(构造子程序)过程名PROCNEAR/FARRET.过程名ENDP,.,37,5.4.3定位语句和位置计数器,使用格式(记载汇编时的当前偏移量)ORG表达式,.,38,5.4.4偶地址控制语句,使用格式:EVEN把位置计数器调整为偶数,.,39,5.4.5程序标题语句P193,使用格式Title文本列表文件的每一页的第一行都显示这个标题,.,40,5.5宏指令语句(内容),1.宏定义2.宏调用3.宏展开,.,41,5.6顺序程序设计-例5-2(1),10*(X+Y)-3*(Z-1)F=X+Y+Z,.,42,5.6顺序程序设计-例5-2(2),TITLEEXAMPLEPROGRAMDATASEGMENTVARXDW123HVARYDW456HVARZDW789HF1DW?F2DW?DATAENDS,.,43,5.6顺序程序设计-例5-2(3),STACK1SEGMENTDW20HDUP(0)STACK1ENDS,.,44,5.6顺序程序设计-例5-2(4),CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1BEGIN:MOVAX,DATAMOVDS,AX,.,45,5.6顺序程序设计-例5-2(5),MOVAX,VARXADDAX,VARYMOVBX,10MULBXMOVBX,VARZDECBXMOVCX,BXSALBX,1ADDBX,CXSUBAX,BX,.,46,5.6顺序程序设计-例5-2(6),MOVBX,VARXADDBX,VARYADDBX,VARZXORDX,DXDIVBXMOVF1,AXMOVF2,DXMOVAH,4CHINT21HCODEENDSENDBEGIN,软中断INT21H,.,47,5.6顺序程序设计-两种退出用户程序的办法,CODESEGMENTASSUMECS:CODE,DS:DATA,SS:STACK1PROC1PROCFARPUSHDSXORAX,AXPUSHAXMOVAX,DATAMOVDS,AXRETCODEENDSENDPROC1,.,48,5.6顺序程序设计-例5-3(1),TITLETABLELOOK_UPDATASEGMENTTABLEDB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HHEXDB4ASCIDB?DATAENDS,.,49,5.6顺序程序设计-例5-3(2),STACK1SEGMENTPARASTACKDW20HDUP(0)STACK1ENDS,.,50,5.6顺序程序设计-例5-3(3),CODESEGMENTASSUMECS:CODE,DS:DATABEGIN:MOVAX,DATAMOVDS,AXMOVBX,OFFSETTABLEADDBL,HEXMOVAL,BXMOVASCI,AL,.,51,5.6顺序程序设计-例5-3(4),MOVAH,4CHINT21HCODEENDSENDBEGINXLAT指令:XLAT表首址或XLAT默认bx,al两寄存器,.,52,5.6顺序程序设计-例5-3(5),BEGIN:MOVAX,DATAMOVDS,AXLEABX,TABLEMOVAL,HEXXLATTABLEMOVASCI,ALMOVAH,4CHINT21H,.,53,5.7分支程序设计5.7.1转移指令(1),5.7.1转移指令一、无条件转移指令JMP目标1.直接寻址方式2.间接寻址方式,.,54,5.7分支程序设计5.7.1转移指令(2),1.直接寻址方式(段内转移),.,55,5.7分支程序设计5.7.1转移指令(3),1.直接寻址方式(段间转移),.,56,5.7分支程序设计5.7.1转移指令(4),2.间接寻址方式a.段内转移(间接)例:JMPCXJMPWORDPTRBXb.段间转移(间接)JMPDWORDPTRBX,.,57,5.7分支程序设计5.7.1转移指令(4),5.7.1转移指令二、条件转移指令1.简单条件转移指令2.无符号数条件转移指令3.带符号数条件转移指令,.,58,5.7分支程序设计5.7.1转移指令(5),1.简单条件转移指令,.,59,5.7分支程序设计5.7.1转移指令(6),2.无符号数条件转移指
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030中国移动式液压设备行业市场发展趋势与前景展望战略研究报告
- 2025-2030中国科技餐饮行业营销策略与竞争格局分析研究报告
- 2025-2030中国眼霜行业市场发展分析及前景预测与投资发展战略研究报告
- 2025-2030中国直缝焊管行业市场深度分析及发展前景与投资机会研究报告
- 2025年考勤仪项目可行性研究报告
- 2025年网袋式回火炉项目可行性研究报告
- 2025-2030中国电疗器械市场发展分析及市场趋势与投资方向研究报告
- 2025-2030中国电池电动自行车行业市场发展趋势与前景展望战略研究报告
- 2025工厂职工安全培训考试试题【轻巧夺冠】
- 2025承包商入厂安全培训考试试题(5A)
- 2024年北京稻香村招聘考试真题
- 2025年4月自考15044马克思主义基本原理概论押题及答案
- 代办转学合同范例
- 高中主题班会 高一下学期《自律自主自觉-成就更好的自己》主题班会教案
- 猎头公司简介介绍
- 2025年ACR痛风管理指南
- 智能建筑 停车场管理系统安装及验收规范
- 2025年开封大学单招职业倾向性测试题库附答案
- GB/T 45233-2025化工园区安全风险评估导则
- 广东省汕头市2025年普通高考第一次模拟考试生物学试题(含答案)
- AIGC赋能常微分方程课程混合式教学模式改革
评论
0/150
提交评论