汇编笔试知识点_第1页
汇编笔试知识点_第2页
汇编笔试知识点_第3页
汇编笔试知识点_第4页
汇编笔试知识点_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

一.汇编基础机器语言与汇编语言的区别:机器语言是由机器指令构成的CPU能够直接识别并执行的指令,而汇编语言由汇编指令集,伪指令集及其使用规则的统称编译型语言和解释型语言:编译型语言是解释完程序之后生成可执行的程序后,运行后不需要编译程序在场,比如C语言而解释性语言是边解释边执行,比如BASIC和脚本语言,java等汇编语言的特点:占用空间少执行速度快直接控制硬件能力强开发周围长,可移植性差,不易掌握效率更高,速度更快减小对存储空间的需求冯.诺伊曼的结构:运算器,存储器,控制器,输入设备,输出设备。具体:数据和程序都以二进制的形式不加区分的放在存储器中,存储位置由地址决定,地址码也是二进制形式计算机的组成:硬件+软。硬件组成:CPU,总线,输入输出设备,存储器;软件组成:系统软件,用户软件8086微处理器的结构图,理解掌握这里要解决20位总线和16位寄存器的冲突,方法是物理地址求和,段基址与偏移地址的组合寄存器定义:寄存器是CPU内存放操作数的地方,它的操作速度比内存操作数快BP和SP,指针寄存器,主要来访问堆栈内的存储单元;BP,可直接存取堆栈中的数据,SP只能访问栈顶内存管理模式:一个字的内容是该地址指向的字节单元与下一个单元拼接而成一个双子的内容是该地址指向的单元及其后面的3个单元拼接而成的拼接的原则:高地址存放高位内容,低地址存放低位内容段寄存器和指针寄存器的配对使用:CS与IP取指令所用的段寄存器和偏移量,串操作中目标操作数的段寄存器和偏移量一定是ES和DI,堆栈操作中段寄存器和偏移量一定是SS和SP标志寄存器就一个FLAG,6个状态标志,3个控制标志,7位保留,控制标志:IF,中断标志,IF=1则开中断,IF=0,关中断TF,陷阱标志,TF=1则单步中断DF,方向标志,在串操作数指令操作中,DF=1则自减,DF=0则自增数据表示:,二进制在后面跟B,八进制跟Q,十六进制跟H,十进制跟D,十六进制如果第一个是字母的话必须在前面加0BCD码,分为压缩和非压缩BCD码非压缩的BCD码是用一个字节表示一位十进制数,高四位为0000,低四位表示0-9压缩的BCD码是用一个字节表示两位十进制数,高四位表示十位数字,低四位表示个位数字补码的扩展问题:正数的符号扩展应该添0补足,负数应该用1补足,n位二进制数补码表示数的范围是-2^n-1<=n<=2^n-1-1浮点数的表示方法二.指令系统关于操作数单操作数指令的操作数只能是寄存器操作数或者内存操作数双操作数指令的目标操作数只能是寄存器操作数或内存操作数,而源操作数可以使三种操作数,但是2种操作数不能同时是内存操作数内存操作数的关键是找到其所在的地址,即必须找到所在段和相对段首的偏移地址即EA,然后求和得到物理地址寻址方式是重点直接寻址中,可以用变量符号代替数值地址寄存器间接寻址,依然是利用物理地址寻址,只不过地址存在寄存器里面,比如BX,SI,DI寄存器相对寻址是前2者的最一般情况,基址变址寻址方式,BX与DI,SI,BP与SI,DI相对基址变址就是多一个立即数的偏移量指令系统中所关心的有3点:一些指令的执行时间,算术运算中IDIV是最多的,其次是乘法IMUL,最快的是mov和移位指令,其次是ADD;加法指令执行时间,最慢的是立即数到存储器,其次是寄存器到存储器,最快的是寄存器到寄存器;各种寻址方式里面,最快的是寄存器间接寻址,最慢的是相对基址变址MOV指令的注意事项MOV指令时使用的最频繁的指令2种操作数不能同时是存储器,段寄存器目标操作数不能是立即数,不能是CS不能直接给段寄存器赋值,必须要通过寄存器来赋值IP不能是MOV的操作数MOV不改变FLAG中的值堆栈操作POP和PUSHPUSHCS合法但是POPCS不合法PUSH和POP操作数都不能是立即数PUSH和POP只能按字来访问堆栈,依然遵守高高低低的原则,不能按字节来访问PUSH和POP不影响标志位XCHG命令XCHG不影响标志位操作数不包括段寄存器,也不能是立即数2个操作数不能同时是存储器XLAT(查表转换指令)有2个隐藏的操作数,功能:表首是由DS:BX决定,偏移量为AL,然后取出对应字节数据放到AL中IN和OUTLAHF,将标志寄存器状态标志SF,AF,CF,PF,ZF转送到AH的对应位置,若没有的则AH的位不变;相反SAHF,是将AH的对应位值给标志位。注意,这2种操作不影响FLAG的高位,比如OF,TF,IF,DFPUSHF将整个FLAG寄存器中的内容压入栈且不影响标志寄存器,POPF是将堆栈中的内容传送到标志寄存器中,执行命令后悔使标志位发生改变LEA,取有效地址,功能一般是对BX,SI,DI赋初始值,它的源操作数是必须是16位存储器,且不影响标志位;对应的LDS/LES,则是取段寄存器地址算术运算(加减乘除),只能对整数进行操作,而不能对浮点数进行计算ADC多用于多字节加法运算,2个操作数不能同时是存储器。因为带进位CF,先做低位运算再做高位运算,注意ADC和ADD均可以作用于有符号数和无符号数(SUB和SBB注意事项差不多,只是SBB的进位表示意义其实是借位)INC,进行运算的时候视为无符号数,影响标志位,但是不影响CF(DEC一样)CMPDST,SRC表示DST-SRC,不改变值,但是改变标志位、NEGDST,对DST求反,意义是用0减去DST,影响标志位,注意CF只有当DST是0的时候为0,只要DST不为0,则CF=1加减法的有效性:CF标志位用来表示无符号数的溢出,OF来表示有符号数的溢出CF当符号位进位的时候为1,但OF只有当符号位没有进位而数据位(符号位前一位)有进位或者当符号位有进位而数据位没有进位的时候才是1(此时CF同时也是1)MUL和IMUL,只有一个显式操作数,有一个操作数是默认的,AL或者AX,如果是AL乘后的结果存放在AX里面,若为AX,则结果存到(DX),(AX)中,DX是高位,AX是低位,IMUL是有符号数的乘法DIV和IDIV,它只有一个显式的操作数,还有一个是默认的,如果除数是一个字节型的,那么被除数是AX,余数存在AH中,商存在AH中;如果是字型的则除数是(DX),(AX),除法之后,余数存在DX中,商存在AX中。这里必须注意IDIV,有符号数的除法的余数的符号与被除数相同CBW和CWD,CBW默认的操作数是AL,CWD是AX,如果最高位为0,则高位补齐0,如果最高位是1,高位补齐1(也就是全F)压缩的BCD码加减法的调整,DAA:被调整的加法内容应该存放在AL中,必须在ADC或者ADD之后(DAS也是一样)非压缩型的BCD码,AAA,AAS,AAM,AAD,其中AAD必须在除法之前调整,其他要在运算之前进行调整,且在b调整之前都必须把运算结果放在AL中,而AAD之前,AH为十位数字,AL为个位数字逻辑指令ANDDST,SRC;按位相与,结果送(DST)ORDST,SRC;按位相或,结果送(DST)XORDST,SRC;按位异或,结果送(DST)NOTOPR;对操作数按位取反TESTOPR1,OPR2;按位相与,结果影响标志位但不保存 说明:(1)NOT指令不允许使用立即数;(2)NOT指令不影响标志位,其余4条指令对CF和OF清0,影响SF、ZF、PF,对AF无定义。逻辑指令的举例,见67页PDF基本移位SHL(SAL)OPR,CNT逻辑(算术)左移CNT次,左边溢出的位数存到CF中,后面补0,如果CNT大于1,则要用寄存器存放,用CXSHROPR,CNT逻辑右移CNT次,高位用0填充,溢出的存到CF中SAR OPR,CNT算术右移CNT次,高位用符号位填充,不是0,溢出的存到CF中,因此循环移位ROLOPR,CNT循环左移CNT次,高位溢出存入CF,同时填充低位ROROPR,CNT循环右移CNT次,低位溢出存入CF,同时填充高位RCLOPR,CNT带进位循环左移CNT次,高位溢出存入CF,CF加上高位溢出的填充低位RCROPR.CNT带进位循环右移CNT次,低位溢出存入CF,CF加上低位溢出的填充高位(带进位就是加上CF的值在填充位)字符串操作,需要注意的是ES:DI,DS:SIMOVS(MOVSBMOVSW)是将【si】给【di】赋值STOS(STOSBSTOSW)是将AL或者AX的值给[DI]LODS(LODSBLODSW)是将【SI】中的值给AL或者AXCMPS(CMPSBCMPSW)影响标志位,但不保留计算结果是【di】-【si】SCAS(SACSBSCASW)影响标志位但是不保留结果,是AL或者AX减去【di】字符串前都可以加命令REP(REPE,REPNE)一些对标志位的操作HLT处理器暂停,WAIT处理器等待,总线封锁LOCK,空操作NOP定义逻辑段时,其实完整的格式是缺省的定位类型是PARA,表示段的起始地址是以字节为单位,缺省的组合类型是PRIVATE,表示本段与其他逻辑段没有关系ASSUME中NOTHING关键字表示某个段寄存器不与任何段对应END后面的语句都不会执行,一般都在最后EQU和=,=可以多次赋值,但是EQU只能对一个变量赋值简化段定义格式,考试不要求<名字>LABEL<类型>,为下一个存储单元起名字且定义类型,但是不分配存储空间固定格式,COUNT要在数据段中定义,关于返回值操作符SEG取变量或者标号的段基址,OFFSET取变量或者标号的偏移地址,TYPE是返回类型所占字节的大小(字节为1),若是标号的话,NEAR为-1,FAR为-2,LENGTH返回的是<N>DUP类型的长度N,SIZE返回的返回变量所占的字节数,只对<N>DUP定义的变量有意义关于属性操作符,不理解,有PTR等等,第三章PDF44字节分离操作符,HIGH<表达式>取高位字节,LOW<表达式>取低位字节关于标号的属性FAR类型在一个标号被其他段中的转移指令访问时,不仅需要修改IP还要修改使其指向跳转的段若要显示定义标号,有2中方法。L1EQUTHISFAR;L2LABELFAR跳跃表法(练习题28,29)LOOPNE,LOOPE与REPE,REPNE一个道理80X86能处理256种中断号,类型号从0h-0ffh,(中断号越小,优先级越高)中断向量表中,每个中断号都对应中断向量表,每个表占4个字节,两个字节存中断的段地址,另外2个字节存放中断的偏移量,所以中断表为1K,起止于0000H到3FFFH关于宏的使用方法宏的定义方式宏的引用:宏名字[实参1,实参2……],注意实参的个数可以与形参不同,少于形参时,没有对应的用空来对应,如果多于形参,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论