第2章 微型计算机指令系统

课程名称:微机原理与应用 总分:170 答题时长:120分钟 出卷人:宋亚宇

、单项选择题:(共41题,41分)
1 只能做源操作数的操作数是 。
立即数
寄存器操作数
存储器操作数
I/O操作数
2 下列哪种寻址方式不需要计算有效地址 __ __。
寄存器间接寻址
基址寻址
寄存器寻址
変址寻址
3 直接寻址方式默认的段基址是放在__ __段寄存器中。
CS
DS
SS
ES
4 在寄存器间接寻址方式中,如果用来间址的寄存器是BP,则默认在 段寻找数据。
CS
DS
SS
ES
5 在基址寻址方式中,如果用到的基址器是BX,则默认在 _ ___段寻找数据。
CS
DS
SS
ES
6 在指令 MOV DX, COUNT[SI]中,源操作数的寻址方式是 。
直接寻址
寄存器间接寻址
基址寻址
変址寻址
7 已知有关寄存器的内容为 (DS)=B200H,(BX)=3000H,偏移量BUFF=100H,指令MOV AX, BUFF[BX]的源操作数的物理地址是 。
B5100
0E400
B5000
B2100
8 在指令 MOV AX, COUNT[BX]中,源操作数的寻址方式是 。
直接寻址
寄存器间接寻址
基址寻址
変址寻址
9 已知有关寄存器的内容为 (SS)=A100H,(BP)=4000H,偏移量TABLE=0AH,指令MOV AX, TABLE[BP]的源操作数的物理地址是 H。
A500A
0E10A
A5000
A140A
10 在下列数据传送指令中,错误的指令是____。
MOV AL,21H
MOV AX,SI
MOV CL,DH
MOV 34H,AL
11 下列传送语句正确的是 。
MOV CL, 1000
MOV [DI], [BX]
MOV AL, BX
MOV AL, 0
12 下列汇编语句正确的是 。
POP CX
POP CS
POP AL
POP 1234H
13 在执行换码指令XLAT之前,需要将表格首址送给____寄存器
AX
BX
CX
DX
14 当执行POP指令以后,栈指针SP的变化为  ()
SP加1
SP减1
SP减2
 SP加2
