Ensaio sobre o padroado portuguez · iiin rnotlo auclnz e dr3
第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... ·...
Transcript of 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... ·...
![Page 1: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/1.jpg)
第三章 80X86指令系统(补)
![Page 2: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/2.jpg)
1 80x86的寻址方式和指令系统
一 80x86的寻址方式
二 80x86的指令系统
三 浮点运算指令简介
四 MMX技术简介
![Page 3: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/3.jpg)
(1) 直接寻址方式
如:
INC WORD PTR [500]
;字的有效地址为500
(2) 寄存器间接寻址方式
如:
MOV [ECX],EDX ;ECX指出有效地址
一 80x86的寻址方式
![Page 4: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/4.jpg)
一 80x86的寻址方式
(3) 基址寻址方式
如: MOV ECX,[EAX+24]
;由EAX中内容加24组成有效地址
(4) 变址寻址方式
如: ADD EAX,[ESI],5
;ESI的内容加5组成有效地址
![Page 5: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/5.jpg)
一 80x86的寻址方式
(5) 带比例因子的变址寻址方式
如:
IMUL EBX,[ESI*4+7]
(6) 基址变址寻址方式
如:
MOV EAX,[ESI][EBX]
![Page 6: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/6.jpg)
一 80x86的寻址方式
(7) 基址加带比例因子的变址寻址方式
如:
MOV ECX,[EDI*8][EAX]
(8) 带位移量的基址加变址寻址方式
如:
ADD EDX,[ESI][EBP+100H]
![Page 7: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/7.jpg)
一 80x86的寻址方式
(9) 带位移量的基址加带比例因子的变址寻址方式
如:
MOV EAX,[EDI*4][EBP+80]
;EDI的内容乘4,加EBP的内容,再加80即有效地址
![Page 8: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/8.jpg)
二 80x86的指令系统
1 80386指令
80386的指令系统比之8086:
扩展了数据宽度
对存储器寻址方式也进行了扩充
增加了少量指令。
![Page 9: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/9.jpg)
数据传送指令
(1)通用传送指令 MOVZX和MOVSX
如:MOVZX AX,BL
MOVSX AX,BL
(2)交换指令XCHG
如:
XCHG EAX,EDI ;寄存器和寄存器进行双字交换
XCHG ESI,MEM_DWORD
;寄存器和内存进行双字交换
二 80x86的指令系统
![Page 10: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/10.jpg)
二 80x86的指令系统
(3)PUSH
还可将立即数推入堆栈
(4)PUSHAD
将EAX、ECX、EDX、EBX、ESP、EBP、ESI、EDI推入堆栈
![Page 11: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/11.jpg)
二 80x86的指令系统
(2) 累加器传送指令
包括:
IN
OUT
XLAT
XLATB
![Page 12: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/12.jpg)
二 80x86的指令系统
(3) 标志传送指令
在LAHF、SAHF、PUSHF、POP基础上,增加了:
PUSHFD
POPFD
![Page 13: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/13.jpg)
二 80x86的指令系统
(4) 地址传送指令实现6字节地址指针的传送
如:
LDS EBX,MEMLOC
LES EDI,MEMLOC
LSS ESP,MEMLOC
LFS EDX,MEMLOC
LGS ESI,MEMLOC
![Page 14: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/14.jpg)
二 80x86的指令系统
(5) 数据类型转换指令
在CBW、CWD指令外,增加了2条指令。
即:
CWDE ;将AX中的字进行高位扩展,
成为EAX中的双字
CDQ ;将EAX中的双字进行高位扩展,得到EDX和EAX中的4字
![Page 15: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/15.jpg)
二 80x86的指令系统
算术运算指令
① 乘法运算指令 MUL、IMUL
功能:
AL、AX或EAX存放操作数并保存乘积低半部分,另一个操作数为寄存器和存储器,也可为立即数
乘积的高半部分在AH或EAX。
![Page 16: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/16.jpg)
二 80x86的指令系统
②除法运算指令DIV和IDIV
功能:
用AX、DX+AX或者EDX+EAX存放被除数,
除数的长度为被除数的一半,
商放在原存放被除数的寄存器的低半部分,余数放在高半部分。
![Page 17: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/17.jpg)
二 80x86的指令系统
逻辑指令运算指令
移位指令
![Page 18: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/18.jpg)
二 80x86的指令系统
串操作指令包括(B/W/D)MOVS CMPS SCASLODS STOS此外,增加了
INSOUTS
![Page 19: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/19.jpg)
二 80x86的指令系统
转移、循环和调用指令
条件转移指令的相对转移地址不受范围限制
![Page 20: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/20.jpg)
二 80x86的指令系统
循环控制指令包括:
LOOP
LOOPZ/LOOPE
LOOPNZ/LOOPNE
![Page 21: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/21.jpg)
二 80x86的指令系统
中断指令中断指令包括:
INT n INTO IRET
增加了
IRETD
功能:从堆栈中先弹出4个字节装入EIP,再弹出2个字节装入CS。
![Page 22: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/22.jpg)
二 80x86的指令系统
标志指令
标志指令包括:
CLC STC CMC
CLD STD
CLI STI
![Page 23: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/23.jpg)
二 80x86的指令系统
位处理指令位处理指令包括:
位测试
BTS ,BTR, BTC, BT
位扫描
BSF, BSR
![Page 24: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/24.jpg)
位测试位测试: BT 目标操作数,源操作数位测试置0: BTR 目标操作数,源操作数位测试置1: BTS 目标操作数,源操作数位测试取反: BTC 目标操作数,源操作数
测试目标操作数中由源操作数指定的位,将其值送CF标志
MOV AX, 1FF0H
BTS AX, 24
二 80x86的指令系统
![Page 25: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/25.jpg)
位扫描向前位扫描: BSF 目标操作数,源操作数向后位扫描: BSR 目标操作数,源操作数
对源操作数进行扫描,将遇到的第一个1所在的位置送目标操作数,并将ZF清0。如果源操作数为0,则目标操作数不变,且ZF置1
MOV EAX, 60000000H
BSF EBX,EAX
二 80x86的指令系统
![Page 26: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/26.jpg)
LOCK前缀和可使用LOCK前缀的指令
特点:
32位系统不允许LOCK前缀用于重复串操作指令
对可以接受LOCK前缀的指令作了限制
二 80x86的指令系统
![Page 27: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/27.jpg)
处理器控制和特权指令除HLT、WAIT、ESC、NOP外,增加了:与控制寄存器有关的传送指令,
如:MOV CRn,EAX ;往CRn中设置一个32位值,其
中CRn可为CR0、CR2、CR3MOV EBX,CRn ;将CRn的值送寄存器,其中
CRn可为CR0、CR2或CR3
二 80x86的指令系统
![Page 28: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/28.jpg)
与调试寄存器有关的传送指令MOV DRn,EAX ;往调试寄存器DRn设置初值,
DRn可为DR0~DR3、DR6、DR7
MOV EBX,DR3;将调试寄存器DR3的值送到1个
寄存器
与测试寄存器有关的传送指令MOV TRn,EAX ;往测试寄存器送一个32位值,
TRn可为TR6或TR7
MOV EBX,TRn;将测试寄存器TRn的值送到
寄存器,这里为EBX
二 80x86的指令系统
![Page 29: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/29.jpg)
支持高级语言的指令BOUND如:
BOUND EBX,MEM_DWORD
ENTER如:
ENTER 48,3
LEAVE
二 80x86的指令系统
![Page 30: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/30.jpg)
系统设置和测试指令
CLTS
功能:清除机器状态字中的任务切换标志TS。
SGDT/SLDT/SIDT 分别将:
全局描述符表寄存器
局部描述符表寄存器
中断描述符表寄存器
的内容送到存储器中
二 80x86的指令系统
![Page 31: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/31.jpg)
LTR
STR
LAR
LSL
LGDT/LLDT/LIDT
二 80x86的指令系统
![Page 32: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/32.jpg)
二 80x86的指令系统
VERR/VERW检测段类型指令
VERR检测一个选择子所对应的段是否可读
VERW检测一个选择子所对应的段是否可写
LMSW装入机器状态字指令
将存储器中2字节送到机器状态字MSW。
![Page 33: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/33.jpg)
SMSW存储机器状态字指令
将机器状态字MSW存入内存2字节中。
ARPL调整请求特权级指令
这条指令调整选择子的RPL字段。
二 80x86的指令系统
![Page 34: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/34.jpg)
二 80x86的指令系统
80486新增加的指令
(1) BSWAP r双字交换指令
将指定的32位寄存器中双字第31~24位与第7~0位交换,第23~16位与第15~8位交换。
(2) CMPXCHG r/m, r 32位比较指令
将目的寄存器或存储器中数和累加器中数比较,如等则ZF为1,并将源操作数送目的操作数;否则ZF为0,并将目的操作数送累加器。
![Page 35: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/35.jpg)
二 80x86的指令系统
(3) XADD r/m, r 字交换加法指令
将源操作数和目的操作数相加,结果送目的操作数处,而目的操作数送源操作数处。
(4) INVD Cache清除指令
将片内Cache中的内容清除,并使外部电路清除外部Cache中的内容。
![Page 36: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/36.jpg)
二 80x86的指令系统
(5) WBINVD Cache清除和回写指令
将片内Cache中的内容清除,并外部电路将外部Cache中的数据回写到主存,再清除外部Cache中的内容。
(6) INVLPG m TLB项清除指令
使转换检测缓冲器TLB的32个表项中用m指出的当前项清除。
![Page 37: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/37.jpg)
二 80x86的指令系统
Pentium新增加的指令(1) CMPXCHG8B m 8字节即64位比较指令
将EDX∶EAX中的8个字节与m所指的存储器中的8个字节比较。
(2) RDTSC读时钟周期数指令
读取记录时钟周期数的64位计数器的值送EDX:EAX。
(3) CPUID读取CPU的标识等有关信息
获得Pentium处理器的类型等有关信息。
![Page 38: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/38.jpg)
二 80x86的指令系统
(4) RDMSR读取模式专用寄存器的指令
Pentium模式专用寄存器中的值。
(5) WRMSR 写入模式专用寄存器的指令
将EDX∶EAX中64位数写入模式专用寄存器。
(6) RSM 复位到系统管理模式
(7) MOV CR4,R32
(8) MOV R32,CR4
![Page 39: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/39.jpg)
浮点运算指令及汇编语言程序设计
浮点运算指令
![Page 40: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/40.jpg)
浮点运算指令及汇编语言程序设计
浮点数据格式
类型:
短浮点数,32位单精度——1位符号,8位指数,23位尾数长浮点数,64位双精度——1位符号,11位指数,52位尾数临时浮点数,80位扩展精度——1位符号,15位指数,64位尾数
格式:
移码指数尾数
符号位
![Page 41: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/41.jpg)
浮点运算指令及汇编语言程序设计
符号位 阶码 有 效 数 字
02331
符号位 阶码 有 效 数 字
05163
符号位 阶 码 有 效 数 字
06479
1
63
单精度数
双精度数
扩展精度数
浮点数据格式
阶码采用移码表示——实际阶码+偏置量:32位偏置量7FH
64位偏置量3FFH
80位偏置量3FFFH
![Page 42: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/42.jpg)
浮点数据格式
例:将-12.5转换成单精度浮点数
例:将浮点数431B4000H转换成十进制数
1 10000010 10010000000000000000000
C1 48 00 00 H
0 10000110 00110110100000000000000
1.00110110127= 10011011.01 =155.25
浮点运算指令及汇编语言程序设计
![Page 43: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/43.jpg)
浮点数定义伪指令
DD 11.2
DQ 11.2
DT 11.2
REAL4 11.2
REAL8 11.2
REAL10 11.2
MASM
浮点运算指令及汇编语言程序设计
![Page 44: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/44.jpg)
浮点处理单元(FPU)的软件体系结构
8个80位的数值寄存器3个16位寄存器(控制寄存器、状态寄存器、标记寄存器)
5个错误指针寄存器
浮点运算指令及汇编语言程序设计
![Page 45: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/45.jpg)
浮点运算指令及汇编语言程序设计
浮点处理单元(FPU)的软件体系结构
•浮点数值寄存器
80位临时实数 R0
R1
R2
R3
R4
R5
R6
R7
![Page 46: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/46.jpg)
8个寄存器按堆栈方式使用,压栈时栈顶减1,出栈时栈顶加1。栈顶用ST或用ST(0)表示,ST(n)表示栈顶加n的寄存器
浮点处理单元(FPU)的软件体系结构
FADD ST,ST(3) ;ST<——ST+ST(3)
初始化时,ST=0,第一次压栈后ST=0-1=7 mod 8
浮点运算指令及汇编语言程序设计
![Page 47: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/47.jpg)
浮点指令简介
约定:real32:内存中的32位短实数real64:内存中的64位长实数mem16:内存中的16位整数mem32:内存中的32位整数mem64:内存中的64位整数memBCD:内存中的BCD码st(j):第j个浮点寄存器st(0):栈顶
浮点运算指令及汇编语言程序设计
![Page 48: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/48.jpg)
•数据装入
内存中的浮点数装入栈顶—— FLD
FLD real32/real64
浮点寄存器的值装入栈顶——FLD
FLD st(j)
内存中的整数装入栈顶——FILD
FILD mem16/mem32/mem64
内存中的BCD码装入栈顶——FBLD
FBLD memBCD
浮点指令简介
浮点运算指令及汇编语言程序设计
![Page 49: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/49.jpg)
•装入常数
FLDZ ;装入0.0
FLD1 ;装入1.0
FLDPI ;装入π
FLDL2E ;装入log2(e)
FLDL2T ;装入log2(10)
FLDLG2 ;装入log10(2)
FLDLN2 ;装入loge(10)
浮点指令简介
浮点运算指令及汇编语言程序设计
![Page 50: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/50.jpg)
•栈顶数据存入内存(不改变栈顶)
存为实数FST real32/real64
存为整数FIST mem16/mem32
浮点指令简介
浮点运算指令及汇编语言程序设计
![Page 51: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/51.jpg)
浮点指令简介
•数据弹出(同时改变栈顶)
弹出存为浮点数FSTP real32/real64
弹出存为整数FISTP mem16/mem32/mem64
弹出存为BCD
FBSTP memBCD
浮点运算指令及汇编语言程序设计
![Page 52: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/52.jpg)
浮点指令简介•加法运算
浮点加法FADD real32 ; st+real32 st
FADD real64 ; st+real64 st
FADD st(j) ; st+st(j)à st
整数加法FIADD mem16 ; st+mem16 st
FIADD mem32 ; st+mem32 st
FADD ;st+st(1) st
FADD st,st(j) ;st+st(j) st
FADD st(j),st ;st(j)+st st
浮点运算指令及汇编语言程序设计
![Page 53: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/53.jpg)
•减法运算浮点减法
FSUB real32 ; st-real32 st
FSUB real64 ; st-real64 st
FSUB st(j) ; st-st(j) st
整数减法FISUB mem16 ; st-mem16 st
FISUB mem32 ; st-mem32 st
FSUB ;st-st(1) st
FSUB st,st(j) ;st-st(j) st
FSUB st(j),st ; st(j) - st st
FCHS ;st符号取反
浮点运算指令及汇编语言程序设计
![Page 54: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/54.jpg)
•乘法
浮点FMUL real32 ;st×real32 st
FMUL real64 ;st×real64 st
FMUL st(j) ;st×st(j) st
整数FIMUL mem16 ;st×mem16 st
FIMUL mem32 ;st×mem32 st
FMUL ;st×st(1) st
FMUL st,st(j) ;st×st(j) st
FMUL st(j),st ;st(j) ×st st
浮点运算指令及汇编语言程序设计
![Page 55: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/55.jpg)
•除法
浮点FDIV real32 ;st/real32 st
FDIV real64 ;st/real64 st
FDIV st(j) ;st/st(j) st
整数FIDIV mem16 ;st/mem16 st
FIDIV mem32 ;st/mem32 st
FDIV ;st(1) /st st
FDIV st,st(j) ;st/st(j) st
FDIV st(j),st ;st(j) /st st
浮点运算指令及汇编语言程序设计
![Page 56: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/56.jpg)
•比较
浮点FCOM real32 ;st与real32
FCOM real64 ;st与real64
整数FICOM mem16 ;st与mem16
FICOM mem32 ;st与mem32
FTST ;st与0.0
比较结果反应在标志寄存器中
浮点运算指令及汇编语言程序设计
![Page 57: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/57.jpg)
C3(14) C2(10) C0(8)
St > op 0 0 0
St < op 0 0 1
St = op 1 0 0
FLD x ;x st
FTST ;比较st与0.0
FSTSW f ;X87标志寄存器的值存入内存变量f
FWAIT ;等待存入操作完成MOV AX, f
AND AX, 0100H ;测试C0(bit8)
JNE less ;ZF=0,即C0=1, st(=x) < 0.0
•比较
浮点运算指令及汇编语言程序设计
![Page 58: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/58.jpg)
•超越函数
FSIN ;计算st(任意弧度)的正弦。计算后,st=1,st(1)为正弦值。
FCOS ;计算st(任意弧度)的余弦。计算后,st=1,st(1)为余弦值。
FSINCOS;计算st(任意弧度)的正弦和余弦。计算后,st为余弦值,st(1)为正弦值。
FPTAN ;计算st(任意弧度)的正切。计算后,st=1,st(1)为正切值。
FSQRT;计算st的平方根,结果在st
FABS;计算st的绝对值,结果在st
FPREM;计算st/st(1)的余数,结果在st
浮点运算指令及汇编语言程序设计
![Page 59: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/59.jpg)
•处理器控制指令
FSTSW mem16;状态标志存入内存。
FSTSW AX ;状态标志存入CPU AX寄存器
浮点运算指令及汇编语言程序设计
![Page 60: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/60.jpg)
浮点运算指令及汇编语言程序设计
![Page 61: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/61.jpg)
MMX技术简介
MMX技术简介
![Page 62: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/62.jpg)
MMX技术简介
MMX技术的意义
MMX(多媒体增强指令集)的产生目的,
是加快影像、语音、通信等信号的处理。这些信息有其处理上的基本特性,如需要使用到大量的矩阵运算、多重数据的同时包装等。MMX技术通过新增设的57条控制指令,可
以将处理数据的方式从以前多条指令到现在的单条指令就可以解决,因此程序的执行效率可以提高,使CPU的功能更强,来加快CPU处理的效率。
![Page 63: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/63.jpg)
MMX技术简介
MMX技术的意义
SIMD单指令流多数据流
PADDB mm1, mm2
矢量相加,每项一个字节
![Page 64: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/64.jpg)
MMX技术简介
MMX硬件结构
![Page 65: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/65.jpg)
MMX技术简介
MMX硬件结构
MMX执行流水线
![Page 66: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/66.jpg)
MMX技术简介
MMX硬件结构
MMX的执行单元
![Page 67: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/67.jpg)
MMX技术简介
•MMX的寄存器结构
MMX的软件体系结构
![Page 68: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/68.jpg)
MMX技术简介
直接映射到8个浮点寄存器(直接访问)
为了降低处理器的复杂度,尽量节约硬件,MMX执行部件与FPU(浮点部件)以共享的形式使用FPU的寄存器。MMX的8个64位寄存器实际上占用原FPU的浮点寄存器硬件。
•MMX的寄存器结构
MMX的软件体系结构
![Page 69: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/69.jpg)
MMX技术简介
MMX的数据类型
为了适合多媒体和通信处理,MMX增加了相应的数据结构。这些数据结构包括:
字节包装字包装双字包装四字包装
![Page 70: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/70.jpg)
MMX技术简介
MMX指令简介
•饱和运算
饱和运算主要是针对多媒体中的颜色运算。在多媒体的颜色值得算术运算中,计算结果超出颜色值的最大数是没有意义的,因此要将超过最大颜色值的结果调节到最大颜色值。
PADDSW mm0, m64
![Page 71: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/71.jpg)
MMX技术简介
MMX指令简介
•数据传送指令
MOVD m32, mm0 31 0
MOVQ mm0, m64
b3 b2 b1 b0
63 32 31 0 b3 b2
b1 b0 m32
b3 b2 b1 b0
63 32 31 0 b3 b2
b1 b0 m64
b7 b6
b5 b4
b7 b6 b5 b4
![Page 72: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/72.jpg)
MMX技术简介
MMX指令简介
•算术运算
PADDB/ PADDW/ PADDD——数据组相加PADDSB/ PADDSW——饱和方式数据组相加
…...
![Page 73: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/73.jpg)
MMX技术简介
MMX指令简介
•算术运算
除通常的4则运算外,还增加了多数据流的乘加运算。
该指令将两个字包装的操作数的对应字进行乘加运算,并将最后结果存入一个双字包装的操作数内。
PMADDWD mm1, mm2
![Page 74: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/74.jpg)
MMX技术简介
•并行比较
MMX指令简介
PCMPGTW mm1, mm2
![Page 75: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/75.jpg)
MMX技术简介
MMX指令简介
•数据转换
该类指令主要完成按照给定的方式(如饱和处理等)实现不同数据包装之间的转换
PACKSSDW mm1, mm2
![Page 76: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/76.jpg)
MMX技术简介
MMX指令简介
•逻辑运算
该类指令主要完成64位操作数之间的逻辑运算,使在通常处理器中要多条指令完成的操作一次执行完,由于在图像处理中存在大量的并行数据操作,这种预算可大大提高图像处理的速度。
![Page 77: 第三章 80X86指令系统(补)staff.ustc.edu.cn/~zqfu/computer%20and%20interface/... · drn可为dr0~dr3、dr6、dr7 mov ebx,dr3;将调试寄存器dr3的值送到1个](https://reader030.fdocument.pub/reader030/viewer/2022040105/5e47290cb8fc860ce620777a/html5/thumbnails/77.jpg)
例如,利用逻辑运算可很容易的实现两幅图像的合成。
MMX技术简介
MMX指令简介•逻辑运算