微机原理期中自测试题参考答案一、填空题(每空1分,共40分)
1、宏汇编语言程序被汇编时,指令语句产生代码指令,伪指令语句不产生代码指令,宏指令 语句可能产生也可能不产生代码指令。
2、调用程序、子程序传送参数的方法通常有寄存器、内存和堆栈三种方法。
3、伪指令EQU、DB、DW、MACRO的标号名字域必须有名字或标号的伪指令为EQU、MACRO。
4、虽在本模块无定义,却可以被单独引用的名字或标号,必须用EXTRN伪指令给以说明。
注:讲义中由于疏忽误将EXTRN写为EXTERN,请更正过来。
5、PENTIUM的工作模式有实模式、保护模式、虚拟8086模式。
6、下述机器数形式可表示的数值范围是(请用十进制形式写出):单字节无符号整数0~255;单字节有符号整数-128~+127。
注:微型计算机的有符号整数机器码采用补码表示,单字节有符号整数的范围为-128~+127。
7、在汇编语言中,END伪指令有两种格式。主模块中的格式为END启动指令标号;非主模块中的格式为END。
8、乘法指令MUL的指令格式只有一个源操作数,若源操作数的类型属性为字节,则目的操作数在AX中,若源操作数的类型属性为字,则目的操作数在DX:AX中。
注:将题中的目的操作数改为乘积更确切一些。
9、请给出标志寄存器中标志位OF、IF、SF、ZF、PF、CF的说明,OF 溢出、IF 中断、SF 符号、ZF 零、PF 奇偶、CF 进位。
10、堆栈是按照先进后出原则组织的一片连续的存储区域。
11、变址寻址的有效地址是变址寄存器的内容与地址位移量代数和。
12、指令XLAT通常用于查表操作,在使用该指令前,应把表首的偏移首地址送入BX,待转换的代码在表中的序号送AL。
13、若要求不产生汇编错误,则字符串'ABC'只能出现在伪指令DB中。
14、100.25转换成单精度格式为0100 0010 1100 1000 1000 0000 0000 0000 B。
15、若x的单精度格式为11000001110010010000000000000000B,则x=-25.125。
16、保护模式下,描述符表分为全局描述符表GDT、局部描述符表LDT、中断描述符表IDT。
17、实模式下,对于指令 MOV AX,DS:[BX]
执行前DS=1000H,BX=11H,
则操作数DS:[BX]的有效地址为0011H。
注:有效地址指段内的偏移量。
18、对于指令PADDSW MM0,MM1;
执行前MM0=000000008000FFFFH,MM1=00000000FFFF8000H,
执行后,MM0=0000 0000 8000 8000 H。
注:MMX的运算有饱和处理和环绕式处理两种方式。
环绕式处理运算结果上溢或下溢后,溢出的高位被舍弃。
如果将指令PADDSW改为PADDW,则得到结果000000007FFF7FFFH,因为PADDW采用环绕式处理。
饱和处理运算结果上溢或下溢后,运算结果按该数据类型的边界进行截取。也就是说高于该数据类型上限的结果被置为该类型的最大值,低于该数据类型下限的结果被置为该类型的最小值。
因为有符号数与无符号数的取值范围不同,所以饱和运算对于有符号数和无符号数分别有不同的指令。
PADDSW是有符号字数据组饱和加法指令,对于试题而言结果应为0000000080008000H。如果换成PADDUSB,则为饱和方式无符号字数据组加法,结果为00000000FFFFFFFFH。
PADDUSB中,P表示成组(PACKED)数据(字节包装、字包装……),ADD为加法,U为无符号(Unsigned),S为饱和(Saturation),B为字节(Byte)。
19、为下述情况各举一例。
⑴寄存器与存储单元内容相加送寄存器ADD AL,[BX]。
⑵寄存器互送MOV AX,BX。
⑶将标志寄存器进栈PUSHF。
⑷立即数与寄存器内容相加送寄存器ADD AX,1234H。
⑸将48H、5AH存入字节数据区ARRAYB ARRAYB DB 48H,5AH。
二、指出下列指令所用到的寻址方式(10分)
指令 目的操作数寻址方式 源操作数寻址方式
MOV AX,1000H
MOV AX,DS:[1000H] 直接寻址
MOV AX,DX
MOV [BX],AL
MOV [BX+SI+5],AX 基址加变址寻址
MOV [BP],BX
MOV AX,[DI+10]
MOV AX,[SI] 变址寻址
MOV EAX,[ESI*4+50]
MOV EAX,[EDX*2+EBP+0FH]
注:根据操作数的存放方式,可以把寻址方式分为立即数寻址、寄存器寻址和存储器寻址三类,存储器的寻址方式分为直接寻址和间接寻址两种,间接寻址再细分又包括基址寻址、变址寻址和基址加变址寻址。不同的书可能有不同的分类,掌握大的分类就可以了。
三、(10分)阅读如下程序段,回答提出的问题。
MOV AX,3456
XCHG AX,BX
MOV AX,3456
SUB AX,BX
JE DONE
KK: ADD AX,BX
...
DONE:
该程序段执行完JE DONE语句后,AX=00H,ZF=1,IP=DONE的偏移地址。
四、(10分)
请在程序段的每一空框内填入一语句(不得修改其它语句),以实现下述功能:将字变量VARM1中的非零数据左移到最高位为“1”止,左移次数存入字节变量VARB中,左移后的结果存入字变量VARW中。
MOV BL,0
MOV AX,VARW1
JS DONE
GOON: INC BL
ADD AX,AX
DONE, MOV VARW,AX
五、略
六、略
1、宏汇编语言程序被汇编时,指令语句产生代码指令,伪指令语句不产生代码指令,宏指令 语句可能产生也可能不产生代码指令。
2、调用程序、子程序传送参数的方法通常有寄存器、内存和堆栈三种方法。
3、伪指令EQU、DB、DW、MACRO的标号名字域必须有名字或标号的伪指令为EQU、MACRO。
4、虽在本模块无定义,却可以被单独引用的名字或标号,必须用EXTRN伪指令给以说明。
注:讲义中由于疏忽误将EXTRN写为EXTERN,请更正过来。
5、PENTIUM的工作模式有实模式、保护模式、虚拟8086模式。
6、下述机器数形式可表示的数值范围是(请用十进制形式写出):单字节无符号整数0~255;单字节有符号整数-128~+127。
注:微型计算机的有符号整数机器码采用补码表示,单字节有符号整数的范围为-128~+127。
7、在汇编语言中,END伪指令有两种格式。主模块中的格式为END启动指令标号;非主模块中的格式为END。
8、乘法指令MUL的指令格式只有一个源操作数,若源操作数的类型属性为字节,则目的操作数在AX中,若源操作数的类型属性为字,则目的操作数在DX:AX中。
注:将题中的目的操作数改为乘积更确切一些。
9、请给出标志寄存器中标志位OF、IF、SF、ZF、PF、CF的说明,OF 溢出、IF 中断、SF 符号、ZF 零、PF 奇偶、CF 进位。
10、堆栈是按照先进后出原则组织的一片连续的存储区域。
11、变址寻址的有效地址是变址寄存器的内容与地址位移量代数和。
12、指令XLAT通常用于查表操作,在使用该指令前,应把表首的偏移首地址送入BX,待转换的代码在表中的序号送AL。
13、若要求不产生汇编错误,则字符串'ABC'只能出现在伪指令DB中。
14、100.25转换成单精度格式为0100 0010 1100 1000 1000 0000 0000 0000 B。
15、若x的单精度格式为11000001110010010000000000000000B,则x=-25.125。
16、保护模式下,描述符表分为全局描述符表GDT、局部描述符表LDT、中断描述符表IDT。
17、实模式下,对于指令 MOV AX,DS:[BX]
执行前DS=1000H,BX=11H,
则操作数DS:[BX]的有效地址为0011H。
注:有效地址指段内的偏移量。
18、对于指令PADDSW MM0,MM1;
执行前MM0=000000008000FFFFH,MM1=00000000FFFF8000H,
执行后,MM0=0000 0000 8000 8000 H。
注:MMX的运算有饱和处理和环绕式处理两种方式。
环绕式处理运算结果上溢或下溢后,溢出的高位被舍弃。
如果将指令PADDSW改为PADDW,则得到结果000000007FFF7FFFH,因为PADDW采用环绕式处理。
饱和处理运算结果上溢或下溢后,运算结果按该数据类型的边界进行截取。也就是说高于该数据类型上限的结果被置为该类型的最大值,低于该数据类型下限的结果被置为该类型的最小值。
因为有符号数与无符号数的取值范围不同,所以饱和运算对于有符号数和无符号数分别有不同的指令。
PADDSW是有符号字数据组饱和加法指令,对于试题而言结果应为0000000080008000H。如果换成PADDUSB,则为饱和方式无符号字数据组加法,结果为00000000FFFFFFFFH。
PADDUSB中,P表示成组(PACKED)数据(字节包装、字包装……),ADD为加法,U为无符号(Unsigned),S为饱和(Saturation),B为字节(Byte)。
19、为下述情况各举一例。
⑴寄存器与存储单元内容相加送寄存器ADD AL,[BX]。
⑵寄存器互送MOV AX,BX。
⑶将标志寄存器进栈PUSHF。
⑷立即数与寄存器内容相加送寄存器ADD AX,1234H。
⑸将48H、5AH存入字节数据区ARRAYB ARRAYB DB 48H,5AH。
二、指出下列指令所用到的寻址方式(10分)
指令 目的操作数寻址方式 源操作数寻址方式
MOV AX,1000H
MOV AX,DS:[1000H] 直接寻址
MOV AX,DX
MOV [BX],AL
MOV [BX+SI+5],AX 基址加变址寻址
MOV [BP],BX
MOV AX,[DI+10]
MOV AX,[SI] 变址寻址
MOV EAX,[ESI*4+50]
MOV EAX,[EDX*2+EBP+0FH]
注:根据操作数的存放方式,可以把寻址方式分为立即数寻址、寄存器寻址和存储器寻址三类,存储器的寻址方式分为直接寻址和间接寻址两种,间接寻址再细分又包括基址寻址、变址寻址和基址加变址寻址。不同的书可能有不同的分类,掌握大的分类就可以了。
三、(10分)阅读如下程序段,回答提出的问题。
MOV AX,3456
XCHG AX,BX
MOV AX,3456
SUB AX,BX
JE DONE
KK: ADD AX,BX
...
DONE:
该程序段执行完JE DONE语句后,AX=00H,ZF=1,IP=DONE的偏移地址。
四、(10分)
请在程序段的每一空框内填入一语句(不得修改其它语句),以实现下述功能:将字变量VARM1中的非零数据左移到最高位为“1”止,左移次数存入字节变量VARB中,左移后的结果存入字变量VARW中。
MOV BL,0
MOV AX,VARW1
JS DONE
GOON: INC BL
ADD AX,AX
DONE, MOV VARW,AX
五、略
六、略