15 在输入输出指令中,输入或输出的数据必须存放在 ____中
AX或AL
BX或BL
CX或CL
DX或DL
16 在输入输出指令中,如果端口地址大于FFH则必须用 ____寄存器间址
BX
SI
BP
DX
17 下列哪条传送指令改变标志寄存器的状态____。
MOV AX,BX
IN AL, 20H
PUSH BX
POPF
18 以下四条指令中,正确的指令是____。
MOV AX, BL
ADD [BX], [SI]
ROL AX, 5
IN AL, 20H
19 已知寄存器(AL)=45H,(BL)=31H,执行指令ADD AL,BL后,标志位ZF的状态是____。
1
0
不确定
高阻态
20 已知寄存器(AL)=45H,(BL)=31H,执行指令ADD AL,BL后,标志位SF的状态是____。
1
0
不确定
高阻态
21 INC指令的操作数不能是 操作数。
寄存器操作数
存储器操作数
I/O操作数
立即数
22 在乘法指令中, 操作数不可以做乘数
寄存器操作数
存储器操作数
I/O操作数
立即数
23 在字节乘法指令执行前,应将被乘数放到 寄存器中
AL
CL
AH
BL
24 字节扩展指令CBW的功能是将AL的符号位扩展到 中
CL
CH
AH
BL
25 在以下四条指令中能实现将AL内容的低4位取反,高4位不变的指令是 。
XOR AL, 00001111B
XOR AL, 11110000B
AND AL, 00001111B
OR AL, 00001111B
26 在以下四条指令中能实现将AL内容的中间4位置0,其余4位不变的指令是 。
XOR AL, 00111100B
XOR AL, 11000011B
AND AL, 11000011B
OR AL, 11000011B
27 在以下四条指令中能实现将AL内容的中间4位置1,其余4位不变的指令是 。
OR AL, 00111100B
XOR AL, 11000011B
AND AL, 11000011B
XOR AL, 11000011B
28 下列8086汇编语言执行后,AX中的内容与其它三条指令有可能不同的是 。
XOR AX, AX
AND AX, 0
OR AX, 0
SUB AX, AX
29 TEST指令执行后,下面那种说法正确 。
源操作数发生变化
目的操作数发生变化
源操作数和目的操作数均不发生变化,仅标志位发生变化
源操作数、目的操作数和标志位均发生变化
30 在移位指令中,如果移位次数超过1,应将移位次数放入 寄存器中。
AL
BL
CL
DL
31 假设(DX)=A3B9H,(CL)=3,(CF)=1,确定指令SHL DX,CL执行后DX寄存器的值是 。
2536H
1DC8H
1CD8H
2564H
32 假设(DX)=A3B9H,(CL)=3,(CF)=1,确定指令ROR DX,CL执行后DX寄存器的值是 。
3567H
4631H
3258H
3477H
33 在串操作指令中,源串的段基址和変址器默认组合关系式 。
DS:DI
DS:SI
ES:SI
ES:DI
34 在串操作指令MOVSB执行前,如果想地址增量传送,则应该执行指令 。
CLD
STD
CLI
STI
35 在执行串操作指令REP MOVSB前,应将传送的字节数送到 中。
AX
BX
CX
DX
36 指令REPZ CMPSB的循环结束条件是 。
CX=0或ZF=0
CX=0或ZF=1
CX=1或ZF=0
CX=1或ZF=1
37 指令LOSB指令是将DS:SI指向单元的内容送 。
AX
BX
CL
AL
38 条件转移指令的转移范围是转移到相距本条指令的下一条指令的 个字节的范围之内。
-128~128
-127~128
-128~+127
–127~127
39 指令JZ NEXT的转移条件是 。
ZF=0
ZF=1
CF=0
CF=1
40 如果在无符号比较指令中选择能实现大于转移功能的指令,应该选择下面的 指令。
JL
JA
JG
JB
41 指令LOOPZ的循环结束条件是 。
CX=0或ZF=0
CX=0或ZF=1
CX=1或ZF=0
CX=1或ZF=1
、填空题:(共38题,75分)
1 立即数用来给()和()赋初值,它只能做()操作数
2 无有效地址产生的寻址方式是 () 寻址和 () 寻址方式。
3 在寄存器寻址方式中,如果用来存放地址的寄存器是BX,SI、DI则默认在 () 段寻址,如果用来存放地址的寄存器是BP则默认在() 段寻址
4 直接寻址方式的默认段寄存器是_____
5 在変址寻址方式中,默认在___寻找数据。
6 在基址変址寻址方式中,如果基址器是BP,则默认在___寻址
7 已知有关寄存器的内容为:(DS)=0F100H,(SS)=0A100H,(SI)=1001H,(DI)=2000H,(BP)=4000H,偏移量TABLE=0AH,COUNT=0BH。则指令MOV AX, TABLE[BP][DI]中源操作数的物理地址是 (),指令MOV DX, TCOUNT[BX]中源操作数的物理地址是()。
8 某一个存储单元的段地址为ABCDH,偏移地址为ABCDH,试说明其物理地址是();而另一个存储单元的物理地址为F1000H,偏移地址为FFF0H,试说明其段地址是() 。
9 在MOV指令中,不能做目的操作数的寄存器是()、() 和()。
10 堆栈的操作原则是() 、两条堆栈指令分别是()和 ()。
11 在字节输入输出指令中,输入或输出的数只能放在___寄存器中。能用来间接寻址外设端口的寄存器是()。
12 指令LDS BX,TABLE[SI]执行前,假设 ( 20050H)=10003042H, (BX)=0000H,(DS)=2000H,TABLE=0020H,(SI)=0030H,指令执行后(BX)=(); (DS)=() 。
13 已知(AL)=B1H,(BL)=F8H,执行ADD AL,BL指令后寄存器(AL)=(),标志位CF=()、ZF=()、SF= ()。
14 已知(AL)=27H,(BL)=38H,执行SUB AL,BL指令后寄存器(AL)=(),标志位CF=() 、PF= () 、SF= ()
15 INC指令对标志位CF () 影响, () 不能做它的操作数
16 SUB指令与CMP指令的共同点是 对目的操作数与源操作数都是进行()运算 ,其中()指令执行结果仅对标志位有影响。
17 字扩展指令CBW是将AL的符号位扩张到 ()中,字扩展指令CWD是将AX的符号位扩张到 ()中
18 字节乘法指令执行后乘积的高8位会被存放到 ()中,字节乘法指令执行后乘积的高8位会被存放到 ()中
19 在字节除法指令执行后,商会被存放到 ()中,余数被存放到 ()中。
20 在字除法指令执行后,商会被存放到 ()中,余数被存放到 ()中。
21 AND指令和TEST指令对源和目的操作数进行 ()   操作, () 指令执行结果对目的操作数有影响, ()  指令指令执行结果仅对标志位有影响。
22 逻辑运算指令使标志位CF=() 、OF= ()。
23 在逻辑运算指令中, () 指令有置0的功能、 () 指令有置1的功能、 () 指令有取反的功能
24 在逻辑运算中,欲置0的位应该与 () 进行() 操作、欲置1的位应该与 () 进行() 操作、欲取反的位应该与 () 进行 () 操作。
25 在移位运算中,在有效数位不被移出的情况下,左移1位相当于 () 2,右移一位相当于 () 2。
26 在循环移位指令中, () 指令破坏目的操作数的内容, () 指令目的操作数的相对位置不被破坏。
27 在循环指令中,如果希望目的操作数和CF位的内容都能得以保存不被破坏,应该使用 ()。
28 假设(DX)=A3B9H,(CL)=3,(CF)=0,确定指令ROL DL,CL执行后DX寄存器的值是(),CF= () 。
29 假设(DX)=A3B9H,(CL)=3,(CF)=1,确定指令RCL DX,CL执行后DX寄存器的值是(),CF=()
30 在串操作指令REP MOVSB执行前,需要把源数据块首址送到() 寄存器,目的数据块首址送到() 寄存器,数据块长度送到() 寄存器。
31 在执行了CLD指令后,串操作指令REPZ CMPSB循环结束的条件是()或(),适合找第一个()数。
32 在执行了CLD指令后,指令LODSB的功能是将DS:SI指向单元的内容送给 () 寄存器,SI的内容会自动加()
33 在执行了CLD指令后,指令STOSB的功能是将() 寄存器的内容送给 () 指向的单元,命令执行后DI的内容会自动加 () 。
34 在循环控制指令LOOP、LOOPZ、LOOPNZ中,循环次数应事先放入() 寄存器,如果要实现CX不等于零且ZF=1循环的功能,应该选择这三条指令中的 () 指令。
35 无符号数比较指令中能实现大于等于转的指令是 () ,有符号数比较时能实现小于转移的指令是 ()
36 指令LOOPNZ循环继续的条件是 (),循环退出的条件是 () 。
37 在无条件转移指令中,实现段内转移仅需要改变 () 值,要实现段间转移还需要改变 () 的值。
38 在进行多位数加法时应先给 () 标志位清0,在进行串操作需要地址增量传递数据,需要给 () 标志位清0,如果允许外部中断请求,需要给 () 标志置1
简答题:(共3题,6分)
1 列出你所知道的6种寻址方式,并用传送指令MOV分别写出源操作数是对应寻址方式、目的操作数是AL的指令。
2 简述标志寄存器FLAG各个标志位的名称及作用(在何种情况下置1)。
3 说明以下8086指令是否正确,如果不正确,简述理由 :1.ADD BL. 0F100H 2.SUB ES,20H 3.AND 0FH,AL 4.CMP [SI], [DI] 5.INC 2000H 6.MUL BL,CL 7.DIV 08H 8.SAL AX, 5
问答题:(共19题,38分)
1 已知有关寄存器的内容为:(DS)=0F100H,(SS)=0A100H,(SI)=1001H,(DI)=2000H,(BP)=4000H,偏移量TABLE=0AH,COUNT=0BH。说明题2-1中第1小题和第2~7小题指令源操作数的物理地址。
2 某一个存储单元的段地址为ABCDH,偏移地址为ABCDH,试说明其物理地址是什么;而另一个存储单元的物理地址为F1000H,偏移地址为FFF0H,试说明其段地址是什么?
3 试分别用三种寻址方式的指令将偏移地址为5000H的存储单元的一个字传送到6000H单元,要求源操作数和目标操作数分别采用一下寻址方式:

