一,数据类型
1,80486 cpu 中数据类型有七种:
1)无符号二进制数,8个字节:0-255,16个字节:0-65535,32个字节:0-4G
2)有符号二进制数
3)浮点数,分为单精度浮点数和双精度浮点数
4)BCD码,分为压缩型BCD码和非压缩型BCD码
5)字符串
6)ASCII码
7)指针数据,分为近指针32位和远指针48位
二,寻址方式
1,80x86 系列 cpu 的寻址方式有 8 种
1)立即寻址:MOV AX, 56H;
2)寄存器寻址: MOV AX, BX;
3)直接寻址:MOV AX, [2000H];
4)寄存器间接寻址:MOV AX, [BX]; MOV AX, DS: [BP];
5)相对寄存器简介寻址:MOV AX, 2040H[BX]; 或 MOV AX, [BX+2040H];
6)基址加变址寻址:MOV AX, [BX+SI]; 或 MOV AX, [BX][SI];
7)相对基址加变址寻址:MOV AX, 1234H[BI+DI]; 或 MOV AX, [BI+DI+1234H] 或 MOV AX, 1234H[BI][DI];
8)与跳转有关的寻址:长跳转,中跳转,短跳转
三,指令系统
1,指令格式:[标号:] 操作码 [操作数,...] [;注释]
2,指令可以分为整数指令,浮点数指令,操作系统型指令,整数指令相较会多很多,下面只列出整数指令
3,数据传送指令:
1)MOV EBX, 12345H,不影响进位寄存器
2)交换指令:XCHG AX, BX
3)I/O指令 IN 和 OUT:IN EAX 28H,用于在I/O端口和AL,AX或EAX累加器之间交换数据。
4)装入有效地址指令LEA:LEA reg32 mem,将有效地址(即偏移地址)送往通用寄存器
5)装入全地址指令:LDS,LES,LFS,LGS,LSS
6)压栈/出栈指令:PUSH,POP,
PUSH AX; SP = SP - 2,MOV [SP] AX
POP CX; MOV CX [SP], SP = SP + 2
7)全部通用寄存器压栈和出栈指令
PUSHA/POPA 16位通用寄存器,
PUSHAD/POPAD 32位通用寄存器,入栈顺序为EAX,ECX,EBX,EDX,ESP,EBP,ESI,EDI
8)标志寄存器传送指令:
LAHF:F 寄存器内容送AH指令
SAHF:AH内容送 F 寄存器指令
PUSHF:16位 F 寄存器内容进栈指令,保存F
POPF:16位 F 寄存器内容出栈指令,恢复F
PUSHFD:32位 F 寄存器内容进栈指令,保存F
POPFD:32位 F 寄存器内容进栈指令,保存F
9)查表转换指令XLAT
4,算数运算指令
1)加法减法指令:ADD,SUB
2)带进/借位的加减法指令:ADC/SBB
3)加1减1指令:INC,DEC
4)交换加法指令:XADD
5)取反指令:NEG
6)比较指令:CMP
7)比较并交换指令:CMPXCHG
8)无符号乘数加法指令:MUL,被乘数隐含在累加器中
9)有符号乘法指令:IMUL
10)无符号除法指令:DIV
11)有符号除法指令:IDIV
12)符号扩展指令:CBD,CWD,CWDE,CDQ
5,逻辑运算指令
1)十进制(BCD码)调整指令:DAA,DAS,AAA,AAS,AAM,AAD
2)逻辑与/或/异或指令:AND,OR,XOR
3)测试指令:TEST
4)逻辑非指令: NOT
5)算术/逻辑左移指令:SAL/SHL
6)算术/逻辑右移指令:SAR/SHR
7)循环右移指令:ROL,ROR,RCL,RCR
6,串操作指令
1)串传送指令:MOVSB,MOVSW,MOVSD,将DS:SI指定地址的数据传送到ES:DI指定的地址中去
2)串装入地址:LODSB,LODSW,LODSD,
3)串的存储:STOSB,STOSW,STOSD
4)串比较指令:CMPSB,CMPSW,CMPSD
5)串扫描指令:SCASB,SCASW,SCASD
6)串输入指令:INSB,INSW,INSD
7)串输出指令:OUTSB,OUTSW,OUTSD
8)重复前缀:REP,REPZ,REPE,REPNE,REPNZ
7,控制转移类指令
1)无条件转移指令:JMP
2)有条件转移指令:JA,JB,JE
3)循环控制指令:LOOP,LOOPZ,LOOPNZ
4)调用/返回指令:CALL,RET
5)中断/中断返回指令:INT,IRET
6)标志操作指令:CLC,STC,CMC,CLD,STD,CLI,STI
8,处理器指令
1)处理器暂停指令:HLT
2)处理器脱机指令:ESC
3)处理器等待指令:WAIT
4)总线锁定前缀:LOCK