微机原理与接口技术第3章作业答案

  • 格式:doc
  • 大小:38.00 KB
  • 文档页数:3

《微机原理与接口技术》第3章作业答案

1. 简要分析8086的指令格式由哪些部分组成,什么是操作码?什么是操作数?寻址和寻址方式的含义是什么?8086指令系统有哪些寻址方式?

【解答】8086的指令格式由操作码和操作数字段组成。

操作码:要完成的操作。

操作数:参与操作的对象。

寻址:寻找操作数或操作数地址的过程。

寻址方式:指令中给出的找到操作数或操作数地址采用的方式。

8086指令系统的寻址方式主要有立即数寻址、寄存器寻址、存储器寻址和I/O端口寻址。其中,存储器寻址可进一步分为直接寻址、寄存器间接寻址、寄存器相对寻址、基址变址寻址、相对基址变址寻址;I/O端口指令IN和OUT使用的端口寻址方式有直接寻址和间接寻址。

2. 设(DS)=2000H,(ES)= 2100H,(SS)= 1500H,(SI)= 00A0H,(BX)= 0100H,(BP)= 0010H,数据变量VAL的偏移地址为0050H,请指出下列指令的源操作数字段是什么寻址方式?它的物理地址是多少?

(1) MOV AX,21H (2) MOV AX,BX (3) MOV AX,[1000H]

(4) MOV AX,VAL (5) MOV AX,[BX] (6) MOV AX,ES:[BX]

(7) MOV AX,[BP] (8) MOV AX,[SI] (9) MOV AX,[BX+10]

(10) MOV AX,VAL[BX] (11) MOV AX,[BX][SI] (12) MOV AX,VAL[BX][SI]

【解答】

(1) MOV AX,21H

立即寻址,源操作数直接放在指令中

(2) MOV AX,BX

寄存器寻址,源操作数放在寄存器BX中

(3) MOV AX,[1000H]

直接寻址,EA = 1000H,PA =(DS)×10H+EA = 2000H×10H+1000H = 21000H

(4) MOV AX,VAL

直接寻址,EA = [VAL] = 0050H,PA =(DS)×10H+EA = 2000H×10H+0050H = 20050H

(5) MOV AX,[BX]

