大工计算机原理-第3章 8086微处理器的指令系统(1)
- 格式:doc
- 大小:637.00 KB
- 文档页数:9
微机原理第3章8086指令系统8086是Intel公司推出的一种16位微处理器,是x86架构的第一代处理器。
8086指令系统是8086微处理器所支持的指令集合,本章将介绍8086指令系统的基本特性和指令编码格式。
8086指令系统采用变长指令编码格式,指令长度可以是1个字节到多个字节,提供了多种寻址方式和丰富的操作类型。
8086指令系统共支持256条标准指令,可以执行各种算术逻辑运算、数据传输和控制流操作。
8086指令由操作码和操作数组成。
操作码指示了执行的具体操作,操作数则是操作码所针对的数据。
8086指令系统提供了多种寻址方式,包括立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、寄存器相对寻址和基址变址寻址等。
立即寻址是将常数或数据直接作为操作数,如MOVAX,1000H,表示将立即数1000H传送到AX寄存器。
直接寻址是通过指定一个内存单元的地址来作为操作数,如MOVAL,[BX],表示将BX寄存器指向的内存单元的内容传送到AL寄存器。
寄存器寻址是直接将一个寄存器作为操作数,如MOVAX,BX,表示将BX寄存器的内容传送到AX寄存器。
除了寻址方式,8086指令系统还提供了多种操作类型,如算术逻辑运算、数据传输和控制流操作等。
算术逻辑运算可以进行加、减、乘、除等数学运算,如ADD、SUB、MUL、DIV等指令。
数据传输可以进行数据的读取和存储操作,如MOV、PUSH、POP等指令。
控制流操作可以用于程序的跳转和条件判断,如JMP、JZ、JC等指令。
8086指令系统还支持多种数据类型的操作,包括字节、字和双字等。
字节操作是对8位数据进行操作,字操作是对16位数据进行操作,双字操作是对32位数据进行操作。
指令的操作数大小可以根据需要选择合适的寄存器或内存单元。
总之,8086指令系统是8086微处理器所支持的指令集合,提供了多种寻址方式和操作类型,支持多种数据类型的操作。
通过掌握8086指令系统,可以编写出高效、精确的8086汇编程序,实现各种功能和算法。
第章指令系统第3章8086指令系统1RAM硬盘ROM2机器码助记符说明AL10110000 00000111MOV AL,07H 把立即数07H 送累加器AL07H 00000100ADD AL,0AH 累加器AL 中的内容与立即数0AH 相加,结果在11H 00001010AL 中10100010MOV [07H],AL 把AL 中的内容存入[07H]11H00000111[],地址单元3第3章8086 指令系统机器语言是机器指令的集合。
机器指令就是一台机器可以机器指令就是台机器可以正确执行的命令,电子计算机的机器指令是一列二进制C 语言数字,计算机将之转变为一列高低电平,以使计算机的电子器件受到驱动进行计Java 语言C++语言电子器件受到驱动,进行计算。
汇编语言机器语言汇编语言的主体是汇编指令,汇编指令和机器Basic 语言Pascal 语言指令的差别在于指令的表示方法上,汇编指令是机器指令便于记忆的书写格式。
4操作:(AX)(BX)•(AX)=(BX)•机器指令:1000100111011000•汇编指令:Mov AX,BX汇编指令,5编译器MOV AX,BX…………编令程序员汇编指令1000100111011000…………机器码6计算机•3.1 基本数据类型•3.2 8086指令格式•3.3 8086指令的操作数寻址方式•3.4 8086通用指令7000AH 0009H 0008H 1/0Bit0007H 0006H 0005H 0004HByte0003H 0002H Word0001H0000H8•整型(int )C 语言变量基本类型•字符型(char)•浮点型(float)d bl 指针类型•双精度浮点型(double )•无值型(void )数据类型•数组类型构造类型•结构类型•共用类型枚举型9•字符型:以11ASCII字符以个字节存放个码字符;•整型:以2到4个字节存放1个定点数,通常在PC机上位2个字节;•浮点型:以4个字节存放1个浮点数;•双精度浮点型:以8个字节存放1个浮点数。
第3章8086微处理器的指令系统(1)3.1 指令系统概述●指令系统是一台计算机所能(识别和执行)的全部指令的集合。
它与(微处理器)有着密切的关系,不同的微处理器有不同的指令系统。
8086CPU包含133条指令●指令是使计算机执行某种(特定操作)的二进制编码。
指令一般包括两个部分:(操作码域)和(地址域)。
填空操作码域:存放指令的操作码,即指明该指令应由计算机完成何种操作。
地址域:确定操作数的值或地址、操作结果的地址,有的指令的地址域还指出下一条指令的地址。
●机器指令:计算机能(直接识别)的二进制代码。
●汇编语言:汇编语言是一种符号语言,用助记符表示操作码,用符号或符号地址表示操作数或操作数地址,它与机器指令是一一对应的●汇编程序:将汇编语言源程序翻译成机器语言(就是一条一条的机器指令),即目标程序。
3.2寻址方式●根据(指令内容)确定(操作数地址)的过程,称为寻址。
●根据寻址方式计算所得到的地址叫做(有效地址EA),也就是(段内偏移地址)。
有效地址还需要与相应的(段基地址)组合才是20位的(物理地址PA) ,该工作由微处理器来完成。
牢记什么是EA?什么是PA?怎么计算?后面有关于EA和PA的解释及计算方法!●寻址方式在两种方式下被涉及:(操作数)的寻址方式和(指令)的寻址方式。
如果没有特别说明,寻址方式是指源操作数的寻址方式。
1、隐含寻址(隐含了规定的操作数)例:DAA指令,只有操作码,无操作数。
规定对AL中的内容进行压缩BCD码转换。
2、立即寻址(操作数(立即数)直接放在指令中,不需访问存储器)例:MOV AX ,1234H (若CS=1000H ,IP=100H)3、寄存器寻址(操作数就放在内部寄存器中,例:INC CX ;(CX)←(CX)+1MOV AX ,BX ;执行后BX4、直接寻址(指令中直接给出操作数的存放地址)例1:MOV AX ,[4000H] (DS=3000H)☞操作数寻址例2:MOV ES:[1234H],BL (ES =4000H )注意:(1)指令中给出的[4000H]和[1234H]是操作数的偏移地址。
(2)指令前缀指出段寄存器(例2)。
(3)没有指出段寄存器,则默认的段寄存器为DS (例1)。
5、寄存器间接寻址(内存单元的逻辑偏移地址由寄存器间接给出,只能使用BX 、BP 、SI 、DI )例: MOV AX ,[BX ] (若DS =2000H ,BX=1000H)8、基址变址寻址和基址变址相对寻址有效地址EA =(BX )或(BP )中的基址地址+(SI )或(DI )中的变址地址+disp例3.14 MOV AX,[BP+DI]EA =SS*10H + BP + DI ;此时隐含的段寄存器为SSMOV AX,[BX+DI]EA =DS*10H + BX + DI ;则隐含的段寄存器为DS例3.10 MOV AX,[BX若(DS )=2100H,(BX)=0158H,(DI)=0002H,(2115AH )=1234H则 EA= BX+DI =0158H+0002H=015AHPA=EA+21000H=2115AH指令执行后,(AX)=1234H例3.11:MOV AX,[MASK+BX +SI] 若(DS )=3000H,(BX)=2000H, (SI)=1000H, MASK=0250H(33250H)=34H,(33251H)=12H则 EA= MASK+BX+SI = 0250H +2000H+1000H=3250HPA= DS*10H + EA=30000H + 3250H = 33250H执行该指令后(AX)=1234H9、I/O 端口寻址8086采用I/O 端口与存储器独立编址的方式(第2章的内容)。
8086用20位地址线中的低16位来管理64KB 的I/O 端口空间,I/O 端口的地址空间为0000H ~FFFFH (因为64K )。
访问I/O 端口需要专门指令IN 和OUT,通过AX/AL 来完成。
(1)直接寻址指令直接给出I/O 端口地址,此地址应在0-255(0-FFH)之间( 例如:IN AL,20H ;从端口地址20H 读入一个字节(2)间接寻址,寄存器只能用DX由DX 给出I/O 端口地址,此方式适用端口地址为0-65535(0-FFFFH)之间的任意值。
(范围任意) 例如:MOV DX , 3E4HOUT DX , ALIN 指令中目的操作数可为AL 或AX ;OUT 指令中源操作数可为AL 或AX(1)BX 基地址寄存器、SI 源变址寄存器、DI 目的变址寄存器与DS 数据段寄存器组成物理地址 (2)BP(基指针寄存器)、SP(堆栈指针寄存器)与SS(堆栈段寄存器)组成物理地址。
(3)IP 只能在代码段中(CS )寻址 (4)SP 只能在堆栈段(SS )中寻址。
(5)AX 、CX 、DX 一般不能在寄存器间接寻址中使用。
例:分别指出下列指令中的源操作数和目的操作数的寻址方式(1)MOV BX, [DI](2)MOV DX, 100(3)MOV [DI] , AL (4)MOV [BX+SI] , CX (5)MOV DX , [SI+106H] (6)MOV AX , CX(7)AND DS:[BP] , AX (8)AND AX , DX● 存储器操作数的物理地址PA 的计算:是将段基地址左移四位加上有效地址EA(偏移地址)得到的。
● 但是段寄存器和有效地址的配对是有规定的。
执行速度:寄存器操作数 > 立即数操作数>上面涉及的是操作数的寻址下面涉及的是指令寻址● 同样的指令(如MOV)由于寻址方式和操作数的不同,机器码的长度也不同。
段间。
寻址方式:1. 立即寻址 MOV AX , 1234H ;1234H 是立即数2. 寄存器寻址 MOV AX , BX ;BX 是寄存器3. 直接寻址 MOV AX , [1234H] ;[1234H]是直接地址4. 寄存器间接寻址 MOV AX , [BX] ;[BX]是间接地址5. 基址寻址 MOV AX , [BX+100H] ;BX 是基址寄存器6. 变址寻址 MOV AX , [SI+100H] ;SI 是变址寄存器7. 基址加变址寻址 MOV AX , [BX+SI+100H] ;BX+SI 基+变寄存器2 、直接、间接、立即这3 种寻址方式指令的执行速度有快到慢的排序是(C)A .直接、立即、间接B .直接、间接、立即C .立即、直接、间接D .立即、间接、直接3 、指令系统中采用不同寻址方式的目的是(B)A .实现存储程序和程序控制B .缩短指令长度,扩大寻址空间,提高编程灵活性C .可以直接访问外存D .提高扩展操作码的可能并降低指令译码难度4 、变址寻址方式中,操作数的有效地址等于(C)例:MOV AX,[SI+100H]A .基址寄存器内容加上偏移量B .堆栈指示器内容加上偏移量C .变址寄存器内容加上偏移量D .程序计数器内容加上偏移量5 、计算机指令中一般包含哪些字段?分别是什么含义?答:计算机指令中一般包含地址码和操作码两部分,地址码表示指令的操作对象,指出操作数的地址,操作码表示操作的性能及功能。
6.设BX=2000H,SI=3000H,指令MOV AX,[BX+SI+8H]的源操作有效地址为()。
A.5000H B.5008H C.23008H D.32008H注:有效地址EA就是方括号中表达式的值。
EA=BX+SI+8H=2000H+3000H+8H=5008H7.设DS=1000H,ES=2000H,BX=3000H,指令ADD AL,[BX]的源操作数的物理地址为()。
A.13000H B.23000H C.33000H D. 3000H注:这是一个骗人的题!ES=2000H是蒙人的!源操作数[BX],是寄存器间接寻址,BX与段地址DS默认组合。
物理地址PA=DS*10H + EA =10000H + 3000H =13000H8.设DS=2000H,ES=3000H,SI=200H,指令MOV ES:[SI],AL的目的操作数的物理地址为()。
A.20200H B.30200H C.50200H D.200H注:这也是一个骗人的题!DS=2000H是蒙人的!目的操作数ES:[SI]是带段超越的寄存器间接寻址,PA=ES*10H+EA=30000H+SI=30000H+200H=30200H 9.指令MOV MEM[BX],AX中的MEM是()。
A.原码 B.反码C.补码 D.移码注:MEM是符号,它也对应着一个数值。
计算机中所有数值默认以补码形式表示(第1章)10.用来作为寄存器间接寻址的寄存器有( 4 )个。
只能使用BX,BP,SI,DIA.8 B.6 C.5 D.411.指令MOV [BX+SI],AL中的目的操作数使用()段寄存器。
A.CS B.DS C.SS D.ES注:[BX+SI]是基址+变址寻址,基址BX与段DS默认组合。
12.指令MOV BX,[BP+5]中的源操作数使用()段寄存器。
A.CS B.DS C.SS D.ES注:操作数地址在基址寄存器BX,BP中称为基址寻址;若还有位移量,则称为基址相对寻址。
[BP+5]是基址相对寻址,基址BX与段DS默认组合,基址BP与段SS默认组合。
13.段内间接寻址只改变()中的内容。
A.CS B.IP C.CS和IP D.PSW14.段间间接寻址只改变()中的内容。
A.CS B.IP C.CS和IP D.PSW15.指令JMP WORD PTR [BX]属于()寻址。
A.段内直接B.段内间接 C.段间直接 D.段间间接16.指令MOV AX,[BX+SI+8]的源操作数属于()寻址。
A.直接B.寄存器相对 C.基址变址D.基址变址相对注:基址BX变址SI相对8,默认与段DS组合(是由BX决定的)17.两个整数补码9CH和7AH相加运算后,会产生()。
A.无溢出且无进位B.无溢出但有进位A.74 B.74H C.4AH D.4A注:压缩型BCD码就是每1位十进制数,对应4位二进制数。
7对应0111B,4对应0100B,故结果为74H 10.十进制数字85所对应的非压缩型BCD码的形式是()。
A.0085 B.0085H C.0805 D.0805H注:非压缩型BCD码就是每1位十进制数,对应8位二进制数。
8对应0000 1000B,5对应0000 0101B,故结果为0805H20.压栈操作是()位数的操作。
每次压栈都是一个字!背A.8 B.16 C.32 D.任意1.在下列寻址方式中,用来访问内存的寻址方式有()。