1、电子科技大学微机原理与接口技术试题一、问答题1、下列字符表示成相应的 ASCII 码是多少?(1)换行 0AH (2)字母“Q” 51H (3)空格 20H2、下列各机器数所表示数的范围是多少?(1)8 位二进制无符号定点整数;0255(2)8 位二进制无符号定点小数;0.996094 (3)16 位二进制无符号定点整数;065535(4)用补码表示的 16 位二进制有符号整数;-32768327673、(111)X=273,基数 X=?164、有一个二进制小数 X=0.X1X2X3X4X5X6(1) 若使 X1/2,则 X1X6应满足什么条件? X1=1 若使 X1/8,则 X1X6应满足什
2、么条件?X1 X2 X3=1(2)5 有两个二进制数 X=01101010,Y=10001100,试比较它们的大小。(1)X 和 Y 两个数均为无符号数; (2)X 和 Y 两个数均为有符号的补码数。 二、填空题1、对于 R 进制数来说,其基数(能使用的数字符号个数)是 R 个 ,能使用的最小数字符号是 0 。1 2、十进制数 72 转换成八进制数是 110Q。3、与十进制数 67 等值的十六进制数是 43H 。1 4、二进制数 101.011 转换成十进制数是 5.375。2 5、十六进制数 0E12 转换成二进制数是 1110 0001 0010B 。三、选择题1、在计算机内部,一切信息的
3、存取、 处理和传送都是以 D 形式进行的。A)EBCDIC 码 B)ASCII 码 C)十六进制编码 D)二进制编码2、与十进制数 56 等值的二进制数是 A 。A)111000 B)111001 C)101111 D)1101103、十进制数 59 转换成八进制数是 A 。A)73Q B)37Q C)59Q D)112Q4、与十进制数 58.75 等值的十六进制数是 B 。A)A3.CH B)3A.CH C)3A.23H D)C.3AH5、二进制数 1101.01 转换成十进制数是 C 。A)17.256 B)13.5 C)13.25 D)17.56、二进制数 111010.11 转换成十六
4、进制数是 B 。A)3ACH B)3A.CH C)3A3H D)3A.3H7、十六进制数 1CB.D8 转换成二进制数是 D 。A)110001011.11001 B)111101011.11101 C)111101011.11101 D)111001011.110118、将十六进制数 FF.1 转换成十进制数是 C 。A)255.625 B)2501625 C)255.0625 D)250.06259、十进制正数 43 的八位二进制原码 B 。A)00110101 B)00101011 C)10110101 D)1010101110、十进制正数 38 的八位二进制补码是 D 。A)00011
5、001 B)10100110 C)10011001 D)00100110四、是非判断题1、在第三代计算机期间出现了操作系统。 ( )2、对于种类不同的计算机,其机器指令系统都是相同的。 ( )3、在计算机中,数据单位 bit 的意思是字节。 ( )4、八进制数的基数为 8,因此在八进制数中可以使用的数字符号是0、1、2、3、4、5、6、7、8。( )5、在汉字国标码 GB2312-80 的字符集中,共收集了 6763 个常用汉字。 ( )1. 微处理器,微型计算机和微型计算机系统三者之间有何区别?答:微处理器即 CPU,它包括运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算
6、和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存 储器、 I/O 接口电路以及 总线构成;微型计算机系统则包括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备;由此可见,微处理器是微型计算机的重要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。2. CPU 在内部结构上由哪几部分构成?CPU 应具备哪些主要功能?答:CPU 在内部结构上由运算器、 控制器、寄存器阵列 和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。3. 累加器和其它通用寄存器相比有何不同?答:累加器是
7、通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。累加器除了可用做通用寄存器存放数据外, 对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。 4. 微型计算机的总线有哪几类?总线结构的特点是什么?答:微型计算机的总线包括地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计生产和维护 ,更主要的是便于 扩充。 5. 举出 10 个微型计算机应用的例子。答:略6. 计算机 I/O 接口有何用途?试列出 8 个 I/O 接口。答:计算机 I/O 接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。
8、例如:串行通讯口(COM 口)、并行打印机口、软盘驱动器接口、硬 盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB 、SCSI 等)。7. 现在,计算机主板上一般都包括哪些 I/O 接口?I/O 接口卡如何与主板相连?答:现在,计算机主板上一般包括串行通讯口、并行打印口、 软盘驱动器接口、硬盘驱动器接口、光驱接口、USB 接口等。显示器适配器、网卡、modem 卡等 I/O 接口卡一般 通过总线插槽与主板相连。8. 简述系统总线,AGP 总线 ,PCI 总线及 ISA 总线的作用。答:系统总线是 CPU 与存储器及桥接器之间传递信息的通道,AGP 总线专门用与连接 C
9、PU 与显示器适配器, PCI 总线一般用于连接一些高速外设接口作为高速外设与 CPU 或内存交换信息的通道,而 ISA 总线一般用于连接一些非高速外设接口作为非高速外设与 CPU 或内存交换信息的通道。9. 试说明计算机用户,计算机软件, 计算机硬件三者的相互关系。答:计算机用户,计算机软件系统, 计算机硬件系统共同构成一个计算机应用系统,三者在该系统中 处于三个不同的层次。 计 算机用户处于最高层,计算机软件处于中间层,计 算机硬件系统处于最下层。在这里计算机用户是系统的主宰,他们通过软件系 统与硬件系统发生关系,指挥计算机硬件完成指定的任务。即, 计算机用户使用程序设计语言编制 应用程序
10、,在系 统软件的干预下使用硬件系统进行工作。10. 简述 DOS 操作系统各部分的作用及相互关系。答:DOS 操作系统包括 3 个模块:DOS-Shell(COMMAND.COM) 、DOS-Kernel(IBMDOS.COM)、DOS-BIOS(IBMBIO.COM).DOS-Shell 模块对用户输入的 DOS 命令行或应用程序行作出响应。即负责 DOS 命令的解释和任务的分配,具体工作则要靠 DOS-Kernel 模块所提供的系统功能完成。DOS-Kernel 模块尽管提供了许多的系统功能,但由于执行每一个系统功能过程中,完全依赖各种 设备实现指定的功能,因此,它 还要进一步调用DOS-
11、BIOS 模 块中的设备驱动 程序才能工作。DOS-BIOS 模 块对 DOS-Kernel 传送的“请求“进行解释,最终转换为对固化在 ROM-BIOS 中的设备 控制程序的请求并由它们去控制硬件,完成指定的操作。11. 存储单元的选择由什么信号控制?读、写靠什么信号区分?答:存储单元的选择由地址信号控制,而对存储单元进行读操作还是写操作则要靠读、写信号区分。12. 以一个可执行文件的运行为例,简述程序执行过程。答:当在 DOS 提示符下键入一个可执行文件名称(或在其它操作系 统环境下执行有关操作)后,操作系统自动将该文件从外存装入内存并使指令指针指向其第一条指令,从而启动文件执行过程。首先
12、将第一条指令从内存取入CPU 中 译码执行,同时指令指针自动加 1 或按指令的要求作出相应改变,指向下一条要执行的指令,接着将下一条指令从内存取入 CPU 译码执行, 这样不断重复取指令和执行指令的过程,逐条执行指令,直至程序结束。1.把下列各数化成二进制数和八进制数(二进制取 3 位小数,八进制取一位小数): 7+34,364 ,73.5, 725.9375,25.34答:7+3/4=111.110B; 7+3/4=7.6O; 3/64=0.000B; 3/64=0.0O; 73.5=1001001.100B; 73.5=111.4O;725.9375=1011010101.111B; 72
13、5.9375=1325.7O; 25.34=11001.011B; 25.34=31.3O2.把下列各数化成十进制数:101.10011B ,22.2O, AD.4H答:101.10011B=5.59375; 22.2O=18.25; AD.4H=173.253.完成下列二进制数运算:101.111+11.011, 1001.10-110.01,101.11*11.01, 101110111/1101 答:101.111+11.011=1001.01; 1001.10-110.01=11.01;101.11*11.01=10010.1011; 101110111/1101=11100.11 4
14、.完成下列各十六进制数的运算: A39E+28DC,D5AB-7CE5,2BF*4C,C16E/3A答:A39E+28DC=CC7A; D5AB-7CE5=58C6; 2BF*4C=D0B4; C16E/3A=355.C25.先将 15B*8E/2A 中的十六进制数化成十进制数,再进行计算,最后再将结果化为十六进制数。答:15BH*8EH/2AH=347*142/42=49274/42=1173.19=495.30AH6.试分别判断下列各组数据中哪个数据最大?哪个数据最小? (1) A=0.1001B,B=0.1001D,C=0.1001H (2) A=10111101B,B=1001D,C=
15、111H 答:(1) A 最大 , C 最小; (2) B 最大, A 最小;1.写出下列各数的二进制原码和补码(最后两个用双字节): 0,96,-128,-38H,127,105,879H,-32768答:上述各数的原码依次为:00000000(10000000), 01100000, 无, 10111000, 01111111, 01101001, 0000100001111001, 无;上述各数的补码依次为:00000000, 01100000, 10000000, 11001000, 01111111, 01101001, 0000100001111001, 1000000000000
16、000;2.分别列出下述 10 进制数的 16 进制数、非压缩的 BCD 数、压缩的BCD 数、ASCII 数字串(用 16 进制形式写出):10, 64, 78, 81, 92, 100, 125, 255答:上述各数的 16 进制数依次为:AH,40H,4EH,51H,5CH,64H,7DH,FFH;上述各数的非压缩的 BCD 数依次为:0100H,0604H,0708H,0801H,0902H,010000H, 010205H,020505H;上述各数的压缩的 BCD 数依次为:10H,64H,78H,81H,92H,0100H,0125H,0255H;上述各数的 ASCII 数字串依次
17、为:3130H,3634H,3738H,3831H,3932H,313030H,313235H, 323535H;3.用 10 进制数写出下列补码表示的机器数的真值:71H,1BH,80H,F8H,397DH,CF42H,9350H答:上述补码表示的各机器数的真值用 10 进制数分别表示为: +113,+27,-128,-8,+14717,-20670,-27828 4.若用一个字节来表示带符号数,判断下列各运算在机内进行时是否会产生溢出,写出判断过程。A. 5BH+32H; B. -08H-15H; C. -51H+(-3DH); D. 2DH+3CH答:A. 产生溢出, 5BH=01011
18、011B 其补码表示的机器数为:0101101132H=00110010B 其补码表示的机器数为:00110010相加的结果为:10001101数值最高位向符号位进位,但符号位向前无进位,故产生溢出。B. 不产 生溢出, -08H=-00001000B 其补码表示的机器数 为:11111000-15H=-00010101B 其补码表示的机器数为:11101011相加的结果为:111100011数值最高位向符号位进位,符号位同时也向前进位,故不产生溢出.C.产 生溢出,-51H=-01010001B 其补码表示的机器数 为:10101111-3DH=-00111101B 其补码表示的机器数为:1
19、1000011相加的结果为:101110010数值最高位向符号位无进位,但符号位向前进位,故产生溢出. D.不产生溢出,2DH=00101101B 其补码表示的机器数 为:001011013CH=00111100B 其补码表示的机器数 为:00111100相加的结果为:01101001数值最高位向符号位无进位,符号位向前也无进位,故不产生溢出。5.从键盘敲入一个大写字母,如何转换为与其相对应的小写字母?从键盘敲入 16 进制数字符 0F,如何转换为其相对应 的二进制数(0000000000001111)?答:从键盘敲入一大写字母后,将其 ASCII 码加上 20H,就转换成了与其相对应的小写字
20、母。从键盘敲入 16 进制数字符 09 后,将其 ASCII 码值减去 30H,就转换成了与其相对应的二进制数.从键盘敲入 16 进制数字符 AF 后,将其 ASCII 码值减去 37H,就转换成了与其相对应的二进制数.6.详细叙述总线缓冲器的作用。答:总线缓冲器的作用主要是控制各路数据在总线上的交叉传送避免相互冲突,当几路数据都要向总线上传送时,就通 过各路的缓冲器来解决,当一路传送时,缓冲器使其它各路数据与总线断开。7.锁存器和寄存器有什么不同?答:锁存器与寄存器都是用来暂存数据的器件,在本质上没有区别,不过寄存器的输出端平时不随输入端的变化而变化,只有在时钟有效时才将输入端的数据送输出端
21、(打入寄存器),而锁存器的输出端平时总随输入端变化而变化,只有当锁存器信号到达 时,才将 输出端的状态锁 存起来,使其不再随输入端的变化而变化。1.8086 从功能上分成了 EU 和 BIU 两部分。这样设计的优点是什么?答:传统计算机在执行程序时,CPU 总是相继地完成取指令和执行指令的动作,即,指令的提取和执行是串行进行的。而 8086CPU 在功能上分成了 EU 和 BIU 两部分, BIU 负责取指令, EU 负责指令的执行,它们之间既互相独立又互相配合,使得 8086 可以在执行指令的同时进行取指令的操作,即实现了取指令和执行指令的并行工作,大大提高了 CPU 和总线的利用率,从而提
22、高了指令的处理速度。2.8086 CPU 中地址加法器的重要性体现在哪里?答:地址加法器是 8086 CPU 的总线接口单元中的一个器件,在 8086 存储器分段组织方式中它是实现存储器寻址的一个关键器件,地址加法器将两个 16 位寄存器中的逻辑地址移位相加,得到一个 20 位的实际地址,把存储器寻址空间从 64K 扩大到 1M,极大地扩大了微型计算机的程序存储空间,从而大大提高了程序运行效率。3.8086 CPU 中有哪些寄存器?分组说明用途。哪些寄存器用来指示存储器单元的偏移地址?答:8086 CPU 中有 8 个通用寄存器 AX、BX、CX、DX、SP、BP、SI、DI;两个控制寄存器
23、IP、FL;四个段寄存器 CS、DS、SS、ES。8 个通用寄存器都可以用来暂存参加运算的数据或中间结果,但又有各自的专门用途。例如, AX 专用做累加器,某些指令指定用它存放操作数和运算结果;CX 为计数寄存器,在某些指令中做计数器使用;DX 为数据寄存器;BX 为基址寄存器,BP为基址指针,SI 为源变址寄存器,DI 为目的变址寄存器,这 4 个寄存器在数据寻址中用来存放段内偏移地址(有效地址)或段内偏移地址的一部分;SP为堆栈指示器,用来存放栈顶 有效地址。两个控制寄存器用来存放有关的状态信息和控制信息。例如,标志寄存器 FL 用来存放状 态标志和控制标志;而指令指针用来存放下一条要取指
24、令的有效地址。四个段寄存器用来存放段地址。例如,CS 寄存器用来存放代码段的段地址;DS 寄存器用来存放数据段的段地址;SS 寄存器用来存放堆 栈段的段地址;ES 寄存器用来存放扩展段的段地址。4.8086 系统中存储器的逻辑地址由哪两部分组成?物理地址由何器件生成?如何生成?每个段的逻辑地址与寄存器之间有何对应关系?答:8086 系统中存储器的逻辑地址由段地址(段首址)和段内偏移地址(有效地址)两部分组成;存储单元的物理地址由地址加法器生成,寻址时,CPU 首先将段地址和段内偏移地址送入地址加法器,地址加法器将段地址左移 4 位并与段内偏移地址相加,得到一个 20 位的物理地址。数据段的段地
25、址在 DS 寄存器中,段内偏移地址可能在 BX、BP、SI 或 DI 寄存器中。代码段的段地址在 CS 寄存器中,段内偏移地址在 IP 寄存器中。堆栈段的段地址在SS 寄存器中,段内偏移地址在 SP 寄存器中。扩展段的段地址在 ES 寄存器中,段内偏移地址可能在 BX、BP、SI 或 DI 寄存器中。5.设 CPU 中各有关寄存器的当前状况为:SS=0a8bH、DS=17ceH、CS=dc54H、BX=394bH、IP=2f39H、SP=1200H,BX 给出的是某操作数的有效地址,请分 别写出该操作数、下一条要取的指令及当前栈顶的逻辑地址和物理地址。答:该操作数的逻辑地址为 DS:BX=17
26、CE:394BH,物理地址=17CEH*10H+394BH=1B62BH;下一条要取的指令的逻辑地址 为 CS:IP=DC54:2F39H,物理地址=DC54H*10H+2F39H=DF479H ;当前栈顶 的逻辑地址=SS :SP=0A8B:1200H,物理地址=0A8BH*10H+1200H=0BAB0H。6.若 DS=157DH 时,某操作数的物理地址是 215FAH,当 DS=18DEH 时,该操作数的物理地址是多少?答:该操作数的段内偏移地址=该操作数的物理地址-DS=215FAH-157D0H=BE2AH, 故当 DS=18DEH 时, 该操作数的物理地址 =DS*10H+BE2A
27、H=18DE0H+BE2AH=24C0AH7.设 AX=2875H、BX=34DFH、SS=1307H、SP=8H,依此执行 PUSH AX、PUSH BX、POP AX、POP CX 后栈顶指针变为 多少?AX=? BX=? CX=?答:当前栈顶指针=SS*10H+SP=13070H+8H=13078H ,依此执行 PUSH AX、PUSH BX、POP AX、POP CX 后栈顶指针仍 为 13078H。但 AX=34DFH,BX=34DFH,CX=2875H。1. 假定(BX)=637DH ,(SI)=2A9BH,位移量 D=3237H,试确定在以下各种寻址方式下的有效地址是什么?(1)
28、立即寻址(2)直接寻址(3)使用 BX 的寄存器寻址(4)使用 BX 的间接寻址(5)使用 BX 的寄存器相对寻址(6)基址变址寻址(7)相对基址变址寻址 答:(1)立即数寻址的有效地址是当前 IP 的内容;(2)直接寻址,若使用位移量 D=3237H 进行,则有效地址为 3237H;(3)使用 BX 的寄存器寻址时,操作数在 BX 寄存器中,因此无有效地址;(4)使用 BX 的间接寻址时,有效地址在 BX 寄存器中,即有效地址=637DH;(5)使用 BX 的寄存器相对寻址的有效地址=(BX)+D=637DH+3237H=95B4H;(6)基址变址寻址的有效地址=(BX)+ (SI)=637
29、DH+2A9BH=8E18H;(7)相对基址变址寻址的有效地址=(BX)+ (SI)+D=C050H; 2. 写出把首地址为 BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令。要求使用以下几种寻址方式:(1)寄存器间接寻址(2)寄存器相对寻址(3)基址变址寻址答:(1)使用寄存器间接寻址,把首地址为 BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令为:MOV BX,BLOCKADD BX,12MOV DX,BX(2)使用寄存器相对寻址,把首地址为 BLOCK 的字数组的第 6 个字送到 DX 寄存器的指令为:MOV BX,BLOCKMOV DX,BX+12(3)使用基址变址
30、寻址,把首地址为 BLOCK 的字数组的第 6 个字送到DX 寄存器的指令为:MOV BX,BLOCKMOV SI,12MOV DX,BX+SI3. 现有(DS)=2000H,(BX)=0100H,(SI)=0002H, (20100H)12H ,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=B7H,(21203H)=65H,试说明下列各条指令 执行完后 AX 寄存器的内容。(1)MOV AX,1200H(2)MOV AX,BX(3)MOV AX,1200H(4)MOV AX,BX(5)MOV
31、 AX,BX+1100(6)MOV AX,BX+SI(7)MOV AX,BX+SI+1100答:(1)指令 MOV AX,1200H 执行完后 AX 寄存器的内容为 1200H;(2)指令 MOV AX,BX 执行完后 AX 寄存器的内容为 0100H;(3)指令 MOV AX,1200H是将从物理地址=(DS)*10H+1200H=21200H 开始的两个单元内容送 AX,执行完后 AX 寄存器的内容为 4C2AH;(4)指令 MOV AX,BX是将从物理地址=(DS)*10H+(BX)=20100H 开始的两个单元内容送 AX,故执行完后 AX 寄存器的内容为 3412H;(5)指令 MO
32、V AX,BX+1100是将从物理地址=(DS)*10H+(BX)+1100H=21200H 开始的两个 单元内容送 AX,故执行完后 AX 寄存器的内容为 4C2AH;(6)指令 MOV AX,BX+SI是将从物理地址=( DS)*10H+(BX)+(SI)=20102H 开始的两个单元内容送 AX,故执行完后 AX 寄存器的内容为 7856H;(7)指令 MOV AX,BX+SI+1100是将从物理地址 =(DS)*10H+(BX)+(SI)+1100H=21202H 开始的两个单元内容送 AX,故执行完后 AX 寄存器的内容为 65B7H;4.假设已知(DS)=2900H,(ES)=21
33、00H,(SS)=1500H,(SI)=00A0H,(BX)= 0100H,(BP)=0010H,数据段中变量名 VAL 的偏移地址 值为 0050H,试指出下列源操作数字段的寻址方式是什么?其物理地址值是多少?(1) MOV AX,0ABH (2) MOV AX,BX(3) MOV AX,100H (4) MOV AX,VAL(5) MOV AX,BX (6) MOV AX,ES:BX(7) MOV AX,BP (8) MOV AX,SI(9) MOV AX,BX+10 (10) MOV AX,VALBX(11) MOV AX,BXSI (12) MOV AX,BPSI答:(1)在指令 MO
34、V AX,0ABH 中,源操作数字段的寻址方式是立即数寻址,其物理地址值=(CS )*10H+(IP);(2)在指令 MOV AX,BX 中,源操作数字段的 寻址方式是寄存器寻址,操作数在 BX 中,无物理地址;(3)在指令 MOV AX,100H 中,源操作数字段的寻址方式是直接寻址,其物理地址值=(DS)*10H+100 =29000H+100H=29100;(4)在指令 MOV AX,VAL 中,源操作数字段的寻址方式是直接寻址,其物理地址值=(DS )*10H+50H =29000H+50H=29050H;(5)在指令 MOV AX,BX 中,源操作数字段的寻址方式是寄存器间接寻址,其
35、物理地址值=(DS)*10H +(BX)=29000H+100H=29100H;(6)在指令 MOV AX,ES:BX 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值 =(ES)*10H+(BX)=21000H+100H=21100H;(7)在指令 MOV AX,BP 中,源操作数字段的 寻址方式是寄存器间接寻址,其物理地址值=(SS )*10H +(BP)=15000H+10H=15010H;(8)在指令 MOV AX,SI 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(DS)*10H +(SI)=29000H+0A0H=290A0H;(9)在指令 MOV AX,BX
36、+10 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值 =(DS)*10H+(BX)+0AH= 29000H+100H+0AH =2910AH;(10)在指令 MOV AX,VALBX 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址 值=(DS)*10H+ (BX)+50H= 29000H+100H+50H= 29150H;(11)在指令 MOV AX,BXSI 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值 =(DS)*10H+(BX)+(SI) =29000H+100H+0A0H =291A0H;(12)在指令 MOV AX,BPSI 中,源操作数字段的寻址方式是
37、基址变址寻址,其物理地址值 =(SS)*10H+(BP)+(SI)=15000H+10H+0A0H =150B0H5.分别指出下列指令中的源操作数和目的操作数的寻址方式。(1)MOV SI,200(2)MOV CX,DATASI(3)ADD AX,BX+DI(4)AND AX,BX(5)MOV SI,AX(6)PUSHF答:(1)目的操作数字段的寻址方式是寄存器寻址,源操作数字段的寻址方式是立即数寻址;(2)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是寄存器相对寻址;(3)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是基址变址寻址;(4)目的操作数的寻址方式是寄存器寻址,源操
38、作数的寻址方式也是寄存器寻址;(5)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;(6)目的操作数的寻址方式是寄存器间接寻址,源操作数的寻址方式是寄存器寻址;6.试述指令 MOV AX,2010H 和 MOV AX,DS:2010H 的区别。答:指令 MOV AX,2010H 是将立即数 2010H 送 AX 寄存器,而指令 MOV AX,DS:2010H是将 DS 段有效地址为 2010H 的两个单元的内容送 AX。7.写出以下指令中内存操作数的所在地址。(1)MOV AL,BX+5(2)MOV BP+5,AX(3)INC BYTE PTR SI+3(4)MOV DL
39、,ES:BX+DI(5)MOV BX,BX+SI+2答:(1)指令 MOV AL,BX+5中内存操作数的所在地址=(DS)*10H+(BX)+5;(2)指令 MOV BP+5,AX 中内存操作数的所在地址=(SS)*10H+(BP)+5 和( SS)*10H+(BP)+6;(3)指令 INC BYTE PTRSI+3中内存操作数的所在地址 =(DS)+(SI)+3;(4)指令 MOV DL,ES:BX+DI中内存操作数的所在地址=(ES)*10H+(BX)+(DI);(5)指令 MOV BX,BX+SI+2中内存操作数的所在地址=(DS)*10H+(BX)+(SI)+2 和(DS)*10H+
40、(BX)+(SI)+3;8.判断下列指令书写是否正确,如有错误,指出 错在何处并用正确的程序段(一条或多条指令)实现原错误指令(8)、(13)除外)期望实现的操作。(1)MOV AL,BX (9)MOV ES,3278H(2)MOV AL,SL (10)PUSH AL(3)INC BX (11)POP BX(4)MOV 5,AL (12)MOV 1A8H,23DH(5)MOV BX,SI (13)PUSH IP (6)MOV BL,F5H (14)MOV AX,23DH(7)MOV DX,2000H (15)SHL AX,5(8)POP CS (16)MUL AX,BX答:(1)MOV AL,
41、BX 错,源操作数为字类型,目的操作数为字节类型,二者不一致。应改为:MOV AX,BX 或 MOV AL,BL ;(2)MOV AL,SL 错,SI 寄存器不能分 为高 8 位和低 8 位使用,即没有 SL 寄存器。 应 改为:MOV AX,SI(3)INC BX 错,未指定操作数的类型。 应改为:INC BYTE PTR BX (4)MOV 5,AL 错,目的操作数使用了立即数,在指令中一般不允许。 应改为:MOV DS:5,AL (5)MOV BX,SI 错,源操作数和目的操作数均 为内存单元,不允许。应改为:MOV AX,SI MOV BX,AX(6)MOV BL,F5H 错,源操作数
42、错,以 AF 开头的数字前 应加 0。应改为:MOV BL,0F5H(7)MOV DX,2000H 正确。(8) POP CS 错,不能将 栈顶数据弹至 CS 中。 (9)MOV ES,3278H 错,立即数不能直接送 ES 寄存器。应改为:MOV AX,3278HMOV ES,AX(10)PUSH AL 错, 栈操作不能按字 节进行。应改为:PUSH AX (11)POP BX 正确。(12)MOV 1A8H,23DH 错,源操作数是立即数,目的操作数必须使用寄存器指出。应改为:MOV BX,1A8HMOV BX,23DH (13)PUSH IP 错,不能用 IP 寄存器做源操作数。(14)
43、MOV AX,23DH 错 ,不能用 AX 寄存器间接 寻址。应改为:MOV BX,AXMOV BX,23DH(15)SHL AX,5 错,不能用大于己于 1 的立即数指出移位位数。应改为:MOV CL,5SHL AX,CL(16)MUL AX,BX 错,目的操作数 AX 是隐含的,不能在指令中写出。应改为:MUL BX9.设堆栈指针 SP 的初值为 2000H,AX=3000H,BX=5000H,试问: (1)执行指令 PUSH AX 后 (SP)=?(2)再执行 PUSH BX 及 POP AX 后 (SP)=?(AX)=?(BX)=?答:(1)执行指令 PUSH AX 后 (SP)=20
44、00H-2=1FFEH;(2)再执行 PUSH BX 及 POP AX 后 (SP)=1FFEH, (AX)=5000H, (BX)=5000H10.要想完成把2000H 送 1000H中,用指令:MOV 1000H,2000H是否正确?如果不正确,应用什么方法?答:把2000H 送1000H 中,用指令 MOV 1000H,2000H不正确,应改为:MOV AX,2000H MOV 1000H,AX11.假如想从 200 中减去 AL 中的内容,用 SUB 200,AL 是否正确?如果不正确,应用什么方法?答:想从 200 中减去 AL 中的内容,用 SUB 200,AL 不正确, 应改为:
45、 MOV BL,200 SUB BL,AL12 分别写出实现如下功能的程序段(1)双字减法(被减数 7B1D2A79H,减数 53E2345FH)。(2)使用移位指令实现一个字乘 18 的运算。(3)使用移位指令实现一个字除以 10 的运算。(4)将 AX 中间 8 位,BX 低四位,DX 高四位拼成一个新字。(5)将数据段中以 BX 为偏移地址的连续四个单元的内容颠倒过来(6)将 BX 中的四位压缩 BCD 数用非压缩 BCD 数形式 顺序放在 AL、BL、CL、DL 中。答:(1)双字减法的程序段是:MOV AX,2A79H ;被减数的低位字送 AXSUB AX,345FH ;低位字相减,
46、 结果送 AXMOV BX,7B1DH ;被减数的高位字送 BXSBB BX,53E2H ;高位字相减处并减去低位字相减 产生的借位, 结果送 BX(2)使用移位指令实现一个字乘 18 的程序段是:MOV AX,05F7H ;被乘数送 AXSHL AX,1 ;被乘数乘以 2,结果在 AX 中MOV BX,AX ;被乘数乘以 2 的结果暂存到 BXMOV CL,3 ;设置移位位数 3SHL AX,CL ;被乘数再乘以 8(共乘以 16),结果在 AX 中ADD AX,BX ;被乘数再乘以 18,结果在 AX 中(3)使用移位指令实现一个字除以 10 的运算,必须将 X/10 拆分成多项的和,而每
47、一项都应是非的某次 幂的倒数。利用等比 级 数的前 N 项和公式,可求出 A0=X/8,公比 Q=-1/4,故 X/10=X/8-X/32+X/128-X/512+.,所求的程序段是:MOV AX,FE00H ;被除数送 AXMOV CL,3 ;设置移位位数 3SHR AX,CL ;被乘数除以 8,结果在 AX 中MOV BX,AX ;被乘数除以 8 的结果暂存到 BXMOV CL,2 ;设置移位位数 2SHR AX,CL ;被乘数除以 4(累计除 32),结果在 AX 中SUB BX,AX ;被除数 /8-被除数/32, 结果在 BX 中MOV CL,2 ;设置移位位数 2SHR AX,CL
48、 ;被乘数除以 4(累计除 128),结果在 AX 中ADD BX,AX ;被除数/8-被除数/32+被除数/128,结果在 BX 中MOV CL,2 ;设置移位位数 2SHR AX,CL ;被乘数除以 4(累计除 512),结果在 AX 中SUB BX,AX ;被除数 /8-被除数/32+被除数/128-被除数/512 ,结果在 BX 中(4) 将 AX 中 间 8 位,BX 低四位,DX 高四位拼成一个新字的程序段是:AND DX,0F000H ;将 DX 的低 12 位清零,高 4 位不变AND AX,0FF0H ;将 AX 的低 4 位清零,高 4 位清零,中 间 8 位不变AND BX,0FH ;将 BX 的高 12 位清零,低 4 位不变ADD AX,BXADD AX,DX ;按要求组成一个新字, 结 果放在 AX 中。(5) 将数据段中以 BX 为偏移地址的连续四个单元的内容颠倒过来的程序段是:MOV