汇编语言手册_第1页
汇编语言手册_第2页
汇编语言手册_第3页
汇编语言手册_第4页
汇编语言手册_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

寄存器和存储器1 .寄存器功能寄存器的一般用途和专用用途. CS:IP控制程序执行流程. SS:SP提供sp栈顶部的单元地址提供. DS:BX(SI,DI )数据段中的单元地址. SS:BP提供BP堆栈中的单元格地址. ES:BX(SI,DI )在附加段中提供单元格地址. AX、CX、BX、CX寄存器多用于运算和暂时的中间计算结果,但特定于特定的命令(参照命令表)。. PSW程序状态字寄存器只能通过专用指令(LAHF、SAHF )和堆栈(PUSHF、POPF )进行访问。2 .内存段管理解决了16位寄存器构成20位地址的问题.方便程序的重新定位. 20位物理地址=段地址* 16偏移地址.程序段组织:一般由代码段、堆栈段、数据段和附加段构成,在不设置堆栈段的情况下使用系统内部的堆栈。3 .堆栈.堆栈是先进的数据结构,数据的访问是在堆栈顶端进行的,数据一进入堆栈,堆栈就向地址变小的方向扩展。堆栈经常用于保存子程序调用和中断响应时的中断点和临时数据或者中间计算结果。堆栈总是以字为单位进行存取指令系统和地址方式1 .指令系统计算机向用户提供的机器指令集称为指令系统,许多指令是双操作数指令。 执行指令时,典型的源操作数保持不变。 目标操作数将被计算结果取代。机器指令由CPU执行并完成某些运算和操作,8086/8088指令系统的指令分为6类:数据传输、算术运算、逻辑运算、串行操作、控制转移和处理器控制。2 .地址方式地址方式决定执行指令时获取操作数地址的方法分为与数据相关的地址方式(7种)和与转移目的地相关的地址方式(4种)。.数据寻址方案的一般用途:(1)即时数字地址方式-对寄存器或者存储单元赋予常数。(2)直接寻址方式-访问单一变量(3)寄存器地址方式:对寄存器访问速度比对存储单元的访问速度快.(4)寄存器间接地址方式-存取阵列要素(5)索引修饰方式(6)基地址修饰方式(7)对于基本地址索引修饰方式(5)、(6)、(7),排列要素的处理变得容易。.在与数据有关的地址方式中,提供地址的寄存器只有BX、SI、DI、BP.关于转移地址方式的一般用途:(1)段内直接地址-段内直接传送或子程序调用(2)段内间接地址-段内间接转送或子程序调用(3)段间直接地址-段间直接传送或子程序调用(4)段间地址-段间传送或子程序调用汇编程序和汇编程序语言1 .汇编程序.汇编程序是将汇编程序语言源程序翻译成二进制代码程序的语言处理程序,翻译过程称为汇编程序。2 .汇编语言汇编语言是用命令辅助符号、各种识别变量、住址、过程等识别符记述程序的语言,汇编语言命令与机械命令相对应。 伪指令、宏指令不是CPU执行的指令,而是汇编器在汇编器中处理的指令。 虚拟指令指示汇编程序如何完成数据定义、存储空间分配、组织段等工作。宏指令可以简化程序,减少程序写入量。 条件汇编指令的功能不是实现程序分支,而是确定是否汇编源程序,并且不会为未汇编程序生成相应的目标代码。结构作为一种数据结构,可以归纳类型不同但逻辑关联的数据组,使整体的数据处理变得容易。记录可以用来提高存储单元的利用率,将逻辑上相关的信息压缩成1字节或字并存储,其中该信息小于1字节或字。指令中的公式在程序集中计算,只计算常数或地址。程序设计基础1 .分支程序设计程序分支通过条件分支命令或无条件分支命令来实现。 存储某些目的地址或跳转指令的跳转表经常用于实现多路分支。 条件分支命令只能实现偏移量在-128到127字节范围内的分支。 无条件分支命令能够通过寻址方法(偏移量为-128到127字节)实现短分支,从而实现段内的分支以及段之间的分支。2 .循环程序设计.循环控制指令和条件转移指令可以组织循环结构.内层循环结构应完全包括在外层循环结构内,不发生从循环结构向循环结构内的转移.3 .子程序设计.子程序中保护寄存器的内容,正确使用堆栈,成对执行PUSH和POP指令,保证执行RET指令时堆栈为返回地址。 主程序可以通过寄存器、参数表或堆栈将参数传递给子程序4. EXE和COM文件.两者都可执行文件. COM文件源程序的特征在于:第一条可执行指令的起始存储位置必须是100H,无法断开,即使没有定义堆栈,所有进程都是NEAR类型,并且使用INT 20H命令返回DOS。5. DOS功能调用和BIOS中断调用.双方都完成DOS系统向用户提供的输入输出等一般功能,通过执行软件中断指令来完成软件中断服务。 DOS功能调用的中断服务程序是操作系统的一部分,存储在RAM中的BIOS中断调用的中断服务程序存储在ROM中。输入输出和中断系统1 .输入输出的方式.程序直接I/O方式:通过IN和OUT命令直接在端口电平进行I/O操作,数据传输方式可分为无条件传输方式和查询传输方式。中断传输方案:由CPU响应于中断请求而完成中断服务。 DMA传输方案:直接在存储器和外围设备之间传输数据。2 .关于中断的概念.中断、中断源、中断请求、中断服务、中断向量、中断向量表、中断响应进程、中断命令、开中断、关中断、内部中断、外部中断、可掩蔽中断、非掩蔽中断。3 .键盘I/O、显示器I/O操作.键盘的输入操作用BIOS的16H中断呼叫控制,直接访问60H端口(数据端口),61H端口(状态端口)检测键盘的键操作。可以从40:17H单元直接获取特殊键(例如,按下Shift、Ctrl、Alt、NumLock、ScrollLock等键)的信息。显示器的图形显示可以通过BIOS的10H中断呼叫实现,另一种快速的方法是直接读写视频缓冲器。 4 .打印机的I/O动作通过INT 17H中断调用实现,串行通信端口动作通过INT 14H中断调用实现。cldclearthedirectionflag (settoforwarddirection )将方向标志设置为0,增加si和di,并将串行处理从行地址转换为高地址8088编辑速查表另一方面,数据传送命令在存储器和寄存器、寄存器和输入输出端口之间传送数据1 .通用数据传送指令MOV传输字或字节MOVSX是在符号扩展后传送的MOVZX零扩展后再传输PUSH把字按进堆里POP从堆栈弹出数字PUSHA依次将AX、CX、DX、BX、SP、BP、SI、DI推入堆栈。POPA依次从堆栈中取出DI、SI、BP、SP、BX、DX、CX、AX。PUSHAD依次将EAX、ECX、EDX、EBX、ESP、EBP、ESI和EDI填充到堆栈中POPAD依次从堆栈中取出EDI、ESI、EBP、ESP、EBX、EDX、ECX、EAX。BSWAP交换32位寄存器内的字节顺序XCHG交换字或字节.(至少一个操作数为寄存器,段寄存器不能用作操作数)CMPXCHG比较操作数进行更换(第二个操作数必须是累加器AL/AX/EAX )XADD先交换,然后再加上(结果是第一个操作数)XLAT字节图转换 BX指256字节的表的起点,AL为表的索引值(0-255,即0-FFH ),返回AL是查找表的结果。 (BX AL-AL )2 .输入输出端口传送指令IN I/O端口输入. (语法: IN存储器、端口号DX )OUTI/O端口输出. (语法: OUT 端口号DX、存储器)在以即时方式指定了输入输出端口的情况下,其范围为0-255。在以寄存器DX指定了的情况下,其范围为0-65535。3 .目标传输命令LEA加载有效地址。 例: LEA DX,string; 将偏移地址保存到DXLDS传送目标指针,将指针内容放入DS例如: LDS SI,string; 将段地址:偏移地址存储在DS:SI中.LES传送目标指针,将指针的内容放入ES例: LES DI,string; 将段地址:偏移地址存储在ES:DI中.LFS传送目标指针,将指针内容放入FS例如: LFS DI,string; 将段地址:偏移地址存储在FS:DI中.LGS传输目标指针,并将指针内容加载到GS中例: LGS DI,string; 将段地址:偏移地址存储在GS:DI中.LSS传送目标指针,将指针内容放入SS例: LSS DI,string; 将段落地址:偏移地址存储在SS:DI中.4 .标志传送命令传送LAHF标志寄存器,在AH中加上标志传送SAHF标志寄存器,将AH的内容放入标志寄存器。PUSHF标记进入堆栈POPF标志出现PUSHD 32位标记进入堆栈出现POPD32位标志二、算术运算指令ADD加法ADC带进位加法INC加1AAA加法的ASCII代码调整DAA加法的十进制调整辅助减法SBB有借位减法从DEC中减去1NEC要求相反CMP比较.(减去两个操作数,仅修改标志位,不返回结果)AAS减法的ASCII代码调整DAS减法的十进制调整无MUL符号乘法IMUL整数乘法以上两个结果返回AH和AL (字节运算)或者DX和AX (字运算)AAM乘法的ASCII代码调整无DIV符号除法IDIV整数除法以上两条结果返回:商返回AL,馀数返回AH。 (字节运算)或者商品返回AX,馀数返回DXAAD除法的ASCII代码调整将CBW字节转换为字(将AL中字节的符号扩展至AH中)将CWD字转换为双字(将AX字的符号扩展为DX )将CWDE字转换为双字(将AX字符符号扩展为EAX )CDQ双字扩展(将EAX中字的符号扩展到EDX )三、逻辑运算指令AND和运算OR或运算XOR异或运算否定TEST测试.(运算两个操作数,仅修改标志位,不返回结果)SHL逻辑左移SAL算术左移(=SHL )SHR逻辑右移SAR算术右移(=SHR )ROL循环向左移动ROR环右移RCL通过进位循环向左移动RCR通过进位循环向右移动以上8种移位指令的移位次数能够达到255次移动一次后,可以直接使用操作码。 SHL AX,1移位1次时,从寄存器CL提供移位次数.像MOV CL,04那样SHL AX,CL四、串联指令DS:SI源极列寄存器:源极列索引ES:DI对象列级寄存器:对象列索引CX重复次数计数器AL/AX扫描值。d标志0表示重复操作中SI和DI应该自动增加,1表示应该自动减量.z标志用于控制扫描或比较操作的结束MOVS串行传输(MOVSB传输文字. MOVSW传输字. MOVSD传输双字. )CMPS系列比较(CMPSB比较字符. CMPSW比较词)SCAS串行扫描将AL或AX的内容与目标列进行比较,将比较结果反映在标志位中LODS装入串将源字符串的元素(字或字节)逐个放入AL或AX中(LODSB传输字符. LODSW传输字. LODSD传输字. )是STOS保存列. LODS的逆过程REP在CX/ECX0时重复。REPE/REPZ为ZF=1或比较结果相等,在CX/ECX0时重复.REPNE/REPNZ为ZF=0或比较结果不相等,在CX

温馨提示

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

评论

0/150

提交评论