寄存器间接寻址,EA =(BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H

(6) MOV AX,ES:[BX]

寄存器间接寻址,EA =(BX)= 0100H,PA =(ES)×10H+EA = 2100H×10H+0100H = 21100H

(7) MOV AX,[BP]

寄存器间接寻址,EA =(BP)= 0010H,PA =(SS)×10H+EA = 1500H×10H+0010H = 15010H

(8) MOV AX,[SI]

寄存器间接寻址,EA =(SI)= 00A0H,PA =(DS)×10H+EA = 2000H×10H+00A0H = 200A0H

(9) MOV AX,[BX+10]

寄存器相对寻址,EA =(BX)+10D = 0100H+000AH= 010AH,PA =(DS)×10H+EA = 2000H×10H+010AH = 2010AH

(10)MOV AX,VAL[BX]

寄存器相对寻址,EA =(BX)+[VAL]= 0100H+0050H= 0150H,PA =(DS)×10H+EA = 2000H×10H+0150H = 20150H

(11)MOV AX,[BX][SI]

基址变址寻址,EA = (BX)+(SI)= 0100H+00A0H = 01A0H,PA = (DS)×10H+EA = 2000H×10H+01A0H = 201A0H

(12)MOV AX,VAL[BX][SI]

基址变址相对寻址,EA = (BX)+(SI)+[VAL]= 0100H+00A0H+0050H = 01F0H,PA =(DS)×10H+EA = 2000H×10H+01F0H = 201F0H

3. 给定寄存器及存储单元的内容为:(DS) = 2000H,(BX) = 0100H,(SI) = 0002H,(20100) = 32H,(20101)

= 51H,(20102) = 26H,(20103) = 83H,(21200) = 1AH,(21201) = B6H,(21202) = D1H,(21203) = 29H。试说明下列各条指令执行完后,AX寄存器中保存的内容是什么。

(1) MOV AX,1200H (2) MOV AX,BX (3) MOV AX,[1200H]

(4) MOV AX,[BX] (5) MOV AX,1100H[BX] (6) MOV AX,[BX][SI]

【解答】

(1) MOV AX,1200H ;执行后,(AX)= 1200H

(2) MOV AX,BX ;执行后,(AX)= (BX)= 0100H

(3) MOV AX,[1200H]

直接寻址,EA = [VAL] = 1200H,PA =(DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,

(AX)= B61AH

(4) MOV AX,[BX]

EA = (BX)= 0100H,PA =(DS)×10H+EA = 2000H×10H+0100H = 20100H,执行后,

(AX)= 5132H

(5) MOV AX,1100H[BX]

EA =(BX)+1100H = 0100H+1100H = 1200H,PA =(DS)×10H+EA = 2000H×10H+1200H = 21200H,执行后,(AX)= B61AH

(6) MOV AX,[BX][SI]

EA =(BX)+(SI)= 0100H+0002H = 0102H,PA =(DS)×10H+EA = 2000H×10H+0102H = 20102H,执行后,(AX)= 29D1H

4. 分析下列指令的正误,对于错误的指令要说明原因并加以改正。

(1) MOV AH,BX (2) MOV [BX],[SI]

(3) MOV AX,[SI][DI] (4) MOV MYDAT[BX][SI],ES:AX

(5) MOV BYTE PTR[BX],1000 (6) MOV BX,OFFSET MAYDAT[SI]

(7) MOV CS,AX (8) MOV DS,BP

【解答】

(1) MOV AH,BX

错误,寄存器类型不匹配,可改为MOV AX,BX

(2) MOV [BX],[SI]

错误,两个操作数不能都为存储单元,可改为MOV BX,[SI]或MOV [BX],SI

(3) MOV AX,[SI][DI]

错误,寻址方式中只能出现一个变址寄存器,可改为MOV AX,[BX][DI]。

(4) MOV MYDAT[BX][SI],ES:AX

错误,AX签不能有段跨越前缀,去掉ES:,改为MOV MYDAT[BX][SI],AX

(5) MOV BYTE PTR[BX],1000

错误,1000超出字节空间存储范围

(6) MOV BX,OFFSET MAYDAT[SI] ;正确

(7) MOV CS,AX

错误,MOV指令CS不能做目的操作数,可改为MOV DS,AX

(8) MOV DS,BP ;正确

注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。

3.5 设VAR1、VAR2为字变量,LAB为标号,分析下列指令的错误之处并加以改正。

(1) ADD VAR1,VAR2 (2) MOV AL,VAR2

(3) SUB AL,VAR1 (4) JMP LAB[SI]

(5) JNZ VAR1 (6) JMP NEAR LAB

【解答】

(1) ADD VAR1,VAR2

错误,两个操作数不能都为存储单元,可改为 MOV BX,VAR2

ADD VAR1,BX

(2) MOV AL,VAR2

错误,数据类型不匹配,可改为MOV AX,VAR2

(3) SUB AL,VAR1

错误,数据类型不匹配,可改为SUB AX,VAR1

(4) JMP LAB[SI]

错误,寄存器相对寻址形式中不能用标号做位移量,可改为JMP VAR1[SI]

(5) JNZ VAR1

错误,条件跳转指令只能进行段内短跳转,所以后面只能跟短标号。可改为JNZ LAB

(6) JMP NEAR LAB

错误,缺少运算符PTR,可改为JMP NEAR PTR LAB

注:本题错误改正部分有的答案并不唯一,可参考原题题意改成合法形式。

6 写出能够完成下列操作的8086CPU指令。

(1) 把4629H传送给AX寄存器;

(2) 从AX寄存器中减去3218H;

(3) 把BUF的偏移地址送入BX中。

(4) 把BX和DX寄存器的内容相加,结果存入DX寄存器中;

(5) 用BX和SI的基址变址寻址方式,把存储器中的一个字节与AL内容相加,并保存在AL寄存器中;

(6) 用寄存器BX和位移量21B5H的变址寻址方式把存储器中的一个字和(CX)相加,并把结果送回存储器单元中;

(7) 用位移量2158H的直接寻址方式把存储器中的一个字与数3160H相加,并把结果送回该存储器中;

(8) 把数25H与(AL)相加,结果送回寄存器AL中。

【解答】

(1) MOV AX,4629H

(2) SUB AX,3218H

(3) LEA BX,BUF

(4) ADD DX,BX

(5) ADD AL,[BX][SI]

(6) ADD 21B5H[BX],CX

(7) ADD WORD PTR [2158H],3160H

(8) ADD AL,25H

10.【解答】

(1) (AX)=0005H,(BX)=0010H,(CX)=0000H,(DX)=0000H

(2) (AX)=0003H,(BX)=0007H,(CX)=0002H,(DX)=0000H

(3) (AX)=0002H,(BX)=0004H,(CX)=0003H,(DX)=0001H