微机原理第3章习题答案

  • 格式:docx
  • 大小:20.14 KB
  • 文档页数:7

微机原理第3章习题答案

第3章习题参考答案

1 分别指出下列指令中的源操作数和目的操作数的寻址方式。

答:源操作数目的操作数(1)MOV AX,[SI] 寄存器寻址寄存器间接寻址

(2)MOV DI,100 寄存器寻址立即寻址

(3)MOV [BX],AL 寄存器间接寄存器

(4)MOV [BX][SI],CX 基址+变址寄存器

(5)ADD DX,106H[SI] 寄存器变址

(6)PUSH AX 寄存器

(7)ADD DS:[BP],AX 带段超越寄存器间接寻址寄存器

(8)OR AX,DX 寄存器寄存器

2.设寄存器(DS)=2000H,(SS)=1500H,(ES)=3200H,(SI)=0A0H,(BX)=100H,(BP)=10H,数据段中变量VAL的偏移地址为50H。试指出下列各条指令中源操作数的寻址方式是什么?对于存储器操作数,其物理地址是多少?

答:操作数的寻址方式存储器操作数PA (1)MOV AX,[100H]

直接寻址20100H

(2)MOV CX,ES:[BX] 带段超越的寄存器间接寻址32100H

(3)MOV DX,[BX][SI] 基址+变址寻址200F0H

(4)MOV AX,V AL[SI] 变址寻址200F0H

(5)MOV BX,1234[BX] 基址寻址205D2H

(6)MOV AX,[BP] 寄存器间接寻址15010H

3. 判断下列指令有误错误,若有,则改之。

答:

(1)PUSH CL 有错,对堆栈操作数总是16位的。改为:PHSH

CX (2)ADCAX,0ABH 无,只是CF的值是不确定的(0或1)

(3)OUT 3EBH, AX 有,输出设备的端口地址若超过8位,应使用DX 间接寻址。改为: MOV DX, 3EBH

OUT DX,AX

(4)MUL AL, CL 有错。乘法指令中有AX或AL寄存器是隐含的。改为:

MUL CL

(5)MUL AX, 25 有错。乘法指令中不能用立即数。改为:

MOV BX,25

MUL BX

(6)ROL DX,5 有错。移位的次数由CL寄存器控制。改为:

MOV CL,5

ROL DX,CL

(7)CALL FAR SUM 无错。

(8)POP FR 有错。寄存器FR是不能单独操作的,改为:POPF

(9)MOV 234H, BX 有错。立即数不能作为目的操作数。改为:

MOV BX, 234H

(10)INC [SI] 有错。该错误主要是针对汇编程序的。由于翻译这条指令时,不知是8位的还是16位的目标码,故要加入宏汇编的综合运算符PTR。改为:INC BYTE PTR [SI]

(11)ADD [BX],456H有错。改为:ADD WORD PTR [BX],

456H

(12)INT O有错。这条指令是没有的

(13)DIV AX ,BX 有错。除法指令中,AX或DX.AX作为被除数是隐含的。改为:DIV BX

(14)DEC [BP] 有错。与题(10)有类似的错误。改为:

DEC WORD PTR [BP]

(15)XLAT BX XLAT的操作数是隐含的,它是一条复合指令,在执行该指令之前,将BX指向表的手地址,AL中存入被转换的码,然后执行该指令。

(16)ADD CX+1 有错。操作数CX+1是完全错误的。改为:INC CX (17)DAA AX 有错。调整指令是专门对AL寄存器的内容进行调整的,故指令中操作数是隐含的。改为:DAA

4 选择题

(1)带符号数-86所表示的二进制数值是(A)

A. 10101010B

B. 01100101B

C. 10011101B

D. 11001011B

(2)执行MOV DL, 2AH 和SHR DL,1两条指令后,DL寄存器与CF标志分别为(D)

A. DL=10110110 CF=1

B. DL=00110101 CF=0

C. DL=00110100 CF=1