1、直接寻址

2、寄存器间接寻址

3、变址寻址

4 阅读以下程序段,说明其运行结果:

1、MOV DX, 0F100H    初值:(F100H)=’A’   (4100H)=’B’

   MOV DH, [DX]       结果:(AH)=     H

   MOV AH, [DX]

5 试用8086指令编写程序段,分别实现以下要求:

1、将AL和BL寄存器的内容互换;

2、将1000H和1001H内存单元中的字节互换;

3、将2000H和2100H内存单元的字互换。

6 将首地址为3000H的100个存储单元的内容传送到首地址为3100H的内存区,要求分别使用以下指令:

1、一般传送指令

2、串操作指令MOVS,但不加重复前缀REP

3、加重复前缀的串操作指令REP MOVS。

7 说明以下8086指令是否正确,如果不正确,简述理由。

1、ADD BL. 0F100H

2、SUB ES,20H

3、AND 0FH,AL

4、CMP [SI], [DI]

5、INC  2000H

6、MUL BL,CL

7、DIV 08H

8、SAL AX, 5

8 已知寄存器AL和BL的内容分别如下,试分析执行ADD AL,BL指令后寄存器AL及标志寄存器CF、ZF、SF、AF、OF和PF的内容。

1、(AL)=45H,(BL)=31H

