微机原理期中自测试题参考答案 填空题(每空1分,共40分) 1、宏汇编语言程序被汇编时,指令语句产生代码指令,伪指令语句不产生代码指令,宏 指令语句可能产生也可能不产生代码指令。 2、调用程序、子程序传送参数的方法通常有寄存器、内存和堆栈三种方法 3、伪指令EOU、DB、DW、 MACRO的标号名字域必须有名字或标号的伪指令为EOU、 MACRO 4、虽在本模块无定义,却可以被单独引用的名字或标号,必须用 EXTRN伪指令给以说明。 注:讲义中由于疏忽误将 EXTRN写为 EXTERN,请更正过来 5、PEN∏UM的工作模式有实模式、保护模式、虛拟8086模式 6、下述机器数形式可表示的数值范围是(请用十进制形式写出)单字节无符号整数0-255 单字节有符号整数-128+1 注:微型计算机的有符号整数机器码采用补码表示,单字节有符号整数的范围为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、堆栈是按照先进后出原则组织的一片连续的存储区域 l1、变址寻址的有效地址是变址寄存器的内容与地址位移量代数和 12、指令ⅪLAT通常用于查表操作,在使用该指令前,应把表首的偏移首地址送入BX,待 转换的代码在表中的序号送AL 13、若要求不产生汇编错误,则字符串ABC只能出现在伪指令DB中。 14、100.25转换成单精度格式为010000101100100010000000 15、若x的单精度格式为11000001000000000则x=25.125 16、保护模式下,描述符表分为全局描述符表GDT、局部描述符表LDT、中断描述
微机原理期中自测试题参考答案 一、填空题(每空 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 实模式下,对于指令 MOVAX,DS:[BX 执行前DS=1000H,BX=1H, 则操作数DS:[BⅪ]的有效地址为0011H。 注:有效地址指段内的偏移量。 18、对于指令 PADDSW MMO,MMl 执行前MMO=0000000800FFFH,MMl=000000FF8000H 执行后,MMO=0000000080008000H 注:MMX的运算有饱和处理和环绕式处理两种方式。 环绕式处理运算结果上溢或下溢后,溢出的高位被舍弃。 如果将指令 PADDSW改为 PADDY,则得到结果0000000TF7FFFH,因为 PADDW采用 环绕式处理。 饱和处理运算结果上溢或下溢后,运算结果按该数据类型的边界进行截取。也就是说高于该 数据类型上限的结果被置为该类型的最大值,低于该数据类型下限的结果被置为该类型的最 小值 因为有符号数与无符号数的取值范围不同,所以饱和运算对于有符号数和无符号数分别有不 同的指令。 PADDSW是有符号字数据组饱和加法指令,对于试题而言结果应为00000008000800H 如果换成 PADDUSB,则为饱和方式无符号字数据组加法,结果为000000 FFFFFFFFH PADDUSB中,P表示成组( PACKED)数据(字节包装、字包装),ADD为加法,U为 无符号( Unsigned),S为饱和( Saturation),B为字节(Byte)。 9、为下述情况各举一例 (1)寄存器与存储单元内容相加送寄存器 ADDAL, BXI (2)寄存器互送MOAX,BX。 (3)将标志寄存器进栈 PUSHE。 (4)立即数与寄存器内容相加送寄存器 ADDAX,1234H。 (5)将48H、5AH存入字节数据区 ARRAYB ARRAYB DB48H,5AH 、指出下列指令所用到的寻址方式(10分 指令 目的操作数寻址方式 源操作数寻址方式 MOV AX, 1000H MOV AX, DS [1000HJ 直接寻址 MOVAX.DX MOV IBXLAL MOV [BX+SI+5L,AX 基址加变址寻址 MOⅤ[BP]BX MOVAX, [DI+101 MOV AX, ISI 变址寻址 MOV EAX, IESI 4+501 MOV EAX, EDX 2+EBP+OFHI
符表 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=0,ZF=1,IP=DONE的偏移地址。 四、(10分) 请在程序段的每一空框内填入一语句(不得修改其它语句),以实现下述功能:将字变量 VARM中的非零数据左移到最高位为“1”止,左移次数存入字节变量VARB中,左移后的 结果存入字变量ARW中。 MOV BLO ANDAX AX S DONE GOON: INC BL ADDAXAX UNS GOON DONE: MOV VARWAX MOV VARB BL 五、略 六、略
注:根据操作数的存放方式,可以把寻址方式分为立即数寻址、寄存器寻址和存储器寻址三 类,存储器的寻址方式分为直接寻址和间接寻址两种,间接寻址再细分又包括基址寻址、变 址寻址和基址加变址寻址。不同的书可能有不同的分类,掌握大的分类就可以了。 三、(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 五、略 六、略 AND AX, AX JNS GOON MOV VARB, BL