微机原理-CH3-5-8086CPU串操作类指令
- 格式:pdf
- 大小:519.06 KB
- 文档页数:5
第3章指令系统机器指令:能指示计算机完成基本操作的二进制代码指令系统:CPU可执行的机器指令的集合。
为了方便编程,人们又把完成特定操作的机器码用特定的符号表示,这就产生了符号表示的机器指令-------指令助记符。
第3章8086指令系统机器指令由二进制代码组成,一条指令包括操作码和操作数(或地址)两部分,操作码指明该指令进行何种操作,操作数用来说明操作对象。
个别指只有操作码没有操作数。
由于不同的指令所表达的信息不尽相同,因此指令的长度即机器码字节数也有长有短。
8086指令系统的指令是可变长指令(1~6个字节)3.18086CPU寻址方式重点是存储器寻址存放在存储器中的数据称为存储器操作数。
指令中需要确定存储单元的段地址、偏移地址(亦称有效地址EA),以及存储器操作数的类型。
段地址存放在段寄存器中,确定段地址实际上就是确定段寄存器,采用的方法是默认或添加段超越前缀。
生成存储器有效地址有多种方法,这些方法形成了对存储器操作数的多种寻址形式。
确定数据类型的方法是源操作数和目的操作数类型一致原则或附加类型说明。
立即寻址方式中操作数也在存储器中,但立即寻址中的立即数包含在指令中,随程序存放在代码段,CPU在取指令时就获得操作数。
这里所说的存储器操作数是存放在数据段、附加段或堆栈段中,取指令时也不会被立即取到。
段超越前缀变量的定义在第四章详细介绍直接寻址:MOV AX,[2000H];寄存器间接寻址:MOV ES:[DI],AH基址寻址:MOV BYTE PTR[BX+1200H],10变址寻址:MOV DL,[SI+2AH]基址加变址寻址:MOV CL,[BX+SI+5]MOV AX,[BP+DI]MOV CL,[BX+SI+5]的等价形式:MOV CL,5[BX][SI]、MOV CL,5[BX+SI]、MOV CL,[BX][SI+5]MOV CL,[BX+SI-5]等价于MOV CL,[BX+SI+65531] MOV CL,[BX-SI]MOV CL,[SI+DI]错误!MOV[BX+DI],1000H正确吗?3.2.1数据传送类指令传送指令把数据从一个位置传送到另一个位置使用MOV指令应注意1.立即数只能作为源操作数2.无存储器之间直接传送与交换的指令3.没有用立即数对段寄存器直接赋值的指令4.段寄存器之间无传送指令5.两个操作数的类型要一致6.要能确定是字节还是字操作mov ah,al mov bvar,ch mov ax,bx mov ds,ax mov al,[bx]下列MOV指令正确吗?MOV AL,050AHMOV SI,DLMOV[BX+SI],255MOV DS,100HMOV[BX],[SI]MOV[BX+SI],bvarbvar是一个已定义过的字节变量 MOV CS,[SI]将数据段中偏移地址为2000H、2001H、2002H的3个字节的存储单元置数FFH。
8086/8088C PU指令系统分为6大类(传送指令、算术指令、逻辑运算和移位指令、串操作指令、程序控制指令、处理器控制指令)。
一、数据传送类指令数据传送类指令是指令系统中用得最多的一类指令,也是条数最多的一类指令(14条),常用于将原始数据、中间运算结果、最终结果及其他信息在CPU的寄存器和存储器之间进行传送。
根据功能的不同,数据传送类指令可分为:通用数据传送指令:M OV交换指令:X CHG堆栈操作指令:PUS H ,P OP地址传送操作指令:LEA,LDS,LES标志寄存器传送指令:LAHF,SAHF,PUS HF,P OPF累加器专用传送指令:IN,OU T,X LA T1.通用数据传送指令MOV 传送指令格式:M OV DS T,S RC执行的操作:(DST)(SRC)其中DST表示目的操作数,S RC表示源操作数。
功能:此指令把一个字节或一个字操作数从源传送到目的,源操作数内容未变,目的操作数内容和源操作数内容相同。
①从累加器送到存储器格式:M OV MEM,A C ;(mem) ac(ac表示AX,AH,A L)②从存储器送累加器格式:MOV AX,DISP[BP][SI];把地址SS×10H+(BP)+(S I)+DISP存储单元的内容送AX③从存储器或寄存器送到段寄存器格式:M OV se gre g,mem/reg ;se gr eg (mem/re g)其中se gr eg表示不包括CS的段寄存器(SS,DS,ES),本指令只能是字操作。
④从段寄存器到寄存器或存储器格式:M OV mem/reg,se gr eg ;(mem/re g) se gre g规定同③,但se gre g包括CS,即CS,SS,DS,ES。
⑤从寄存器到寄存器格式:M OV re g1,re g2;r eg1 re g2注:两个寄存器之间传送时,只能相同字长的寄存器之间传送,不能在不同字长寄存器之间传送。
8086CPU指令和寄存器英文全称。
一、数据传送指令比如,mov(move)、push、pop、pushf(push flags)、popf(pop flags)、xchg(exchange)等都是数据传送指令,这些指令实现寄存器和内存、寄存器和寄存器之间的单个数据传送。
二、算术运算指令比如,add、sub(substract)、adc(add with carry)、sbb(substract with borrow)、inc (increase)、dec(decrease)、cmp(compare)、imul(integer multiplication)、idiv (integer divide)、aaa(ASCII add with adjust)等都是算术运算指令,这些指令实现寄存器和内存中的数据运算。
它们的执行结果影响标志寄存器的sf、zf、of、cf、pf、af位。
三、逻辑指令比如,and、or、not、xor(exclusive or)、test、shl(shift logic left)、shr(shift logic right)、sal(shift arithmetic left)、sar(shift arithmetic right)、rol(rotate left)、ror(rotate right)、rcl(rotate left through carry)、rcr(rotate right through carry)等都是逻辑指令。
除了not 指令外,它们的执行结果都影响标志寄存器的相关标志位。
四、转移指令可以修改IP,或同时修改CS和IP的指令统称为转移指令。
转移指令分为一下几类。
(1)无条件转移指令,比如,jmp(jump);(2)条件转移指令,比如,jcxz(jump if CX is zero)、je(jump if equal)、jb(jump if below)、ja(jump if above)、jnb(jump if not below)、jna(jump if not above)等;(3)循环指令,比如,loop;(4)过程,比如,call、ret(return)、retf(return far);(5)中断,比如,int(interrupt)、iret(interrupt return)。
实验四串操作指令程序实验一、实验目的1. 熟悉五种串操作指令的功能,会编写常用的串操作应用程序。
2. 会使用DEBUG 命令查看串操作运行的结果。
二、实验环境1. 硬件:PC 微机2. 软件:Masm for Windows 汇编集成开发环境三、实验讲义串指连续存放在存储器中的一些数据字节、字或者双字。
串操作允许对程序连续存放的数据块进行操作。
这是唯一一种可以从存储器到存储器的指令。
源串一般存放在数据段,偏移地址由SI 指定;目标串必须在附加段,偏移地址由DI 指定。
在每次进行串操作后,SI 和DI 两个指针会自动修改。
修改的是增量方向还是减量方向由标志位DF 决定,DF=0 为增量操作,DF=1 为减量操作。
CX 中存放的是数据块的长度,可在CX 前加重复前缀标志,对串进行连续操作。
执行串指令之前,一般先进行如下操作:源串首地址(末地址)→ SI目的串首地址(末地址)→ DI串长度→ CX建立方向标志DF1. 重复前缀标志助记符判断条件说明REP CX 0 CX=CX-1,若CX 0 则重复REPE 或REPZ CX 0 且ZF=1 CX=CX-1,若CX 0 且ZF=1 则重复REPNE 或REPNZ CX=0 且ZF=0 EX=CX-1,若CX 0 且ZF=0 则重复2. 方向标志指令方向标志由标志位DF 决定,有CLD 和STD 两种指令。
CLD 将DF 置0,地址为增量操作。
STD 将DF 置1,地址为减量操作。
3. 串传送指令格式: [REP] MOVS DESTS, SRCS[REP] MOVSB/ MOVSW / MOVSD功能:将DS:SI 中的源串数据传送到ES:DI 规定的目的串单元中。
加重复前缀REP 可实现连续存放的数据块的传送。
例1:将源串中前三个字节的数据传送到目的串。
源串在数据段(DATAS)中,存放在SRC 单元中;目的串在附加数据段(EDATAS)中,存放在DEST 单元中。
8086cpu知识点总结8086 CPU 是 Intel 公司于 1978 年推出的第一款 16 位微处理器,它奠定了后来计算机发展的基础,为后续的计算机体系结构设计奠定了基础,其后续版本的处理器也是以其为基础进行设计。
这篇文章将对 8086 CPU 的架构、指令系统、寻址方式、操作模式、管脚、寄存器组、数据通路和控制信号等知识点进行详细的总结,以便更好地理解和掌握该处理器的相关知识。
一、8086 CPU 架构8086 CPU 是一种 16 位微处理器,其架构主要包括三部分:执行单元 (EU)、总线接口单元(BIU) 和通用寄存器组成。
EU 负责执行指令、算术运算和逻辑运算,同时与 BIU 进行数据交换;BIU 负责处理数据传输、地址生成和取指令等操作;通用寄存器组包括 4 个 16 位通用寄存器 AX、BX、CX 和DX,其中 AX 寄存器作为中央处理器 (CPU) 的数据寄存器,用于存放运算结果。
8086 CPU 内部结构由许多部件组成,包括寄存器、运算器、时钟、分频器、全速脉冲发生器、指令译码器、片选逻辑、地址生成器、数据总线缓冲器、地址总线驱动器、总线控制器、中断控制器、中断识别器、数据缓冲器等。
这些部件共同组成了 8086 CPU 的内部结构,为其正常工作提供了支持。
二、8086 CPU 指令系统8086 CPU 的指令系统包括数据传输指令、算术运算指令、逻辑运算指令、串处理指令、控制转移指令、程序调用和返回指令、中断指令等。
这些指令可以根据其功能和操作数的不同进行分类。
数据传输指令包括将数据从一个位置传送到另一个位置的指令,其中包括 MOV、XCHG、LEA 等指令;算术运算指令包括实现加法、减法、乘法、除法等运算的指令,其中包括ADD、SUB、MUL、DIV 等指令;逻辑运算指令包括实现与、或、非、异或等逻辑运算的指令,其中包括 AND、OR、NOT、XOR 等指令;串处理指令包括在存储器中进行字符串操作的指令,其中包括 MOVSB、MOVSW、CMPSB、SCASB 等指令;控制转移指令包括跳转、调用、返回等指令,其中包括 JMP、CALL、RET 等指令;程序调用和返回指令包括实现过程调用和返回的指令,其中包括 INT、IRET 等指令;中断指令包括控制中断处理的相关指令,其中包括 INT、IRET 等指令。