D. DL=00010101 CF=1

(3)可将AX寄存器中D0, D5, D8和D11位求反,其余位不变的指令是(C)

A. AND AX,921H

B. OR AX,910H

C. XOR AX,0921H

D. XOR AX,0110H

(4)某存储单元物理地址为3B4FH,其段地址和偏移地址可选为(B)

A. 3B4FH和104EH

B. 3B40H和00FEH

C. 2A00H和114FEH

D. 3B4FH和0H

(5)两个8位二进制数00110101及10110110做“异或”操作后,寄存器FR的下面3个状态标志分别是(C)

A. PF=1 SF=1 ZF=0

B. PF=0 SF=1 ZF=1

C. PF=0 SF=1 ZF=0 D. PF=1 SF=1 ZF=1

(6)当执行存储器写指令时,如MOV [SI],AX, 则CPU的外部管脚状态是(D)

A. WR=1 RD=1 M\IO=0

B. WR=0 RD=1 M\IO=1

C. WR=1 RD=0 M\IO=1

D. WR=0 RD=1 M\IO=1

5:已知(DS)=2000H,(BX)=100H,(SI)=02H,从物理地址20100H单元开始,依次存放数据12H,34H,56H,78H,而从物理地址21200H单元开始,依次存放数据2AH,,4CH,8BH,98H。试说明下列各条指令单独执行后AX寄存器的

内容。

答:

(1)MOV AX,3600H 3600H

(2)MOV AX,[1200H] 4C2AH

(3)MOV AX,BX 0100H

(4)MOV AX,[BX] 3412H

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

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

6.设堆栈指针SP的初值为2400H,

(AX)=4000H,(BX)=3600H,问: (1)执行指令“PUSH AX”后,SP=?

(2)再执行“PUSH AX”和”POP AX”后,(SP)=? (AX)=?

(BX)=?

试画出堆栈变化示意图。

答:

(1)执行指令“PUSH AX”后,则将AX的内容推入

堆栈,SP先减2((SP)=23FEH),以指示栈顶位置,AL

的内容推入23FEH,而AH的内容推入23FFH

(2)再执行“PUSH AX”,SP先减2((SP)=23FCH),BL的内容推入23FCH,而BH的内容推入23FDH

(3)再执行“POP AX”,从SP指针指示的单元(23FCH)中弹出数据,存入AX中,SP加2((SP)=23FEH),指示栈顶位置。

故3条指令执行完毕,

(SP)=23FEH (AX)=3600H (BX)=3600H

7. 指出下面指令序列的执行结果。

答:

(1)MOV DX, 2000H

MOV BX, 1000H

XHGH BX, DX

(BX)=2000H, (DX)=1000H

(2)MOV AX,1234H

PUSH AX

POP BX

(AX)=1234H, (BX)=1234H

(3)LEA DX,[ 2000H]

MOV BX, DX

(BX)=2000H

(4)MOV AL,08

ADD AL,08

AAA (AX)=0106

(5)MOV AL,48H

ADD AL,39H

DAA

(AL)=87H

(6)AND AL,AL

MOV AL,80

ADC AL,AL

(AL)=0A0H

(7)MOV DX,OFFFH

NEG DX

(DX)=0001H

(8)MOV BL,OB8H

ROR BL,1

(BL)=5CH, CF=0(9)SUB AX,AX

AND DX,AX

(DX)=0

(10)MOV CL,3

MOV AH,42H

SHR AH,XL

(AH)=08H,CF=0 (11)MOV AX, 34EBH

MOV CL,5FH

DIV CL

(AX)=8FH

(12)MOV AL,08H

MOV BL,09

MUL BL

AAM

(AX)=0702H

(13)MOV BL,9 MOV AX,0702H

AAD

DIV BL

(AX)=0008H

(14)MOV AL98H

CBW

(AX)=0FF98H

(15)MOV AH,2

MOV DL,`W`

INT 21H

结果=执行DOS的2号功能调用,在屏幕上显示字母W