(2.2)--03:第二章汇编语言.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《(2.2)--03:第二章汇编语言.pdf》由会员分享,可在线阅读,更多相关《(2.2)--03:第二章汇编语言.pdf(45页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第二章基础知识知识点一:汇编内存寻址方式知识点二:汇编主要指令知识点三:汇编函数调用示例学习之前,回顾两个问题通过寄存器、汇编,看看写的VC程序是如何工作的?函数调用的四个步骤参数入栈返回地址入栈代码区跳转栈帧调整常见寄存器ESPEBP EIP IREAXEBXECXEDX ESIEDI 三个标志寄存器:ZF(零标志)、OF(溢出标志)、CF(进位标志)。知识点一:汇编寻址方式寻址方式就是处理器根据指令中给出的地址信息来寻找有效地址的方式,是确定本条指令的数据地址以及下一条要执行的指令地址的方法。在存储器中,操作数或指令字写入或读出的方式,有地址指定方式、堆栈存取方式等。几乎所有的计算机,在内
2、存中都采用地址指定方式。当采用地址指定方式时,形成操作数或指令地址的方式称为寻址方式。指令的寻址方式有以下两种。顺序寻址方式。由于指令地址在内存中按顺序安排,当执行一段程序时,通常是一条指令接一条指令地顺序进行。也就是说,从存储器取出第1条指令,然后执行这条指令;接着从存储器取出第2条指令,再执行第二条指令;接着再取出第3条指令。这种程序顺序执行的过程,称为指令的顺序寻址方式。指令寻址通常,需要使用指令计数器来完成顺序指令寻址。指令计数器是计算机处理器中的一个包含当前正在执行指令地址的寄存器,在X86架构中称为指令指针IP(Instruction Pointer)寄存器,在ARM或C51架构中
3、也称为程序计数器(PC)。每执行完一条指令时,指令计数器中的地址或自动加1或由转移指针给出下一条指令的地址。指令寻址跳跃寻址方式。当程序转移执行的顺序时,指令的寻址就采取跳跃寻址方式。所谓跳跃,是指下条指令的地址码不是由程序计数器给出,而是由本条指令给出。注意,程序跳跃后,按新的指令地址开始顺序执行。因此,程序计数器的内容也必须相应改变,以便及时跟踪新的指令地址。采用指令跳跃寻址方式,可以实现程序转移或构成循环程序,从而能缩短程序长度,或将某些程序作为公共程序引用。指令系统中的各种条件转移或无条件转移指令,就是为了实现指令的跳跃寻址而设置的。注意跳跃的结果是当前指令修改PC程序计数器的值,所以
4、下一条指令仍是通过程序计数器PC给出。指令寻址聊聊你对指令指针寄存器和程序计数器的认识?作答正常使用主观题需2.0以上版本雨课堂主观题10分为了便于解释,使用汇编语言MOV指令,其用法为MOV 目的操作数,源操作数表示将一个数据从源地址传送到目标地址。操作数寻址形成操作数的有效地址的方法称为操作数的寻址方式。由于大型机、小型机、微型机和单片机结构不同,从而形成了各种不同的操作数寻址方式。立即寻址指令的地址字段给出的不是操作数的地址,而是操作数本身,这种寻址方式称为立即寻址。立即寻址方式的特点是指令执行时间很短,因为它不需要访问内存取数,从而节省了访问内存的时间。如:MOV CL,05H操作数寻
5、址表示将05H这个数值存储到CL寄存器中。直接寻址直接寻址是一种基本的寻址方法,其特点是在指令中直接给出操作数的有效地址。由于操作数的地址直接给出而不需要经过某种变换,所以称这种寻址方式为直接寻址方式。如:MOV AL,3100H操作数寻址表示将地址3100H中的数据存储到AL中注意:地址要写在括号“”,“”内。直接寻址在通常情况下,操作数存放在数据段中。所以,默认情况下操作数的物理地址由数据段寄存器 DS 中的值和指令中给出的有效地址直接形成。上述指令中,操作数的物理地址应为DS:3100H。但是如果在指令中使用段超越前缀指定使用的段,则可以从其他段中取出数据,如:MOV AL,ES:310
6、0H。如:MOV AL,3100H操作数寻址间接寻址间接寻址是相对直接寻址而言的,在间接寻址的情况下,指令地址字段中的形式地址不是操作数的真正地址,而是操作数地址的指示器,或者说此形式地址单元的内容才是操作数的有效地址。如:MOV BX,12H这是一种寄存器间接寻址,BX寄存器存操作数的偏移地址,操作数的物理地址应该是DS:BX。表示将12H这个数据存储到DS:BX中。操作数寻址如果操作数存放在寄存器中,通过指定寄存器来获取数据,则称为寄存器寻址。如:MOV BX,12H。示将12H这个数据存储到BX寄存器中。相对寻址操作数的有效地址是一个基址寄存器(BX,BP)或变址寄存器(SI,DI)的值
7、加上指令中给定的偏移量之和。如:MOV AX,DI+1234H操作数的物理地址应该是DS:DI+1234H。操作数寻址与间接寻址相比,可以认为相对寻址是在间接寻址基础上,增加了偏移量。基址变址寻址将基址寄存器的内容,加上变址寄存器的内容而形成操作数的有效地址。如:MOV EAX,EBX+ESI。操作数寻址也可以写成MOV EAX,BXSI 或MOV EAX,SIBX相对基址变址寻址在基址变址寻址方式融合相对寻址方式,即增加偏移量如:MOV EAX,EBX+ESI+1000H操作数寻址也可以写成MOV EAX,1000H BXSI例 CPU内部寄存器和存储器之间的数据传送MOV BX,AX;间接
8、寻址(16位)MOV EAX,EBX+ESI;基址变址寻址(32位)MOV AL,BLOCK;BLOCK为变量名,直接寻址(8位)操作数寻址汇编指令中MOVAX,BX+1200H采用的寻址方式是直接寻址间接寻址相对寻址基址变址寻址ABCD提交单选题1分知识点二:汇编主要指令主要指令这里对常用的部分指令进行回顾。大部分指令有两个操作符(例如:add EAX,EBX),有些是一个操作符(例如:not EAX),还有一些是三个操作符(例如:IMULEAX,EDX,64)。汇编语言主要指令MOV:把源操作数送给目的操作数,其语法为:MOV 目的操作数,源操作数LEA,LDS,LES:取地址至寄存器PU
9、SHF,POPF,PUSHA,POPA:堆栈指令群XCHG:交换两个操作数的数据PUSH,POP:把操作数压入或取出堆栈数据传送指令MOV语法:语法:MOV 目的操作数目的操作数,源操作数源操作数mov al,3100H;表示将3100H中的数值写入AL寄存器LEA 语法:语法:LEA 目的目的数数,源源数数将有效地址传送到指定的寄存器将有效地址传送到指定的寄存器lea eax,dword ptr 4*ecx+ebx 源数为”dword ptr 4*ecx+ebx”,即地址为4*ecx+ebx里的数值,dword ptr是告诉地址里的数值是一个dword型数据。上述lea语句则是将源数的地址4
10、*ecx+ebx赋值给eax。汇编语言主要指令AND,OR,XOR,NOT,TEST:执行BIT与BIT之间的逻辑运算ROR,ROL,RCR,RCL:循环移位指令SHR,SHL,SAR,SAL:移位指令AND(逻辑与逻辑与)语法语法:AND 目标数目标数,原数原数AND运算对两个数进行逻辑与运算运算对两个数进行逻辑与运算(当且仅当两操作数对应位都为“1”时结果的相应位为“1”,否则结果相应位为“0”),目标数=目标数AND 原数。AND指令会清空指令会清空OF、CF标记,设置标记,设置ZF标记标记算数运算指令ADD,ADC加法指令SUB,SBB减法指令INC,DEC把OP的值加一或减一NEG
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 2.2 03 第二 汇编语言
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内