80x86指令系统详解与常用指令列表

需积分: 9 1 下载量 123 浏览量 更新于2024-10-25 收藏 1.66MB DOC 举报
80x86指令系统是Intel早期的微处理器架构中广泛使用的指令集,它在个人计算机历史上扮演了关键角色。本简表提供了80x86指令的基础信息,包括指令名称、指令形式、对应的机器码以及它们对标志位的影响。这些指令主要涉及段寄存器(如ES, CS, SS, DS, FS, GS)的处理,操作数大小和类型的跨越(如Opsiz前缀),以及常见的算术和逻辑操作。 1. 段寄存器前缀:段跨越前缀(如ES:, CS:, SS:, DS:)用于指定操作的段基址,例如在访问内存时,这些前缀与段寄存器配合,帮助CPU确定内存地址。它们在执行指令时被用来计算偏移量,确保正确的内存寻址。 2. 操作数类型和大小跨越:66和67前缀(Opsiz和Address)允许指令处理不同类型的或更大规模的操作数。比如,使用66前缀可以将一个字节操作数扩展为一个字操作数,而67前缀则支持更复杂的地址模式,如调整AX或AX和DX中的数据。 3. 标志位设置与测试:表格中列举了一些常见的指令,如AAA、AAD、AAM和AAS,它们都与加减乘除运算后对标志位的设置有关。例如,AAA指令会设置AF标志并调整AL,用于ASCII码处理;AAD和AAM则是用于除法和乘法后的ASCII转换,分别设置SF和PF标志。ADC指令则用于带进位的加法,会更新AF、CF和PF标志。 4. 指令形式:每条指令后面跟着不同的参数形式,如立即数(imm8、imm16、imm32)、寄存器间接寻址(r/m8、r/m16、r/m32)等,这表示了操作数的来源和指令的具体执行方式。 5. 指令示例:简表中还列出了具体的指令及其对应的操作码,例如ADCAL, 1F表示带进位的AL加法,使用立即数作为操作数,而ADCWORD指令可能根据寄存器或内存地址的不同有不同的操作码形式。 这份80x86指令简表对于理解早期x86架构的程序员来说是非常有用的工具,它展示了如何通过组合不同的指令和前缀来实现复杂的数据处理和内存访问。掌握这些指令是理解和编写针对80x86处理器程序的关键。随着技术的发展,现代的x86指令集已经更为复杂,但这份简表仍然是学习8086/8088或早期386架构的基础。