3180x86pentium指令格式3280x86pentium寻址方式33内容摘要:
ES 无 (E)DI 通用数据访问 DS CS、 ES、 SS(、 FS、 GS) 偏移地址 EA 以 (E)BP、 (E)SP间接寻址的指令 SS CS、 DS、 ES(、 FS、 GS) 偏移地址 EA 南京航空航天大学 电子信息工程学院 第 3章 80x86/Pentium指令系统 8086/8088CPU指令系统 8086/8088指令系统是 80x86/Pentium CPU的基本指令集。 指令的操作数宽度是 8位或 16位,偏移地址宽度是 16位。 操作数符号简单说明 数据传送类指令 ( 最基本、最重要的一类操作 ) ( 1)存储器与寄存器 ( 2)寄存器与寄存器 ( 3)累加器与 I/O端口 ( 4)立即数到 Reg或存储器 之间的数据传送。 可实现 数据传送类、算术运算类、逻辑运算与移位类、串操作类、控制转移类、处理器控制类。 共分为 6类 ① 指令功能、助记符、操作数的正确选择 ② 指令执行后对标志位的影响。 要求掌握 第 3章 80x86/Pentium指令系统 表 33 指令操作数符号说明 符 号 意 义 OPRD, OPRDN 操作数;第 N个操作数,如 OPRD1, OPRD2, OPRD3等 DEST, SRC 目的操作数,源操作数 reg 通用寄存器,长度可以是 8位或 16位 reg8 8位通用寄存器 AH/AL/BH/BL/CH/CL/DH/DL reg16 16位通用寄存器 AX/BX/CX/DX/SI/DI/BP/SP Sreg 段寄存器 DS/CS/SS/ES( /FS/GS) mem 存储器操作数,长度可以是 8位或 16位 mem8 8位存储器操作数 mem16 16位存储器操作数 imm 立即数,长度可以是 8位或 16位 imm8 8位立即数 imm16 16位立即数 类 别 指 令 功 能 指令书写格式 (助记符) 通用数据传送 字节或字传送 MOV 目标,源 字压入堆栈 PUSH 源 字弹出堆栈 POP 目标 字节或字交换 XCHG 目标,源 字节翻译 XLAT 地址传送 装入有效地址 LEA 目标,源 装入逻辑地址 LDS 目标,源 装入逻辑地址 LES 目标,源 标志位传送 将标志寄存器 FR低字节装入 AH LAHF 将 AH内容装入 FR低字节 SAHF 将 FR内容压入堆栈 PUSHF 从堆栈弹出 FR内容 POPF I/O数据传送 输入字节或字 IN 累加器,端口 输出字节或字 OUT 端口,累加器 表 34 数据传送类指令 ( 14条分为 4组) 除 SAHF和 POPF外,其余指令执行后对标志位都没有影响。 第 3章 80x86/Pentium指令系统 ( 1) MOV指令 指令格式: MOV OPRD1, OPRD2。 助记符 汇编语言格式 OPRD21← OPRD2 两者可以是字节或 字, 但必须等长。 MOV指令有如下一些形式: MOV reg/Sreg/mem , reg MOV reg/mem, Sreg MOV reg/Sreg, mem MOV reg/mem , imm 通用寄存器 (AX,BX,CX,DX,BP SP,SI,DI) 存储器 立即数 段寄存器 (CS,SS,DS,ES) 传送关系示意图 1. 通用数据传送指令 共 5条,它们 (除 XCHG外 )是唯一允许以 Sreg作为操作数的指令。 南京航空航天大学 电子信息工程学院 第 3章 80x86/Pentium指令系统 例: MOV AL, CH ;通用 Reg之间传送字节数据 MOV DS, AX ;通用 Reg → 段 Reg (CS不能是目标 ) MOV AX, 0FF3BH ;立即数 → 通用 Reg MOV CX, [1000H] ;存储器 → 通用 Reg MOV AL, BUFFER ;存储器 → 通用 Reg (BUFFER为 字节 存储单元 ) MOV DAT[BP+DI], ES ;段 Reg → 存储器 MOV BUFFER , 25H ;立即数 → 存储器( BUFFER为 字 存储单元) 使用 MOV指令传送数据时应该注意: ① 立即数和段寄存器 CS不能 作为目标操作数; ② 立即数 不能 直接传送到段寄存器;( MOV DS, 1000H) ③ 两个存储单元之间 不能 直接传送数据(可通过 Reg做中介); ④ 两个段寄存器之间 不能 直接传送数据( MOV DS, ES)。 ⑤ 将立即数传送到存储单元时,必须 显式说明 存储器操作数的 宽度类型。 南京航空航天大学 电子信息工程学院 第 3章 80x86/Pentium指令系统 ( 2)堆栈操作指令 PUSH/POP 堆栈是按照 LIFO原则组织的一段内存区域。 80x86规定堆栈设置在堆栈段( SS)内,向下生长, SP始终指向堆栈的顶部。 断点地址的保存由子程序调用指令或中断响应来完成(机器做); 现场数据保存可通过堆栈操作指令来实现。 指令格式: PUSH OPRD2 POP OPRD1 堆栈操作时,一定是 16位操作。 源操作数: 通用 Reg, Sreg, mem 目标操作数:通用 Reg, Sreg( CS除外), mem 堆栈用于 在子程序调用或处理中断时, 保存断点地址( 8086/8088中为 CS和 IP)和现场数据 ,以便子程序执行完毕后正确返回主程序 . 堆栈示意图 SS SP …… 第 3章 80x86/Pentium指令系统 指令格式: PUSH OPRD2 ; SP←SP 2 ; ((SP+ 1), (SP) )←OPRD2 POP OPRD1 ; OPRD1←[SP] ; SP ←SP + 2 具体的入 /出栈指令形式: PUSH reg16 ; POP reg16 PUSH Sreg ; POP Sreg PUSH mem16 ; POP mem16 注意: ① 程序中有一个 PUSH, 必有一个对应的 POP; ② 遵循后进先出原则; ③ 按字进行操作; ( PUSH AH ; POP BL ) ④ PUSH CS ; POP CS √X X 入、出栈指令的执行情况 第 3章 80x86/Pentium指令系统 ( 3)交换指令 XCHG 指令格式: XCHG OPRD1, OPRD2 ; OPRD1←→ OPRD2 OPRD OPRD2 可以是等长的 reg, mem 例: XCHG AX, BX XCHG [2530H], CX 具体指令如下: XCHG reg/mem, reg XCHG reg, mem 注意: ① 段 Reg和立即数 不能 作为操作数。 ② 两个存储器操作数之间 不能 直接 交换。 ( 4)查表转换指令 XLAT(换码指令) 指令格式: XLAT ; AL ← [BX+AL] , 完成 1字节的查表转换 或 XLAT OPRD 将数据段中偏移地址为( BX+AL)的存储单元的内容送入 AL中。 此指令常用来将一种代码转换为另一种代码 (换码指令)。 南京航空航天大学 电子信息工程学院 第 3章 80x86/Pentium指令系统 使用方法: 指令执行前,将待转换的代码组成表格,首地址 → BX, AL存放查找对象在表中下标, 指令执行后, [BX+AL] → AL , BX内容不变。 注: ① 代码表须建立在数据段,长度不超过 256字节 ② 执行指令前, BX← 表首址 AL← 查找对象在表中的偏移量(下标) ③ 指令的操作数是隐含的,也可用表的 首地址名称 (S_TAB)来表示 : MOV BX, OFFSET S_TAB MOV AL, 4 XLAT S_TAB 例:将数字 0~ 9的 BCD码转换为 7段 LED显示器的显示代码。 MOV BX, 0800H MOV AL, 4 XLAT ; AL= 19H 数字 0~ 9的 BCD码对应的 7段 LED显示代码为: 40H,79H,24H, 30H,19H,12H,02H,78H,00H,18H。 存放在数据段,实现 BCD码 0100B转换的程序段: … 0800H 18H 19H 30H 24H 79H 40H 类 别 指 令 功 能 指令书写格式 (助记符) 通用数据传送 字节或字传送 MOV 目标,源 字压入堆栈 PUSH 源 字弹出堆栈 POP 目标 字节或字交换 XCHG 目标,源 字节翻译 XLAT 地址传送 装入有效地址 LEA 目标,源 装入逻辑地址 LDS 目标,源 装入逻辑地址 LES 目标,源 标志位传送 将标志寄存器 FR低字节装入 AH LAHF 将 AH内容装入 FR低字节 SAHF 将 FR内容压入堆栈 PUSHF 从堆栈弹出 FR内容 POPF I/O数据传送 输入字节或字 IN 累加器,端口 输出字节或字 OUT 端口,累加器 表 34 数据传送类指令 (分 4组) 除 SAHF和 POPF外,其余指令执行后对标志位都没有影响。 第 3章 80x86/Pentium指令系统 2. 地址传送指令 ( 指令中的 源操作数 都必须是 mem操作数) 取 mem操作数在当前段内的有效地址 EA送至 16位通用 Reg ( 1)有效地址传送指令 LEA 指令格式: LEA OPRD1 , OPRD2 例: LEA AX , [2728H] ; AX=2728H LEA BX , [BP+SI] ; BX=BP+SI的值。 LEA SP , [0482H] ; SP=0482H 注: MOV指令与 LEA的不同 —— MOV传送操作数的内容, LEA传送操作数的存储地址 . 例: MOV DI , TABLE ; DI← [TABLE] LEA DI , TABLE ; DI← TABLE 所在单元的 EA 通常有 MOV BX, OFFSET VARWORD LEA BX, VARWORD 两者效果一致 16位通用 Reg mem操作数 第 3章 80x86/Pentium指令系统 例:比较 LEA BX, BUFFER 两指令的不同 MOV BX, BUFFER 存储单元内容如右图所示。 设: DS=093AH, BUFFER 物理地址。3180x86pentium指令格式3280x86pentium寻址方式33
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。
用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。