- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
汇编第3章-汇编语言程序设计
第三章 汇编语言和高级语言一样,其程序结构也具有三种结构形式,即顺序程序、分支程序和循环程序。本章主要介绍这三种结构程序的设计,并通过一些案例说明其应用。 3.1 顺序程序设计 3.1 顺序程序设计 顺序程序的特点是程序的顺序执行,即按照程序中汇编语言指令语句的自然顺序,由程序开始逐条顺序地执行直至程序结束为止。在程序执行期间,无转移、无分支、无循环、无子程序调用等结构形式。 3.1.1 基本指令 按指令按各自的功能分类,有数据传送类、算术运算类、逻辑运算类、跳转类、移位类等等。 本书并不按指令的分类情况逐一介绍和系统介绍,而是由简到繁,由常用的到不常用的,并与应用案例穿插在一起讲解。 当读完本书之后,读者需要把书后的附录“8086指令系统”通读一遍,对所有指令有一个整体印象。 1. MOV指令 【指令格式】 MOV D,S 【功能】把源操作数S所指操作数传送到目的操作数D所指示的位置。传送结果源操作数S的值保持不变。 这是一种典型的双操作数指令,D称为目的操作数,S称为源操作数。这条指令一般用于对某个寄存器或内存单元进行赋值,与高级语言中的赋值语句大致相当,两者的一个重要区别在于,高级语言中的赋值语句有计算能力而MOV指令没有。 2. ADD指令 【指令格式】ADD D,S 【功能】把目的操作数D与源操作数S相加,结果放入目的操作数D中。加法运算不改变源操作数S的值。 该指令将根据运算结果设置标志寄存器中的各条件标志位,具体设置方法见3.2.1 ADD指令是一条双操作数指令,用于把两个操作数相加。 在汇编语言中,涉及到有关寄存器或内存中存放的数据的计算时,不能像高级语言那样写一个简明的表达式就可以了,也没有任何内部函数,而必须一步步写出计算的过程,这是汇编语言程序篇幅很长的一个原因。 【例3-1】设AX=3AF7H,试确定指令ADD AL,AH执行后AX的值。 3. SUB指令 【指令格式】SUB D,S 【功能】用目的操作数D作为被减数,源操作数S作为减数,把两者相减的差送回目的操作数D中。运算不改变源操作数S的值。 减法指令在语法上的规则与ADD指令完全相同。另外有一点需要强调,如果出现两数相减而不够减时,会自动向前借位,借位情况将反映到CF标志位上。如果运算本身超出范围,则结果会有偏差。这并不是计算的错误,而是受运算位数的限制。 【例3-2】设AX=3AF7H,试确定指令SUB AH,AL执行后AX的值。 【解】根据SUB指令的功能, 有:3AH-0F7H=43H 运算中有借位,结果AX的值是43F7H。 如果把操作数当无符号数,则相当于58-247,而结果是67。这个结果显然与正确值是有偏差的,产生这一现象的原因是,作为无符号数58减247本身就不够减,这一现象会在标志位上有所反映。 如果把操作数当带符号数,则相当于(+58)-(-9)=(+67)。 4. MUL指令 【指令格式】MUL S 【功能】完成无符号数的乘法运算。根据操作数S的类型分两种情况:如果S是字节型,则把AL的值与S相乘,16位的积放到AX中,AH放积的高8位,AL放积的低8位;如果S是字型,则把AX的值与S相乘,32位的积放到DX和AX中,DX放积的高16位,AX放积的低16位。 乘法运算必须有两个乘数,MUL指令规定其中一个乘数一定放在AL或AX中,积的存放位置也是由指令本身确定。 这种由指令本身限定必须使用的操作数称为隐含操作数。乘法的另一乘数则需要在指令中用操作数的形式指明。 【例3-3】设变量buf是字节型,试判断下列乘法指令在语法上是否正确。 (1) MUL AL ;正确 (2) MUL AX ;正确 (3) MUL [buf];正确 (4) MUL CS:[buf+BX] ;正确 (5) MUL WORD PTR [buf];正确 (6) MUL BYTE PTR [BP+DI];正确 (7) MUL DS ;错误 (8) MUL 1024H ;错误 (9) MUL [BX] ;错误 ⑽ MUL AX, BX ;错误 5. DIV指令 【指令格式】DIV S 【功能】完成无符号数的除法运算。根据S的类型分两种情况:如果S是字节型,则用AX的值作为被除数,S作为除数,运算结果:字节型的商放到AL中,字节型的余数放到AH中;如果S是字型,则DX、AX组成32位的被除数,S作为除数,计算结果:字型的商放到AX中,字型的余数放到DX中。 与乘法指令类似,DIV指令也限定了隐含的操作数,包括被除数和结果的存放位置。 在除法运算中,存放除数、商和余数的位数相等,而被除数的位数是它们的两倍,这就有可能存在商不够放的情况。下面的例3.4的最后一个小题就有这样的问题。 【例
您可能关注的文档
最近下载
- 教师资格证初中数学教案汇总.pdf VIP
- 海外留学生体育活动参与情况与身体素质的研究教学研究课题报告.docx
- 教科版新版科学三年级上册《8.天气的影响》教案.docx VIP
- 如何设计护理研究方案.pptx VIP
- 英语演讲技巧与实践 课件 Chapter1 Understanding Public Speaking.pptx
- 低空与低空经济分析与研究.pptx VIP
- 成长英语教师用书 进阶篇PPTUnit 7.pptx VIP
- 农村宅基地培训.pptx VIP
- 变电站设备巡视检查及验收培训课件[1].ppt VIP
- 《保险基础与实务》(徐昆第4版) 课件 第二章 保险原则与保险合同.pptx
文档评论(0)