2、(AL)=7AH,(BL)=56H

3、(AL)=F2H,(BL)=8DH

4、(AL)=B1H,(BL)=F8H

5、(AL)=37H,(BL)=C9H

9 已知寄存器AL和BL的内容分别如下,试分析执行SUB AL,BL指令后寄存器AL及标志寄存器CF、ZF、SF、AF、OF和PF的内容。

1、(AL)=96H,(BL)=42H 

2、(AL)=27H,(BL)=38H 

3、(AL)=6CH,(BL)=A1H 

4、(AL)=B4H,(BL)=E7H

5、(AL)=1DH,(BL)=E5H

10 阅读以下程序段:

MOV  SI, 4000H

MOV DI, 4100H

MOV AL, [SI]

ADD AL, [DI]

DAA               

MOV [DI],AL         

MOV AL,[SI+1]     

ADC AL,[DI+1]      

DAA

MOV [DI+1], AL

1.根据给定的初值,说明运行结果。

初值:(4000H)=63H   (4001H)=54   (4100H)=88H   (4101H)=29

结果:(4100H)=            (4101H)=      

2.在以上程序段中,当执行ADD AL, [DI]指令后,但尚未执行DAA指令时,有关寄存器和标志位的内容为:

(AL)=      ,(CF)=    ,(ZF)=     ,(SF)=     ,(AF)=     ,

(OF)=     ,(PF)=     。

3.在以上程序段中,当第一次执行DAA指令后,有关寄存器和标志位的内容为:

(AL)=      ,(CF)=    ,(ZF)=     ,(SF)=     ,(AF)=     ,

(OF)=     ,(PF)=     。

4.如果在以上程序段中去掉两条DAA指令,但初值不变,则运行结果为:

(4100H)=          (4101H)=      

11  阅读以下程序

      START: LEA BX, TABLE

             MOV CL, [BX]

    LOOPER: INC BX

             MOV AL, [BX]

             CMP AL, 0AH

             JNC X1

             ADD AL,30H

             JMP NEXT

          X1: ADD AL, 37H

       NEXT: MOV [BX],AL

              DEC CL

              JNZ LOOPER

1、假设从地址TABLE开始,10个存储单元中的内容依次为:

05H,01H,09H,0CH,00H,0FH,03H,0BH,08H,0AH

依次写出运行以上程序段后,从地址TABLE开始的10个存储单元的内容。

2、简要写出以上程序段的功能。

12 用一条或几条8086指令实现以下要求:

1、AL寄存器清零,但进位标志CF不变

2、将AL和进位位同时清零                  

3、将进位标志CF清零,但AL内容不变

4、将AL内容的第0、2、4、6位取反,其余位不变      

5、将AL高四位清零,低四位保留

6、将AL中的带符号数取绝对值后存入BL

7、统计AX中1的个数,统计结果送CL

8、3000H和3001H单元存放的非压缩BCD,压缩后放入3002H单元

9、将4000H和4001H单元存放的两个ASCII码分别转换为为相应的十六进制数,然后共同存放到4002H单元,前者放在低四位,后者放在高四位。例如:

  初值为:(4000H)=42H=’B’  (4001H)=36H=‘6’

  要求结果为: (4002H)=6BH

