首页 汇编语言程序设计基础

汇编语言程序设计基础

举报
开通vip

汇编语言程序设计基础第4章汇编语言程序设计基础1.教学目的:掌握微型汇编语言格式和程序设计方法2.教学要求:1熟悉汇编语言程序的结构、语句类型和格式。2熟悉数据项及表达式,要求能明确区分标号和变量。3熟悉各类伪指令,要求掌握常用伪指令格式和应用。3.教学重点:①指令语句格式和伪指令语句格式②汇编语言程序格式。4.掌握难点:①伪指令②伪指令存储器分配技术5.教学进程安排:P102~1336.教学方法:课堂讲授7.教学内容摘要:4.1汇编语言语句格式4.1.1程序格式4.1.2语句格式指令语句和伪指令语句的格式是类似的,格式如下:[名字]...

汇编语言程序设计基础
第4章汇编语言程序设计基础1.教学目的:掌握微型汇编语言格式和程序设计方法2.教学要求:1熟悉汇编语言程序的结构、语句类型和格式。2熟悉数据项及 关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf 达式,要求能明确区分标号和变量。3熟悉各类伪指令,要求掌握常用伪指令格式和应用。3.教学重点:①指令语句格式和伪指令语句格式②汇编语言程序格式。4.掌握难点:①伪指令②伪指令存储器分配技术5.教学进程安排:P102~1336.教学方法:课堂讲授7.教学 内容 财务内部控制制度的内容财务内部控制制度的内容人员招聘与配置的内容项目成本控制的内容消防安全演练内容 摘要:4.1汇编语言语句格式4.1.1程序格式4.1.2语句格式指令语句和伪指令语句的格式是类似的,格式如下:[名字]操作码操作数[;注释]1.名字⑴名字的标识符⑵名字的定义规则⑶名字的2种主要形式①标号属性:段属性:标号所在的段地址,即CS的内容。偏移属性:标号在代码段的偏移地址。类型属性:段内Near或者段间Far②变量属性:段属性:变量名所在的段地址,DS,ES或SS偏移属性:变量名的偏移地址。类型属性:字节DB,字DW或者双字DD2.操作码3.操作数⑴常数⑵表达式①算术运算符②逻辑运算符③关系运算符4.注释项4.2伪指令机器指令:程序运行期间由计算机来执行。伪操作(伪指令):在汇编程序(MASM)对源程序汇编期间由汇编程序处理的操作。4.2.1表达式赋值伪操作1.等值伪指令EQU格式:<符号名>EQU<表达式>2.等号伪指令=EMP=7EMP=EMP+13.解除定义伪指令PURGE格式:PURGE<符号1,符号2,…,符号N>注:①EQU:表达式名不允许重复定义;②=:允许重复定义。4.2.2定义数据的伪指令[变量]助记符操作数,…,操作数[;注释]功能:为操作数分配存储单元,并用变量与存储单元建立联系。DB、DW、DD、DQ、DT【例4-2】操作数可以是常数,或者是表达式(根据该表达式可以求得一个常数),如DATA_BYTEDB10,4,10HDATA_WORDDW100,100H,-5图4.1例4-2的汇编结果DATA_DWDD3C,OFFFDH汇编程序可以在汇编期间在存储器中存入数据,汇编后的内存分布如图4.1所示。【例4-3】操作数也可以是字符串,如:MESSAGEDB‘HELLO’则存储器存储情况如图4.2⑴所示,而DB‘AB’和DW‘AB’的存储情况则分别如图4.2⑵和⑶所示。【例4-4】操作数?可以保留存储空间,但不存入数据。如:ABCDB0,?,?,0DEFDW?,52,?经汇编后的存储情况如图4.3所示。图4.2例4-3的汇编结果【例4-5】使用DUP实现重复定义ARRAY1DB2DUP(0,1,2,?)ARRAY2DB100DUP(?)汇编后的存储情况如图4.4所示。由图可见,例4-5中的第一个语句和语句ARRAY1DB0,1,2,?,0,1,2,?是等价的。图4.3例4-4的汇编结果图4.4例4-5的汇编结果4.2.3定义程序开始和结束的伪指令在程序的开始可以用NAME或TITLE作为模块的名字。1、NAMEmodule_name说明:汇编程序将以给出的module_name作为模块的名字。2、TITLEtext说明:指定列表文件的每一页上打印的标 快递公司问题件快递公司问题件货款处理关于圆的周长面积重点题型关于解方程组的题及答案关于南海问题 注:①如程序中没使用NAME伪操作,则汇编程序将用text(最多可有60个字符)中的前6个字符作为模块名;②如程序中即无NAME又无TITLE伪操作,则将用源文件名作为模块名。3、END[label]说明:源程序结束伪操作。注:①label指示程序开始执行的起始地址;②如多个程序模块相连,则只有主程序要使用标号,其它子程序只用END而不必指定标号。4、MASM6.0版的汇编程序增加了定义程序的入口点和出口点的伪操作.STARTUP:定义程序的初始入口点,并且产生设置DS,SS和SP的代码。.EXIT:用来产生退出程序并返回操作系统的代码,格式:格式:EXIT[return_value]return_value:返回给操作系统的值,常用0。.END:程序结束伪操作(省略了标号label)。4.2.4指令集选择伪指令.8086选择8086指令系统.286选择80286指令系统.286P选择保护方式下的80286指令系统4.2.5地址计数器与对准伪操作1.地址计数器$JNE$+6【例4-6】$用法示例ARRAYDW1,2,$+4,3,4,$+4如汇编时ARRAY分配的偏移地址为0074,则汇编后的存储区将如图4.5所示。注意:ARRAY数组中的两个$+4得到的结果是不同的,这是图4.5例4-6的汇编结果由于$的值是在不断变化的缘故。当在指令中用到$时,它只代表该指令的首地址,而与$本身所在的字节无关。2.ORG伪操作ORG伪操作用来设置当前地址计数器的值,其格式为:ORGCONSTANTEXPRESSION3.EVEN伪操作4.ALIGN伪操作ALIGN伪操作为保证双字类型数组边界从4的倍数开始创造了条件,其格式为:ALIGNBOUNDARY其中BOUNDARY必须是2的幂,例如:.DATA┇ALIGN4ARRAYDB100DUP(?)┇就可保证ARRAY的值为4的倍数。当然,ALIGN2和EVEN是等价的。4.2.6基数控制伪指令.RADIXEXPRESSION4.2.7过程定义伪指令可把具有独立功能的程序段定义为过程,供其它程序调用。过程定义的语法格式为:<过程名>PROCNEAR/FAR┇RET┇<过程名>ENDP4.3汇编语言源程序格式汇编语言语句格式:[name]operationoperand[;comment]·name:名字项,是一个符号,可以是标号或变量;·operation:操作项,可以是指令,伪操作或宏指令名;·operand:操作数;·comment:注释,用来说明语句的功能。4.3.1名字项可以是标号或变量,用来说明本语句的符号地址,例3.76,P92。可用下列字符来表示名字:A~Z,0~9,?,.,@,-,$注:①第一个字母不可以是数字;②如用到‘.’,则必须是第一个字符;③可用很多字符,但只有前31个字符被识别。(1)标号:在代码段中定义,后面跟‘:’,也可以用LABEL或EQU来定义(还可以作为过程名来定义,第六章),经常在转移指令或CALL指令指令的操作数字段出现,用以表示转向地址。标号有三种属性:段、偏移及类型:①段属性:定义标号的段起始地址,此值必须在一个段寄存器中,标号的段总是在CS寄存器中。②偏移属性:从段起始地址到定义标号的位置之间的字节数。③类型属性:指出该标号是在本段内引用还是在其它段中引用。在段内引用,称为NEAR;在段外引用,称为FAR。(2)变量:在数据段或附加数据段中定义,也可以用LABEL或EQU伪操作来定义。标号有三种属性:段、偏移及类型:①段属性:定义变量的段起始地址,此值必须在一个段寄存器中。②偏移属性:从段起始地址到定义变量的位置之间的字节数。③类型属性:定义该变量的类型,如DB,DW,DD,DF,DQ,DT4.3.2操作项:可以是指令,伪操作或宏指令名的助记符。①指令:汇编程序将其翻译为机器语言指令;②伪操作:汇编程序将根据其所要求的功能进行处理;③宏指令:根据其定义展开(第七章)。4.3.3操作数项:可以是常数、寄存器、标号、变量或表达式。常用操作符:算术操作符、逻辑与移位操作符、关系操作符、数值回送操作符、属性操作符。(1)算术操作符:+、-、*、/、MOD(求余数)可用于数字表达式或地址表达式,用于地址表达式要注意物理意义。(2)逻辑与移位操作符:NOT,AND,OR,XOR和SHL,SHR。只能用于数字表达式。(3)关系操作符:EQ(相等)、NE(不等)、LT(小于)、GT(大于)、LE(小于或等于)、GE(大于或等于).①关系操作符的两个操作数必须都是数字,或是同一段内的两个存储器地址;②计算的结果为逻辑值,结果为真,表示为:0FFFFH;结果为假,表示为:0。(4)数值回送操作符主要有:TYPE,LENGTH,SIZE,OFFSET,SEG等。①TYPE格式:TYPEexpression说明:①如表达式是变量,则回送该变量的类型,以字节数表示:DB为1,DW为2,DD为4,DQ为8,DT为10;②如表达式是标号,则回送代表该标号类型的数值,NEAR为-1,FAR为-2;③如表达式是常数,则回送0。例:ARRAYDW1,2,3ADDSI,TYPEARRAY等价于:ADDSI,2②LENGTH格式:LENGTHVariable说明:①如变量中使用DUP,则回送分配给该变量的单元数;②其它回送1。例:FEESDW100DUP(0)ARRAYDW1,2,3MOVCX,LENGTHFEESMOVDX,LENGTHARRAYMOVCX,100MOVDX,1③SIZE格式:SIZEVariable说明:回送值是:LENGTH值*TYPE值例:MOVAX,SIZEFEESMOVBX,SIZEARRAYMOVAX,200MOVBX,2④OFFSET:回送偏移地址。(5)属性操作符主要有:PTR、段操作符、SHORT、THIS、HIGH、LOW、HIGHWORD、LOWWORD等。①PTR:给已分配的存储地址赋予另一种属性。格式:typePTRexpression注:type-BYTE、WORD、DWORD、FWORD、QWORD、TBYTE、NEAR、FAR等。例:OPERDW1234H,5678HMOVAL,BYTEPTROPERMOVAH,BYTEPTROPER+1②段操作符:用来表示标量、变量或地址表达式的段属性.例:MOVAX,ES:[BX+SI]③SHORT:用来修饰JMP指令中转向地址的属性,指出转向地址是下一条指令地址的±127个字节范围内。④THIS使操作数的段地址和偏移地址与下一个存储单元相同。格式:THISattribute或type说明:attribute或type-BYTE、WORD、DWORD、FWORD、QWORD、TBYTE、NEAR、FAR等。例:FIRSTEQUTHISBYTESECONDDW100DUP(?)⑥HIGH和LOW称为字节分离操作符,HIGH取其高位字节,LOW取其低位字节。例:CONSTEQU0ABCDHMOVAH,HIGHCONSTMOVAL,LOWCONST⑥HIGHWORD和LOWWORD(MASM6版本支持)称为字分离操作符,HIGHWORD取齐高位字,LOWWORD取其低位字。4.3.4注释项用“;”标识注:COM程序只能有一个代码段,段内可以用DB或DW定义变量。8.参考资料:《IBM-PC汇编语言程序设计》沈美明9.作业:P155习题410.总结:该部分为汇编编程基础知识,需熟记和掌握。0A041064000001FBFF3C000000FDFF0000DATA_BYTEDATA_WORDDATA_DW10d410h100d60d0FFFDh-5100hMESSAGE48454C4C4F41424241HELLOABBA⑴字符串的存储⑵DB‘AB’⑶DW‘AB’100个字节00--00--3400--ABCDEF52d000102-000102--┇-ARRAY1ARRAY2ARRAY010002007C000300040082000074等价于
本文档为【汇编语言程序设计基础】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
个人认证用户
xxj7584
暂无简介~
格式:doc
大小:292KB
软件:Word
页数:0
分类:
上传时间:2020-07-07
浏览量:0