微机原理及应用期末考试题 下载本文

80H FFAACH FFAADH FFAAEH FFAAFH FFAB0H ··· 00ACH X

FFAABH

①初始状态;SP= 00B0H ② PUSH AX; ( AX= 8057H) SP= 00AEH 00ADH 00AEH 00AFH

0FFA0: 00B0H ··· 79H 0FH 57H 80H FFAACH FFAADH FFAAEH FFAAFH FFAB0H ··· 00ACH X

FFAABH 00ADH 00AEH 00AFH

0FFA0: 00B0H ··· 57H 80H FFAACH FFAADH FFAAEH FFAAFH FFAB0H ··· 00ACH X

FFAABH

③ PUSH BX; ( BX= 0F79H) SP= 00ACH ④ POP BX; SP= 00AEH 堆栈段SS=0FFA0H 堆栈段SS=0FFA0H

堆栈段SS=0FFA0H 堆栈段SS=0FFA0H 5.已知程序段如下: MOV AX,1234H MOV CL,4 ROL AX,CL DEC AX MOV CX,4 MUL CX

试问:(1)每条指令执行后,AX 寄存器的内容是什么?(2)每条指令执行后,CF,SF 及

ZF 的值分别是什么?(3)程序运行结束时,AX 及DX 寄存器的值为多少? 指令执行结果 AX CF SF ZF

MOV AX,1234H AX=1234H × × × MOV CL,4 AX=1234H × × × ROL AX,CL AX=2341H 1 0 0 DEC AX AX=2340H 1 0 0 MOV CX,4 AX=2340H 1 0 0

MUL CX AX=8D00H,DX=0000H 0 0 0

6.写出实现下列计算的指令序列。(假定X、Y、Z、W、R 都为字变量) (1)Z=W+(Z+X) (2)Z=W-(X+6)-(R+9)

(3)Z=(W*X)/(R+6) (4)Z=((W-X)/5*Y)*2 解答:(1)Z=W+(Z+X) 题号指令题号指令

(1) Z=W+(Z+X) (2) Z=W-(X+6)-(R+9) MOV AX,Z MOV DX,R MOV BX,X ADD DX,9 MOV CX,W MOV BX,X ADD BX ADD BX,6 ADC CX MOV AX,W MOV Z,AX SUB AX,BX SUB AX,DX MOV Z,AX

(3) Z=(W*X)/(R+6) (4) Z=((W-X)/5*Y)*2 MOV DX,0 MOV AX,W MOV AX,W MOV BX,X MOV BX,X SUB AX,BX MUL BX MOV DX,0 PUSH AX MOV CL,5 MOV AX,R DIV CL ADD AX,6 MOV BX,Y MOV CX,AX MUL BX POP AX MOV CL,2 DIV CX MUL CL

MOV Z,AX MOV Z,AX

MOV Z+1,DX MOV Z+1,DX

7.假定DX=1100100110111001B,CL=3,CF=1,试确定下列各条指令单独执行后DX 的值。

(1)SHR DX,1 (2)SHL DL,1 (3)SAL DH,1 (4)SAR DX,CL (5)ROR DX,CL (6)ROL DL,CL (7)RCR DL,1 (8)RCL DX,CL 解答:

题号指令执行结果

(1) SHR DX,1 DX=0110 0100 1101 1100(64DCH) (2) SHL DL,1 DX=1100 1001 0111 0010(C972H)

(3) SAL DH,1 DX=1001 0010 1011 1001(92B9H) (4) SAR DX,CL DX=1111 1001 0011 0111(F937H) (5) ROR DX,CL DX=0011 1001 0011 0111(3937H) (6) ROL DL,CL DX=1100 1001 1100 1101(C9CDH) (7) RCR DL,1 DX=1100 1001 1101 1100(C9DCH) (8) RCL DX,CL DX=0100 1101 1100 1011(4DCFH)

8.已知DX=1234H,AX=5678H,试分析下列程序执行后DX、AX 的值各是什么?该程序

完成了什么功能? MOV CL,4 SHL DX,CL MOV BL,AH SHL BL,CL SHR BL,CL OR DL,BL

解答:DX=2345H,AX=6780H。该程序完成的功能如图所示,将DX,AX拼装成双字后, 左移四位。 DX DX AX 1 2 3 4 5 6 7 8 DX AX 2 3 4 0 6 7 8 0

2 3 4 5 6 7 8 0 AX

9.试分析下列程序段: ADD AX,BX JNC L2

SUB AX,BX JNC L3

JMP SHORTL5

如果AX、BX 的内容给定如下: AX BX

(1)14C6H 80DCH (2)B568H 54B7H

问该程序在上述情况下执行后,程序转向何处?

解答:(1)AX=AX+BX=14C6H+80DCH=95A2H;CF=0;无进位,转移至L2;

(2)AX=AX+BX=B568H+54B7H=0A1FH;CF=1;有进位,继续执行; AX=AX-BX=0A1FH+54B7H=B568H;CF=1;有借位,继续执行; 无条件转移至SHORTL5

10.编写一段程序,比较两个5 字节的字符串OLDS 和NEWS,如果OLDS 字符串不同于

NEWS 字符串,则执行NEW_LESS,否则顺序执行。解答:编程如下,(说明:左测程序为常规编法,两个字符串在一个数据段中;右测的程序

要求OLDS在数据段中,NEWS在附加段中,利用串操作的指令是可行的) LEA SI,OLDS; LEA SI,OLDS LEA DI,NEWS; LEA DI,NEWS MOV CX,5; MOV CX,5 NEXT: MOV AL,[SI]; CLD MOV BL,[DI]; REPE CMPSB CMP AL,BL; JNZ NEW_LESS JNZ NEW_LESS; …… INC SI; JMP EXIT INC DI; NEW_LESS: LOOP NEXT; …… …… EXIT: …… JMP EXIT NEW_LESS: ……

EXIT: ……

11.若在数据段中从字节变量TABLE 相应的单元开始存放了0~15 的平方值,试写出包含

有XLAT 指令的指令序列查找N(0~15)的平方。(设N 的值存放在CL 中) 解答:

MOV BX,OFFSET TABLE;LEA BX,TABLE MOV CL,N MOV AL,CL XLAT

12.有两个双字数据串分别存放在ASC1 和ASC2 中(低字放低地址),求它们的差,结果

放在ASC3 中(低字放低地址)。 ASC1 DW 578,400 ASC2 DW 694,12 ASC3 DW ?,? 解答:编程如下,