10、将BL中的无符号数乘以128,高位放在BH中,低位放在BL中,要求执行速度尽量快。      

11、将CL中的带符号数乘以16,高位放在CH中,低位放在CL中,要求执行速度尽量快。

12、一个4 位十进制数以压缩BCD 码的形式存放在偏移地址为DATA 和DATA+1 的内存单元中,DATA 单元存放个位和十位,DATA+1 单元存放百位和千位。要求将其转换为相应的ASCII 码,存放到以BUFF 为首地址的4 个内存单元。例如:

      初值为: (DATA)=47H , (DATA+1)=92H

     要求结果为:(BUFF)=‘7’ , (BUFF+1)=‘4’

                (BUFF+2)=‘2’ , (BUFF+3)=‘9’

13 已知被减数和减数均为包括6 个字节的十六进制数,分别存在首地址为DATA1 和DATA2 的内存区,低位在前,高位在后。试用8086/8088 指令编写减法的程序段,要求相减以后得到的结果存放在首地址为DATA3 的内存区。

 

14 已知被减数和减数均为包括6 个字节的十六进制数,分别存在首地址为DATA1 和DATA2 的内存区,低位在前,高位在后。试用8086/8088 指令编写减法的程序段,要求相减以后得到的结果存放在首地址为DATA3 的内存区。 如果题 中的被减数和减数均为包括包括6 个字节的压缩BCD 码(相当于12 位十进制数),试重新编写减法的程序段。
15 有一个数据块中存放了若干8 位无符号数,数据块的长度存放在BLOCK单元,数据块本身从BLOCK+1 单元开始存放,编写程序段找出数据块中最大的无符号数,存放到MAX 单元。
16 以BUFFER 为首地址的内存区存放了100 个16 位带符号数,编写程序段比较它们的大小,找出其中最小的带符号数,存进MIN 和MIN+1 单元。
17 两个字符串的长度均为100,首地址分别为STRING1 和STRING2,比较两个字符串是否完全相同,如果相同,将BL 寄存器置为00H;如果不完全相同,将BL 寄存器置为FFH,并将第一个字符串中的第一个不相同字符的地址放在SI寄存器。
18 假设(BX)=12E3H,变量VALUE中存放的内容为1234H,确定下列各条指令单独执行BX寄存器的内容:

1、XOR  BX,VALUE

2、AND   BX,VALUE

3、OR  BX, VALUE

4、 XOR  BX,00FFH

5、AND  BX,0

6、TEST  BX,0001H

19 假设(DX)=0A3B9H,(CL)=3,(CF)=1,确定下列各条指令执行后DX寄存器的值。

1、SHR  DX,1

2、SAR  DX,CL

3、SHL  DX,CL

4、SHL  DL,1

5、ROR  DX,CL

6、ROL  DL,CL

7、SAL   DH,1

8、RCL  DX,CL

9、RCR  DL,1

程序阅读题:(共5题,10分)
1 阅读以下程序:

1、假设从地址TABLE开始,10个存储单元中的内容依次为:05H,01H,09H,0CH,00H,0FH,03H,0BH,08H,0AH依次写出运行以上程序段后,从地址TABLE开始的10个存储单元的内容。

2、简要写出以上程序段的功能。

2 将首地址为3000H的100个存储单元的内容传送到首地址为3100H的内存区,要求分别使用以下指令:

(1)一般传送指令

(2)串操作指令MOVS,但不加重复前缀REP

(3)加重复前缀的串操作指令REP MOVS。

3 有一个数据块中存放了若干8 位无符号数,数据块的长度存放在BLOCK单元,数据块本身从BLOCK+1 单元开始存放,编写程序段找出数据块中最大的无符号数,存放到MAX 单元。
4 以BUFFER 为首地址的内存区存放了100 个16 位带符号数,编写程序段比较它们的大小,找出其中最小的带符号数,存进MIN 和MIN+1 单元。
5 两个字符串的长度均为100,首地址分别为STRING1 和STRING2,比较两个字符串是否完全相同,如果相同,将BL 寄存器置为00H;如果不完全相同,将BL 寄存器置为FFH,并将第一个字符串中的第一个不相同字符的地址放在SI寄存器。