汇编语言程序设计课程总结_第1页
汇编语言程序设计课程总结_第2页
汇编语言程序设计课程总结_第3页
汇编语言程序设计课程总结_第4页
汇编语言程序设计课程总结_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

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

文档简介

汇编语言程序设计课程总结,第一部分:基础知识第二部分:指令系统第三部分:程序设计方法关于考试,第一部分:基础知识,各种进制转换二进制的加、减、乘、除运算几种基本的二进制的逻辑运算常用ASCII码,字母、数码、空格、回车换行补码及运算数字的含义处理器的基本知识计算机的基本知识机器语言、汇编语言、汇编语言程序、汇编程序、连接程序、调试程序通用寄存器专用寄存器标志寄存器条件码标志段寄存器存储器地址分段,基于微处理器的计算机系统构成,计算机硬件:中央处理器、存储器和输入输出子系统三个主要组成部分,用系统总线将他们联系在一起。存储器:计算机的记忆部件中央处理器:包括运算器和控制器运算器:执行所有的算术和逻辑运算指令;控制器:负责全机的控制工作,负责把指令逐条从存储器中取出,经译码分析后向全机发出取数、执行、存数等控制命令,以保证正确完成程序所要求的功能。I/O子系统:包括I/O设备和大容量存储器两类外部设备I/O设备:负责与计算机外部世界通信的输入、输出设备大容量存储器:可存储大量信息的外部存储器。系统总线:把CPU、存储器和I/O设备连接起来,用来传送各部分之间的信息。(由总线控制逻辑负责指挥)数据线:传送信息地址线:指出信息来源或目的的地址控制线:规定总线的动作,80 x86寄存器组,分为程序可见的寄存器和程序不可见的寄存器两大类。程序可见的寄存器:在汇编语言程序设计中用到的寄存器。程序不可见的寄存器:应用程序一般不使用而由系统使用的寄存器。,通用寄存器,AX(accumulator)累加器:算术运算的主要寄存器、乘/除运算指定寄存器、I/O指令指定使用寄存器;BX(Base)基址变址寄存器:计算存储器地址时的基地址;CX(Count)计数寄存器:移位、循环和串处理指令中保存计数值;DX(Data)数据寄储器:双字长数的高位、I/O指令的端口地址;SP(StackPoint)堆栈指针寄存器:指示段顶的偏移地址;BP(BasePoint)基址指针寄存器:DI(Destinationindex)目的变址寄存器:SI(Sourceindex)源地址变址寄存器:,专用寄存器,IP(instructionpointer)指令指针寄存器SP(StackPoint)堆栈指针寄存器:指示段顶的偏移地址;FLAG标志寄存器、程序状态寄存器(PSW)条件标志:溢出标志OF:符号标志SF:零标志ZF:进位标志CF:辅助进位标志AF:奇偶标志PF:其它(略),段寄存器,CS代码段寄存器DS数据段寄存器SS堆栈段寄存器ES附加段寄存器,实模式存储器寻址,20位物理地址由16位段地址和16位偏移地址组成20位物理地址=段地址x16d+偏移地址例:(DS)=2100H,(BX)=0500H(PA)=21000H+0500H=21500H同样的物理地址可以有不同的段地址和偏移地址表示。指定段地址和偏移地址只能表示唯一的物理地址,第二部分:指令系统,指令的组成操作码和操作数寻址方式立即寻址寄存器寻址直接寻址寄存器间接寻址寄存器相对寻址基址变址寻址相对基址变址寻址,指令系统和寻址方式,计算机是通过执行指令序列来解决问题的每种计算机都有一组指令集供用户使用指令集指令系统:指令:由操作码字段和操作数字段两部分组成操作码字段:指示计算机所要执行的操作操作数字段:指出在指令执行操作中所需要的操作对象信息寻址方式:得到操作数的方式与数据有关的寻址方式与转移地址有关的寻址方式,与数据有关的寻址方式,用来确定操作数地址从而找到操作数立即寻址MOVAX,3069H寄存器寻址MOVAX,BX直接寻址MOVAX,2000H寄存器间接寻址MOVAX,BX寄存器相对寻址MOVAX,COUNTSI基址变址寻址MOVAX,BPDI相对基址变址MOVAX,MASKBXSI比例变址寻址基址比例变址寻址相对基址比例变址寻址,(1)立即寻址方式*操作数在指令中给出,操作数直接存放在指令中,作为指令的一部分存放在代码段里,该操作数又称为立即数。立即数可以是8位、16位,在80386之后可以是32位指令格式:MOVAL,5ADDAL,5MOVAL,-5ADDAL,-5MOVAX,3064HADDAX,3064HMOVAL,AADDAL,AMOVEAX,12345678HADDEAX,12345678H注意:只能用于SRC字段MOV40H,ALSRC和DST的字长一致MOVAH,3064H注意在代码段中的存放形式(高位字节和地位字节),(2)寄存器寻址方式*操作数在指定的寄存器中,操作数在寄存器中,指令中指定寄存器号。寄存器可以是AX,BX,CX,DX,SI,DI,SP和BP。也可以是AL,AH,BL,BH,CL,CH,Dl,DH,对于80386之后可以是EAX,EBX,ECX,EDX,ESI,EDI,ESP和EBP。指令格式:MOVAX,BXMOVAL,CHMOVECX,EDX注意:SRC和DST的字长一致MOVAH,BXCS不能用MOV指令改变MOVCS,AXMOVAX,BX两个操作数都是寄存器寻址,(3)直接寻址方式*有效地址EA由指令直接给出,操作数的有效地址只包含位移量一种成分,其值就存放在代码段中指令的操作码之后。指令格式:MOVAX,2000H假设(DS)=3000HEA=2000HDS:2000H=3000Hx16+2000H=32000H,(4)寄存器间接寻址方式,操作数的有效地址在基址寄存器(BX/BP)或变址寄存器(SI/DI)中,操作数在存储器中。指令格式:MOVAX,BXPA=(DS):(BX)MOVAX,ES:BXPA=(ES):(BX)MOVAX,BPPA=(SS):(BP)MOVECX,EDX80386后可使用所有32通用寄存器注意:不允许使用AX、CX、DX存放EA。MOVAX,CXSRC和DST的字长一致MOVDL,BX;BX指示一个字节单元MOVDX,BX;BX指示一个字单元适于数组、字符串、表格的处理,(5)寄存器相对寻址方式*(直接变址寻址方式),操作数的有效地址为基址寄存器(BX/BP)或变址寄存器(SI/DI)的内容和指令中指定的位移量之和,操作数在存储器中。指令格式:MOVAX,COUNTSI或MOVAX,COUNT+SI假设(DS)=3000H,(SI)=2000H,COUNT=3000H,则:PA=35000H假设(35000H)=1234H,那么(AX)=1234Hmovax,bx+2000Hmovax,2000Hbxmovax,bx+2000h注意:适于数组、字符串、表格的处理,(6)基址变址寻址方式*,操作数的有效地址是一个基址寄存器(BX/BP)和一个变址寄存器(SI/DI)内容的和,操作数在存储器中。指令格式:MOVAX,BXDIMOVAX,BX+DIMOVAX,ES:BXSI注意:适于数组、字符串、表格的处理必须是一个基址寄存器和一个变址寄存器的组合MOVAX,BXBPMOVAX,SIDI,(7)相对基址变址寻址方式*,操作数的有效地址是一个基址寄存器(BX/BP)和一个变址寄存器(SI/DI)内容和指令中指定的位移量之和的和,操作数在存储器中。指令格式:MOVAX,MASKBXSI或MOVAX,MASKBX+SI或MOVAX,MASK+BX+SI注意:适于二维数组、堆栈数据处理,80 x86的指令系统,数据传送指令*算术指令*逻辑指令*串处理指令控制转移指令*处理机控制与杂项操作指令,数据传送指令,数据传送指令负责把数据、地址或立即数传送到寄存器或存储单元中分类通用数据传送指令MOV,PUSH/POP,XCHG累加器专用指令IN,OUT,XLAT地址传送指令LEA,LDS,LES,LFS,LGS,LSS标志寄存器传送指LAHF,SAHF,PUSHF,POPF类型转换指令CBW,CWD/CWDE,CDQ,BSWAP,通用数据传送指令(1)MOV传送指令,格式MOVDST,SRC操作(DST)(SRC)DST表示目的操作数,SRC表示源操作数MOVmem/reg1,mem/reg2|不能同为存储器MOVreg,data|MOVac,memMOVsegreg,acMOVsegreg,mem/reg|不能为CSMOVmem/reg,segregMOVmem,data注意:DST、SRC不能同时为段寄存器立即数不能直接送段寄存器DST不能是立即数和CSDST、SRC不能同时为存储器寻址不影响标志位,PUSH入栈指令POP出栈指令,格式PUSHSRC操作16位指令(SP)(SP)-2(SP)+1),(SP)(SRC)PUSHregPUSHmemPUSHdataPUSHsegreg,格式POPDST操作16位指令(DST)(SP)+1),(SP)(SP)(SP)+2POPregPOPmemPOPsegreg,算术指令,包括二进制运算和十进制运算指令分类加法指令ADD、ADC、INC减法指令SUB、SBB、DEC、NEG、CMP乘法指令MUL、IMUL除法指令DIV、IDIV十进制调整指令DAA、DAS、AAA、AAS、AAM、AAD,逻辑指令,逻辑运算指令AND、OR、NOT、XOR、TEST移位指令SHL、SHR、SAL、SAR、ROL、ROR、RCL、RCR,控制转移指令,无条件转移指令JMP条件转移指令JZ/JNZJE/JNEJS/JNSJO/JNOJP/JNPJB/JNBJL/JNLJBE/JNBEJLE/JNLEJCXZ循环指令LOOP、LOOPZ/LOOPE、LOOPNZ/LOOPNE子程序调用和返回指令CALL、RET中断与中断返回指令INT、INTO、IRET,(1)根据单个条件标志的设置情况转移,格式测试条件JZ(JE)OPRZF=1JNZ(JNE)OPRZF=0JSOPRSF=1JNSOPRSF=0JOOPROF=1JNOOPROF=0JPOPRPF=1JNPOPRPF=0JCOPRCF=1JNCOPRCF=0,(2)根据复合条件标志设置情况转移,比较两个无符号数,并根据比较结果转移:格式:JB(JNAE,JC)OPR测试条件:CF=1:格式:JNB(JAE,JNC)OPR测试条件:CF=0:格式:JBE(JNA)OPR测试条件:CFZF=1:格式:JNBE(JA)OPR测试条件:CFZF=0*适用于地址或双精度数低位字的比较,比较两个带符号数,并根据比较结果转移:格式:JL(JNGE)OPR测试条件:SFOF=1:格式:JNL(JGE)OPR测试条件:SFOF=0:格式:JLE(JNG)OPR测试条件:(SFOF)ZF=1:格式:JNLE(JG)OPR测试条件:(SFOF)ZF=0*适用于带符号数的比较,程序设计,步骤模块划分模块设计流程图编写代码必要的注释结构顺序分支循环子程序,例:显示MxN的星号方阵,算法思路:重复M次每次输出N个星号,开始,结束,行计数器M,一行显示N个*,行计数器减1,行计数器0?,Yes,No,根据框图设计程序,movbx,mrow:movcx,ncol:movdl,*movah,02int21hloopcolmovdl,0dhmovah,02int21hmovdl,0ahmovah,2int21hdecbxjnzrowint20hMdw5Ndw4,寄存器使用行计数器:BX列计数器:CX,分支程序的结构形式,分支程序有两种形式If_then_else形式和Case形式双分支多分支,分支程序,程序的分支一般用条件转移指令来产生。有时双分支的一支可能为空-单分支,分支后的语句,例将AX,BX和CX寄存器中最大的数保存在DX中,算法思路首先将AX和BX中大的放在DX中然后将CX和DX中大的放在DX中框图,根据框图编写程序,CMPAX,BXJNCL1MOVDX,BXJMPL1:MOVDX,AXL2:CMPCX,DXJCL3MOVDX,CXL3:INT20H,L1:,L2:,L3:,不同的思路得到不同的算法导致不同的程序,MOVDX,AXCMPAX,BXJNCL1MOVDX,BXL1:CMPDX,CXJNCL2MOVDX,CXL2:INT20H,开始,结束,AXBX,AXDX,BXDX,DXCX,CXDX,N,Y,Y,N,L1:,L2:,例2统计Buff开始的以$结尾的字符串中大写字母和小写字母的个数存放在AH和AL中,思路:首先必须依次取出要判断的字符,然后判断是否是大写或小写,并分别计数要点:这个重复的过程如何结束?(循环的控制)不同的循环控制策略可能使得程序出现错误(边界问题),流程图细化,将复杂的处理框细化,编写程序,寄存器分配AH大写计数器AL小写计数器BX取数指针CL取数寄存器可以写出如下代码movax,0movbx,offsetptrBuffAgain:movcl,bxcmpcl,$jzok大写字母判断并计数小写字母判断并计数incbxjmpAgainok:int20HBuffDBThisisSTRING1$,OK:,Again:,继续完成程序,movax,0movbx,offsetptrBuffAgain:movcl,bxcmpcl,$jzokcmpcl,ZjaL1cmpcl,AjbL1incahL1:cmpcl,zjaL2cmpcl,ajbL2incalL2:incbxjmpAgainok:int20HBuffDBThisisSTRING1$,L1:,L2:,子程序的设计方法,过程定义伪操作子程序的调用和返回保存和恢复寄存器子程序的参数传递通过寄存器传送参数通过变量传送参数通过地址表传送参数通过堆栈传送参数,获取通过堆栈

温馨提示

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

评论

0/150

提交评论