前言:“编程有料”后台回复“大礼包”可以获得近1000本帮助编程道路的电子书
由8086CPU指令系统(重难点)指令构成的基本原则数据传送指令(重点) 1、MOV指令2、XCHG指令3、堆栈操作指令PUSH和POP4、查找表变换指令XLAT5、取得有效地址的指令6、端口输入指令IN7、端口输入指令IN7
指令构成的基本原则源、目标操作数的字长一致
MOV AL,BX; 错误源、目标操作数不能是同一内存单元
MOV[SI],[DI]; 错误计数不能是所需的操作数
MOV 12H,AL; 错误数据传输指令(重点)实现寄存器、存储器及IO端口之间的数据传输标志传输指令以外的指令的执行结果不影响标志寄存器
常见的传送指令:
1、MOV命令
MOV指令的注意事项:
不能直接发送段寄存器d、s的是段寄存器例1 )生成指令序列并将来自存储器单元1000H:2000H的一个字发送到BX。 制作MOV AX,1000HMOV DS,AXMOV BX,[2000H]例2:命令序列,将12H传送到存储器单元300H:200H。 MOV BX,300HMOV DS,BXMOV BYTE PTR [200H],12H 2,XCHG命令格式: XCHG d,s
说明:交换s和d的内容会改变s和d的内容
XCHG命令注意事项:
不允许使用即时数量不允许使用段寄存器3。 堆栈操作命令PUSH和POP堆栈是存储器内的特定区域。 堆栈访问规则:后先进先出(LIFO或FILO )。 堆栈中始终包含堆栈顶部的设备,该设备的地址为SS:SP。 堆栈操作类型:的按入和弹出都以字为单位进行。 无论是按下还是弹出,都会始终操作堆栈顶部,并且堆栈指针SP会自动修改为始终指向新的堆栈顶部。 堆栈操作命令注意事项:
不能使用即时数必须以字为单位4,查表转换指令XLAT格式: XLAT
功能: ALDS:[BX AL]
说明:数据段的开头单元偏移地址为BX,序列号为AL的表的内容取出AL。
根据下表:
要获取数字7的显示代码,请运行以下命令:
即使在MOV BX、1000HMOB AL、7XLAT左右,也可以得出XLAT命令相当于在1字节排列中寻找要素:的结论
数组的起始地址BX数组元素的下标AL将找到的数组元素放入AL、取有效地址的指令格式: LEA reg16,mem
功能: reg16memEA
说明将:mem指定的存储器操作数的有效地址读入16位的通用寄存器reg16中。
命令分析:
LEAAX,[2012H]; MOV AX,2012HLEA SI,[BX]; 相当于MOV SI、BX LEA指令注意事项:
源操作数必须是内存寻址方式目标操作数为16位的通用寄存器,不能是段寄存器6、端口输入指令输入格式:输入逻辑、端口8
功能:从I/O端口向CPU内的AL或AX寄存器读取1字节或2字节。
说明:端口操作数用该端口的地址表示。
命令分析:
IN AL,20H; AL(20h ) 7、端口输出命令OUT格式: OUT port8、al
功能:向I/O端口输出1字节或2字节。
说明:端口操作数用该端口的地址表示。