微机原理—第三章
- 格式:docx
- 大小:21.58 KB
- 文档页数:3
第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。
微型计算机原理(第三章课后答案).第三章80X86微处理器1.简述8086/8088CPU中BIU和EU的作用,并说明其并行工作过程。
答:(1)BIU的作用:计算20位的物理地址,并负责完成CPU与存储器或I/O端口之间的数据传送。
(2)EU的作用:执行指令,并为BIU提供所需的有效地址。
(3)并行工作过程:当EU从指令队列中取出指令执行时,BIU将从内存中取出指令补充到指令队列中。
这样就实现了取指和执行指令的并行工作。
2.8086/8088CPU内部有哪些寄存器?其主要作用是什么?答:8086/8088CPU内部共有14个寄存器,可分为4类:数据寄存器4个,地址寄存器4个,段寄存器4个和控制寄存器2个。
其主要作用是: (1) 数据寄存器:一般用来存放数据,但它们各自都有自己的特定用途。
AX(Accumulator)称为累加器。
用该寄存器存放运算结果可使指令简化,提高指令的执行速度。
此外,所有的I/O指令都使用该寄存器与外设端口交换信息。
BX(Base)称为基址寄存器。
用来存放操作数在内存中数据段内的偏移地址CX(Counter)称为计数器。
在设计循环程序时使用该寄存器存放循环次数,可使程序指令简化有利于提高程序的运行速度。
DX(Data)称为数据寄存器。
在寄存器间接寻址的I/O指令中存放I/O端口地址;在做双字长乘除法运算时,DX与AX一起存放一个双字长操作数,其中DX存放高16位数。
(2)地址寄存器:一般用来存放段内的偏移地址。
SP(Stack Pointer)称为堆栈指针寄存器。
在使用堆栈操作指令(PUSH或POP)对堆栈进行操作时每执行一次进栈或出栈操作,系统会自动将SP的内容减2或加2,以使其始终指向栈顶。
BP(Base Pointer)称为基址寄存器。
作为通用寄存器,它可以用来存放数据,但更经常更重要的用途是存放操作数在堆栈段内的偏移地址。
SI(Source Inde某)称为源变址寄存器。
第三章
2.
机器码:它指的是将硬件序列号经过一系列加密、散列形成的一串序列号,即使指令的二进制编码。
助记符:是便于人们记忆、并能描述指令功能和指令操作数的符号
操作码:组成机器指令的一部分用来说明指令的性质和功能。
操作数:用来说明操作的对象。
可以是具体的数值、寄存器或存储器地址。
不同指令的机器码字节数不一样。
3.
寻址:寻找操作数会操作数的地址
寻址方式:寻找操作数地址的方法即为寻址方式。
对应的操作数名称和寻址方式名称见下表:
4.
16位操作数在存储器中存放的规则是:低字节在低地址中,高字节在高地址中,即所谓的低对低、高对高。
7.
指令中寻址存储器操作数使用的是逻辑地址。
逻辑地址转换成物理地址的算法是:段地址x16+偏移地址=物理地址
在指令中要确定一个存储器操作数要提供三种信息:段地址、偏移地址和数据类型。
8.
存储器寻址方式中有效地址EA的通式:
EA=基址+地址+DISP偏移量
段寄存器的默认规则:如果有效地址的表达式中有基址寄存器BP则默认堆栈段SS,其他一律默认数据段DS。
9.
(1)MOV CX,[2300H]直接寻址;
数据段中偏移地址为2300H所对应的字送CX中。
有效地址:EA=2300H,
物理地址:
PA=DS*16+EA=10000H+2300H=12300H
执行结果:(12300H)→CL,(12301H)→CH
(2)MOV BYTE PTR[BX],8FH寄存器间接寻址;
立即数8FH,送入数据段偏移地址为BX所对应的字节中。
有效地址:EA=BX=4000H,
物理地址:
PA=DS*16+EA=10000H+4000H=14000H
执行结果:8FH→ (14000H)
(3)MOV DH,[BP+3000H]基址寻址;
数据段中偏移地址为BP内容与3000H之和所对应的字节送至DH
有效地址:EA=BP+3000H=8000H
物理地址:PA= SS*16+EA=20000H+8000H=28000H
执行结果:(28000H)→DH
(4)MOV ES:[SI+1210H] ,AX变址寻址;
AX内容送入数据段中偏移地址SI与1210H之和所对应的字中
有效地址:EA=SI+1210H=6000H+1210H=7210H
物理地址:PA=ES*16+EA=3000H*16+7210H=37210H
执行结果:AL→(37210H),AH→(37211H)
(5)MOV [BX+DI+50H],AX基址变址寻址;
AX内容送入数据段中偏移地址为BX内容与DI内容及50H内容之和所
对应的字节中
有效地址:EA=BX+DI+50H=4000H+70000H+50H=74050H
物理地址:PA=DS*16+EA=1000H*16+74050H=84050H
执行结果:AL→ (84050H)
(6)INC WORD PTR[BX+SI]基址变址寻址;
堆栈中偏移地址为BX内容与SI内容所对应的字加1
有效地址:EA=BX+SI=4000H+6000H=A000H
物理地址:PA=DS*16+EA=1000H*16+A000H=1A000H
执行结果:1A000H中存放的字的值加1
10.
MOV AX,2000H将立即数2000H送入寄存器AX
MOV AX,[2000H]将数据段中偏移地址为2000H的数据送入AX;
MOV AX,BX将寄存器BX操作数传入AX
MOV AX,[BX]将数据段中偏移地址为BX的内容所对应的字送入AX 11.
(1)MOV BL,0F9H 立即寻址
(2)ADD [BX],SI 寄存器寻址寻址
(3)SUB CL,[4000H] 直接寻址
(4)CMP DX,[SI] 寄存器间接寻址
(5)AND AL,[BX+1] 基址寻址
(6)OR BP,[DI+2100H] 变址寻址
(7)XOR AX,[BP+SI] 基址变址寻址
(8)MOV CX,300 立即寻址
12.
(1)MOV SI,AH 两个操作数字长不一致
(2)MOV 70H,BL 立即数不能做目的操作数
(3)MOV CX,F123H 十六进制的数以字母打头时前必须补0 (4)MOV [BX],6AH 两个操作数的字长不确定
(5)MOV ES,5000H 立即数不能直接送段寄存器
(6)MOV [DI],[3000H]两个操作数不能存储器操作数
(7)MOV DS,SS 段寄存器不可相互传送数据
(8)MOV CS,AX CS不能做目的操作数
(9)MOV AL,[CX] CX不能用作寄存器间接寻址
(10)MOV [BX+BP],DX 存储器寻址方式中表示有效地址不能同时为两个
基址寄存器
(11)MOV BH,[SI+DI+2] 存储器寻址方式中表示有效地址不能同时为两
个变址寄存器
(12)PUSH AL 入栈出栈操作必须以字为单位,AL应为AX (13)LEA AX,BX LEA指令中源操作数必须为存储器寻址方式应为
[BX]
(14)LDS BL,[5100H] LDS指令中目的操作数必须为16位的通用寄存器
(15)IN AH,DX IN指令中的目的操作数只能是AL或AX
(16)OUT 288H,AL 输入输出指令中端口地址应为16位,必须先送
给DX;应为MOV DX,288H OUT DX,AL
(17)ADD [2400H],1234H 两个操作数的字长不确定
(18)XOR [2500R],[BX+10H]两个操作数不能同时为内存操作数
(19)INC [SI]操作数的字长不确定
(20)MUL 10MUL 指令的操作数不能为立即数
(21)IDIV [BP+DI+1300H]操作数的字长不确定
(22)SAL AL,2 移位次数大于1时必须先送给CL。