文档库 最新最全的文档下载
当前位置:文档库 › 微机原理与汇编语言程序设计课后习题参考答案

微机原理与汇编语言程序设计课后习题参考答案

微机原理与汇编语言程序设计课后习题参考答案
微机原理与汇编语言程序设计课后习题参考答案

第一章习题与参考答案

1. 微处理器,微型计算机和微型计算机系统三者之间有何区别?

答:微处理器即CPU,它包括运算器、控制器、寄存器阵列和内部总线等部分,用于实现微型计算机的运算和控制功能,是微型计算机的核心;一台微型计算机由微处理器、内存储器、I/O接口电路以及总线构成;微型计算机系统则包括硬件系统和软件系统两大部分,其中硬件系统又包括微型计算机和外围设备;由此可见,微处理器是微型计算机的重要组成部分,而微型计算机系统又主要由微型计算机作为其硬件构成。

2. CPU在内部结构上由哪几部分构成?CPU应具备哪些主要功能?

答:CPU在内部结构上由运算器、控制器、寄存器阵列和内部总线等各部分构成,其主要功能是完成各种算数及逻辑运算,并实现对整个微型计算机控制,为此,其内部又必须具备传递和暂存数据的功能。

3. 累加器和其它通用寄存器相比有何不同?

答:累加器是通用寄存器之一,但累加器和其它通用寄存器相比又有其独特之处。累加器除了可用做通用寄存器存放数据外,对某些操作,一般操作前累加器用于存放一个操作数,操作后,累加器用于存放结果。

4. 微型计算机的总线有哪几类?总线结构的特点是什么?

答:微型计算机的总线包括地址总线、数据总线和控制总线三类,总线结构的特点是结构简单、可靠性高、易于设计生产和维护,更主要的是便于扩充。

5. 举出10个微型计算机应用的例子。

答:略

6. 计算机I/O接口有何用途?试列出8个I/O接口。

答:计算机I/O接口是连接计算机和外部设备的纽带和桥梁,它主要用于协调和控制计算机与外设之间的信息流通和交换。例如:串行通讯口(COM口)、并行打印机口、软盘驱动器接口、硬盘驱动器接口、光驱接口、显示器接口、音响设备接口、其它通用设备接口(USB、SCSI等)。

7. 现在,计算机主板上一般都包括哪些I/O接口?I/O接口卡如何与主板相连?

答:现在,计算机主板上一般包括串行通讯口、并行打印口、软盘驱动器接口、硬盘驱动器接口、光驱接口、USB接口等。象显示器适配器、网卡、modem卡等I/O接口卡一般通过总线插槽与主板相连。

8. 简述系统总线,AGP总线,PCI总线及ISA总线的作用。

答:系统总线是CPU与存储器及桥接器之间传递信息的通道,AGP总线专门用与连接CPU与显示器适配器,PCI总线一般用于连接一些高速外设接口作为高速外设与CPU或内存交换信息的通道,而ISA总线一般用于连接一些非高速外设接口作为非高速外设与CPU或内存交换信息的通道。

9. 试说明计算机用户,计算机软件,计算机硬件三者的相互关系。

答:计算机用户,计算机软件系统,计算机硬件系统共同构成一个计算机应用系统,三者在该系统中处于三个不同的层次。计算机用户处于最高层,计算机软件处于中间层,计算机硬件系统处于最下层。在这里计算机用户是系统的主宰,他们通过软件系统与硬件系统发生关系,指挥计算机硬件完成指定的任务。即,计算机用户使用程序设计语言编制应用程序,在系统软件的干预下使用硬件系统进行工作。

10. 简述DOS操作系统各部分的作用及相互关系。

答:DOS操作系统包括3个模块:DOS-Shell(https://www.wendangku.net/doc/4a15667864.html,)、DOS-Kernel(https://www.wendangku.net/doc/4a15667864.html,)、DOS-BIOS(https://www.wendangku.net/doc/4a15667864.html,).

DOS-Shell模块对用户输入的DOS命令行或应用程序行作出响应。即负责DOS命令的解释和

任务的分配,具体工作则要靠DOS-Kernel模块所提供的系统功能完成。

DOS-Kernel模块尽管提供了许多的系统功能,但由于执行每一个系统功能过程中,完全依赖各种设备实现指定的功能,因此,它还要进一步调用DOS-BIOS模块中的设备驱动程序才能工作。

DOS-BIOS模块对DOS-Kernel传送的"请求"进行解释,最终转换为对固化在ROM-BIOS 中的设备控制程序的请求并由它们去控制硬件,完成指定的操作。

11. 存储单元的选择由什么信号控制?读、写靠什么信号区分?

答:存储单元的选择由地址信号控制,而对存储单元进行读操作还是写操作则要靠读、写信号区分。

12. 以一个可执行文件的运行为例,简述程序执行过程。

答:当在DOS提示符下键入一个可执行文件名称(或在其它操作系统环境下执行有关操作)后,操作系统自动将该文件从外存装入内存并使指令指针指向其第一条指令,从而启动文件执行过程。首先将第一条指令从内存取入CPU中译码执行,同时指令指针自动加1或按指令的要求作出相应改变,指向下一条要执行的指令,接着将下一条指令从内存取入CPU译码执行,这样不断重复取指令和执行指令的过程,逐条执行指令,直至程序结束。

第二章习题与参考答案

第一节

1.把下列各数化成二进制数和八进制数(二进制取3位小数,八进制取一位小数): 7+3/4,±3/64,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; 725.9375=1325.7O; 25.34=11001.011B; 25.34=31.3O

2.把下列各数化成十进制数:101.10011B ,22.2O, AD.4H

答:101.10011B=5.59375; 22.2O=18.25; AD.4H=173.25

3.完成下列二进制数运算: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.完成下列各十六进制数的运算: A39E+28DC,D5AB-7CE5,2BF*4C,C16E/3A

答:A39E+28DC=CC7A; D5AB-7CE5=58C6; 2BF*4C=D014; C16E/3A=355.C2

5.先将15B*8E/2A中的十六进制数化成十进制数,再进行计算,最后再将结果化为十六进制数。

答:15BH*8EH/2AH=347*142/42=49274/42=1173.19=495.30AH

6.试分别判断下列各组数据中哪个数据最大?哪个数据最小?

(1) A=0.1001B,B=0.1001D,C=0.1001H

(2) A=10111101B,B=1001D,C=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, 1000000000000000;

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数字串依次为: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=01011011B其补码表示的机器数为:01011011

32H=00110010B其补码表示的机器数为:00110010

相加的结果为:10001101

数值最高位向符号位进位,但符号位向前无进位,故产生溢出。

B. 不产生溢出, -08H=-00001000B其补码表示的机器数为:11111000

-15H=-00010101B其补码表示的机器数为:11101011

相加的结果为:111100011 数值最高位向符号位进位,符号位同时也向前进位,故不产生溢出.

C.产生溢出,-51H=-01010001B其补码表示的机器数为:10101111

-3DH=-00111101B其补码表示的机器数为:11000011

相加的结果为:101110010

数值最高位向符号位无进位,但符号位向前进位,故产生溢出.

D.不产生溢出,2DH=00101101B其补码表示的机器数为:00101101

3CH=00111100B其补码表示的机器数为:00111100

相加的结果为:01101001

数值最高位向符号位无进位,符号位向前也无进位,故不产生溢出。

5.从键盘敲入一个大写字母,如何转换为与其相对应的小写字母?从键盘敲入16进制数字符0~F,如何转换为其相对应的二进制数(00000000~00001111)?

答:从键盘敲入一大写字母后,将其ASCII码加上20H,就转换成了与其相对应的小写字母。

从键盘敲入16进制数字符0~9后,将其ASCII码值减去30H,就转换成了与其相对应的二进制数.

从键盘敲入16进制数字符A~F后,将其ASCII码值减去37H,就转换成了与其相对应的二进制数.

6.已知A=37、B=28,若A、B均以压缩的BCD码、非压缩的BCD码或ASCII码表示,分别写出三种情况下A+B的运算过程。注:A、B的各位以ASCII码表示时,运算结果的各位用非压缩的BCD码表示。

答:6.(1) A=37以压缩的BCD码表示为:00110111,B=28以压缩的BCD码表示为:00101000,A+B的运算为:

00110111

+ 00101000

01011111

+ 00000110

01100101

(2) A=37以非压缩的BCD码表示为:0000001100000111,

B=28以非压缩的BCD码表示为:0000001000001000,

A+B的运算为:

0000001100000111

+ 0000001000001000

0000010100001111

+ 0000000011110110

0000011000000101

(3) A=37以ASCII码表示为:0011001100110111,B=28以ASCII码表示为:0011001000111000,A+B的运算为:

0000001100000111 先将各字节高4位清0

+ 0000001000001000

0000010100001111

+ 1111000011110110

1111011000000101 各字节高4位清0

0000011000000101

7.如果采用偶校验,下述两个数据的校验位的值是什么? 如果采用奇校验呢?

(1)0101010 (2)0011011

答:采用偶校验时,数据0101010的校验位的值是1,数据0011011的校验位的值是0;

采用奇校验时,数据0101010的校验位的值是0,数据0011011的校验位的值是1;

第三节

1. 已知一个逻辑函F=A+BC#+CD#+B#D,试写出其真值表。

答:其真值表为:

A 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1

B 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1

C 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1

D 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1

F 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1

2.用公式法将下列逻辑函数化简为最简"与或"式:

(1) F=AB+A#C+(BC)#

(2) F=A#B#+(AB+AB#+A#B)C

答:(1)F=AB+A#C+B#+C#=AB+B#+A#C+C#=A+B#+A#+C#=1+B#+C#=1

(2)F=A#B#+(A(B+B#)+A#B)C=A#B#+(A+A#B)C=A#B#+(A+B)C=A#B#+(A#B#)#C=A#B#+C

3.现约定采用奇校验方法,且用每个字节的最高位做为该字节的校验位,试设计一个逻辑电路,传输前产生校验位,接收后进行校验。

答:与本节中给出的偶校验电路相比区别如下:(1)将校验位生成电路的最末级异或门改为同或门;(2)接收端校验电路相同,不过输出F为1时,可认为传输“无误”,输出F为0时,表示传输有误。

第四节

1.试述同步式R-S触发器与异步式R-S触发器的主要区别。

答:异步式R-S触发器时刻处于工作状态,只要输入端数据发生变化,马上可对输出端产生影响。而同步式R-S触发器是在异步式R-S触发器上增加了编人员构成的,只有在控制端C 有效时才工作,此时其功能与异步式R-S触发器完全相同,而当控制端C无效时,触发器不工作。

2.边沿触发的触发器与电平触发的触发器相比优点是什么?

答:由于电平的维持时间相对较长,在打入一个有效数据后,若有效电平尚未消失时,数据端发生了变化,则有可能将这个不该打入的数据打入,造成错误。而对边沿触发型触发器,只要保证有效数据在电平变化的边沿处(瞬间)不变化,即可正确打入有效数据。

3.试述时序电路(如触发器)和组合逻辑电路(如译码器)的区别。

答:组合逻辑电路的输出只依赖于当前的输入,即输出是输入的一个逻辑函数。而时序电路的输出不仅依赖于当前的输入,而且还依赖于该电路的当前状态,即其输出(次态)是输入和现态度的一个逻辑函数。

4.画出一个2-4译码器的逻辑电路图。

答:图略

5.画出串行加法器的逻辑电路图。

答:说明:在讲义图2-23(串行加法器的电路原理图)中的两个寄存器位置放上图2-12中的并行输入移位寄存器简化电路,并做出正确连接。

6.详细叙述总线缓冲器的作用。

答:总线缓冲器的作用主要是控制各路数据在总线上的交叉传送避免相互冲突,当几路数据都要向总线上传送时,就通过各路的缓冲器来解决,当一路传送时,缓冲器使其它各路数据与总线断开。

7.锁存器和寄存器有什么不同?

答:锁存器与寄存器都是用来暂存数据的器件,在本质上没有区别,不过寄存器的输出端平时不随输入端的变化而变化,只有在时钟有效时才将输入端的数据送输出端(打入寄存器),而锁存器的输出端平时总随输入端变化而变化,只有当锁存器信号到达时,才将输出端的状态锁存起来,使其不再随输入端的变化而变化。

第三章习题与参考答案

1.8086从功能上分成了EU和BIU两部分。这样设计的优点是什么?

答:传统计算机在执行程序时,CPU总是相继地完成取指令和执行指令的动作,即,指令的提取和执行是串行进行的。而8086CPU 在功能上分成了EU和BIU两部分,BIU负责取指令,EU负责指令的执行,它们之间既互相独立又互相配合,使得8086可以在执行指令的同时进行取指令的操作,即实现了取指令和执行指令的并行工作,大大提高了CPU和总线的利用率,从而提高了指令的处理速度。

2.8086 CPU中地址加法器的重要性体现在哪里?

答:地址加法器是8086 CPU的总线接口单元中的一个器件,在8086存储器分段组织方式中它是实现存储器寻址的一个关键器件,地址加法器将两个16位寄存器中的逻辑地址移位相加,得到一个20位的实际地址,把存储器寻址空间从64K扩大到1M,极大地扩大了微型计算机的程序存储空间,从而大大提高了程序运行效率。

3.8086 CPU中有哪些寄存器?分组说明用途。哪些寄存器用来指示存储器单元的偏移地址?答:8086 CPU中有8个通用寄存器AX、BX、CX、DX、SP、BP、SI、DI;两个控制寄存器IP、FL;四个段寄存器CS、DS、SS、ES。8个通用寄存器都可以用来暂存参加运算的数据或中间结果,但又有各自的专门用途。例如,AX专用做累加器,某些指令指定用它存放操作数和运算结果;CX为计数寄存器,在某些指令中做计数器使用;DX为数据寄存器;BX为基址

寄存器,BP为基址指针,SI为源变址寄存器,DI为目的变址寄存器,这4个寄存器在数据寻址中用来存放段内偏移地址(有效地址)或段内偏移地址的一部分;SP为堆栈指示器,用来存放栈顶有效地址。两个控制寄存器用来存放有关的状态信息和控制信息。例如,标志寄存器FL用来存放状态标志和控制标志;而指令指针用来存放下一条要取指令的有效地址。四个段寄存器用来存放段地址。例如,CS寄存器用来存放代码段的段地址;DS寄存器用来存放数据段的段地址;SS寄存器用来存放堆栈段的段地址;ES寄存器用来存放扩展段的段地址。

4.8086系统中存储器的逻辑地址由哪两部分组成?物理地址由何器件生成?如何生成?每个段的逻辑地址与寄存器之间有何对应关系?

答:8086系统中存储器的逻辑地址由段地址(段首址)和段内偏移地址(有效地址)两部分组成;存储单元的物理地址由地址加法器生成,寻址时,CPU首先将段地址和段内偏移地址送入地址加法器,地址加法器将段地址左移4位并与段内偏移地址相加,得到一个20位的物理地址。数据段的段地址在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=17CE: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+BE2AH=18DE0H+BE2AH=24C0AH

7.设 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)立即寻址

(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)=637DH+2A9BH=8E18H;

(7)相对基址变址寻址的有效地址=(BX)+(SI)+D=C050H;

2. 写出把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令。要求使用以下几种寻址方式:

(1)寄存器间接寻址

(2)寄存器相对寻址

(3)基址变址寻址

答:(1)使用寄存器间接寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为:

MOV BX,BLOCK

ADD BX,12

MOV DX,[BX]

(2)使用寄存器相对寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为: MOV BX,BLOCK

MOV DX,[BX+12]

(3)使用基址变址寻址,把首地址为BLOCK的字数组的第6个字送到DX寄存器的指令为: MOV BX,BLOCK

MOV SI,12

MOV DX,[BX+SI]

3. 现有(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 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)指令MOV 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)=2100H,(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,VAL[BX]

(11) MOV AX,[BX][SI] (12) MOV AX,[BP][SI]

答:(1)在指令 MOV 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] 中,源操作数字段的寻址方式是寄存器间接寻址,其物理地址值=(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+10] 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值=(DS)*10H+(BX)+0AH= 29000H+100H+0AH =2910AH;

(10)在指令 MOV AX,VAL[BX] 中,源操作数字段的寻址方式是寄存器相对寻址,其物理地址值=(DS)*10H+(BX)+50H= 29000H+100H+50H= 29150H;

(11)在指令 MOV AX,[BX][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值=(DS)*10H+(BX)+(SI) =29000H+100H+0A0H =291A0H;

(12)在指令 MOV AX,[BP][SI] 中,源操作数字段的寻址方式是基址变址寻址,其物理地址值=(SS)*10H+(BP)+(SI)=15000H+10H+0A0H =150B0H

5.分别指出下列指令中的源操作数和目的操作数的寻址方式。

(1)MOV SI,200

(2)MOV CX,DATA[SI]

(3)ADD AX,[BX+DI]

(4)AND AX,BX

(5)MOV [SI],AX

(6)PUSHF

答:(1)目的操作数字段的寻址方式是寄存器寻址,源操作数字段的寻址方式是立即数寻址;(2)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是寄存器相对寻址;(3)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式是基址变址寻址;

(4)目的操作数的寻址方式是寄存器寻址,源操作数的寻址方式也是寄存器寻址;

(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,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 PTR[SI+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+(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,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 错,源操作数错,以A~F开头的数字前应加0。应改为:MOV BL,0F5H

(7)MOV DX,2000H 正确。

(8) POP CS 错,不能将栈顶数据弹至CS中。

(9)MOV ES,3278H 错,立即数不能直接送ES寄存器。应改为:MOV AX,3278H

MOV ES,AX

(10)PUSH AL 错,栈操作不能按字节进行。应改为:PUSH AX

(11)POP [BX] 正确。

(12)MOV [1A8H],23DH 错,源操作数是立即数,目的操作数必须使用寄存器指出。应改为:

MOV BX,1A8H

MOV [BX],23DH

(13)PUSH IP 错,不能用IP寄存器做源操作数。

(14)MOV [AX],23DH 错,不能用AX寄存器间接寻址。应改为:MOV BX,AX

MOV [BX],23DH

(15)SHL AX,5 错,不能用大于己于1的立即数指出移位位数。应改为:

MOV CL,5

SHL AX,CL

(16)MUL AX,BX 错,目的操作数AX是隐含的,不能在指令中写出。应改为:MUL BX

9.设堆栈指针SP的初值为2000H,AX=3000H,BX=5000H,试问:

(1)执行指令PUSH AX后 (SP)=?

(2)再执行PUSH BX及POP AX后 (SP)=?(AX)=?(BX)=?

答:(1)执行指令PUSH AX后 (SP)=2000H-2=1FFEH;

(2)再执行PUSH BX及POP AX后 (SP)=1FFEH, (AX)=5000H, (BX)=5000H

10.要想完成把[2000H]送[1000H]中,用指令:MOV [1000H],[2000H]是否正确?如果不正确,应用什么方法?

答:把[2000H]送[1000H]中,用指令 MOV [1000H],[2000H]不正确,应改为:MOV AX,[2000H] MOV [1000H],AX

11.假如想从200中减去AL中的内容,用SUB 200,AL是否正确?如果不正确,应用什么

方法?

答:想从200中减去AL中的内容,用SUB 200,AL不正确,应改为: MOV BL,200 SUB BL,AL

12分别写出实现如下功能的程序段

(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 ;被减数的低位字送AX

SUB AX,345FH ;低位字相减,结果送AX

MOV BX,7B1DH ;被减数的高位字送BX

SBB BX,53E2H ;高位字相减处并减去低位字相减产生的借位,结果送BX

(2)使用移位指令实现一个字乘18的程序段是:

MOV AX,05F7H ;被乘数送AX

SHL AX,1 ;被乘数乘以2,结果在AX中

MOV BX,AX ;被乘数乘以2的结果暂存到BX

MOV CL,3 ;设置移位位数3

SHL AX,CL ;被乘数再乘以8(共乘以16),结果在AX中

ADD AX,BX ;被乘数再乘以18,结果在AX中

(3)使用移位指令实现一个字除以10的运算,必须将X/10拆分成多项的和,而每一项都应

是非的某次幂的倒数。利用等比级数的前N项和公式,可求出A0=X/8,公比Q=-1/4,故

X/10=X/8-X/32+X/128-X/512+...,

所求的程序段是:

MOV AX,FE00H ;被除数送AX

MOV CL,3 ;设置移位位数3

SHR AX,CL ;被乘数除以8,结果在AX中

MOV BX,AX ;被乘数除以8的结果暂存到BX

MOV CL,2 ;设置移位位数2

SHR AX,CL ;被乘数除以4(累计除32),结果在AX中

SUB BX,AX ;被除数/8-被除数/32,结果在BX中

MOV CL,2 ;设置移位位数2

SHR AX,CL ;被乘数除以4(累计除128),结果在AX中

ADD BX,AX ;被除数/8-被除数/32+被除数/128,结果在BX中

MOV CL,2 ;设置移位位数2

SHR 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,BX

ADD AX,DX ;按要求组成一个新字,结果放在AX中。

(5) 将数据段中以BX为偏移地址的连续四个单元的内容颠倒过来的程序段是:

MOV AL,[BX] ;数据段中BX为偏移地址的字单元内容送AX

XCHG AL,[BX+3] ;数据段中BX+3为偏移地址的字单元内容与AX的内容交换

MOV [BX],AL ;数据段中BX+3为偏移地址的字单元内容送BX为偏移地址的字单元MOV AL,[BX+1] ;数据段中BX+1为偏移地址的字单元内容送AX

XCHG AL,[BX+2] ;数据段中BX+2为偏移地址的字单元内容与AX的内容交换

MOV [BX+1],AL ;数据段中BX+2为偏移地址的字单元内容送BX+1为偏移地址的字单元(6)将BX中的四位压缩BCD数用非压缩BCD数形式顺序放在AL、BL、CL、DL中的程序段是:MOV DL,BL ;四位压缩BCD数的低位字节送DL

AND DL,0FH ;DL的高4位清零,得四位非压缩BCD数的最低位,放入DL中

MOV CL,4 ;设置移位位数4

SHR BX,CL ;BX中的数据逻辑右移4位,使四位压缩BCD数的次低位位于BL的低4位MOV CH,BL ;将BL的内容暂存到CH中保留

AND CH,0FH ;CH的高4位清零,得四位非压缩BCD数的次低位,放CH中

MOV CL,4 ;设置移位位数4

SHR BX,CL ;BX中的数据逻辑右移4位,使四位压缩BCD数的次高位位于BL的低4位MOV AL,BL ;将BL的内容暂存到AL中保留

AND BL,0FH ;BL的高4位清零,得四位非压缩BCD数的次高位,放BL中

MOV CL,4 ;设置移位位数4

SHR AL,CL ;使四位压缩BCD数的最高位位于AL的低4位,得四位非压缩BCD数的次高;位,放入BL中

MOV CL,CH ;将四位非压缩BCD数的次低位移入CL中

第六章习题与参考答案

1.假设OP1,OP2是已经用DB定义的变量, W_OP3和W_OP4是已经用DW定义的变量,判断下列指令书写是否正确?如有错误,指出错在何处?并写出正确的指令(或程序段)实现原错

误指令期望实现的操作((19)、(20)不改)。

(1)PUSH OP1

(2)POP [W_OP4]

(3)MOV AX, WORD PTR [SI][DI]

(4)MOV AX,WORD PTR ES:BX

(5)MOV BYTE PTR [BX], 1000

(6)MOV BX, OFFSET [SI+200H]

(7)MOV OP2,[BX]

(8)CMP HIGH W_OP3, 25

(9)CMP OP1, OP2

(10)CMP AX, OP2

(11)MOV W_OP3[BX+4*3][DI], SP

(12)ADD W_OP3, W_OP4

(13)MOV AX, W_OP3[DX]

(14)MOV OP1, LOW DS

(15)MOV SP, OP2[BX][SI]

(16)MOV AX, W_OP3+W_OP4

(17)MOV AX,W_OP3-W_OP4+100

(18)SUB AL, W_OP3+7

(19)MOV AX,BX SHL 2

(20)MOV BX,W_OP3 AND 8FD7H

答:1. (1)PUSH OP1 错,OP1为字节类型,栈操作不能按字节进行,应改为:PUSH WORD PTR

OP1

(2)POP [W_OP4] 正确。

(3)MOV AX, WORD PTR [SI][DI] 错,源操作数寻址方式有问题。

应改为: MOV BX, SI

MOV AX, WORD PTR [BX][DI]

(4)MOV AX,WORD PTR ES:BX错,若源操作数为寄存器寻址是不能加段说明及属性修改的。

显然,原意应为寄存器间接寻址,故应改为: MOV AX,WORD PTR ES:[BX]

(5)MOV BYTE PTR [BX], 1000 错,源操作数为字类型,目的操作数为字节类型,二者不一

致。应改为: MOV WORD PTR [BX], 1000 (6)MOV BX, OFFSET [SI+200H] 错,OFFSET运算应在汇编时完成,但[SI+200H]在执行指令

时才可获得。应改为: LEA BX,[SI+200H]

(7)MOV OP2,[BX] 错,源操作数和目的操作数均为内存单元,不允许。

应改为: MOV AL, [BX]

MOV OP2, AL

(8)CMP HIGH W_OP3, 25错,目的操作数中使用HIGH来分离存储器操作数,这是不允许的。

应改为: CMP BYTE PTR W_OP3+1,25

(9)CMP OP1, OP2错,源操作数和目的操作数均为内存单元,不允许。

应改为: MOV AL, OP2

CMP AL, OP1

(10)CMP AX, OP2错,源操作数为字节类型,目的操作数为字类型,二者不一致。

应改为: CMP AX, WORD PTR OP2

(11)MOV W_OP3[BX+4*3][DI], SP正确。

(12)ADD W_OP3, W_OP4错,源操作数和目的操作数均为内存单元,不允许。

应改为: MOV AX, W_OP4

ADD W_OP3, AX

(13)MOV AX, W_OP3[DX] 错,不能用DX寄存器间接寻址。应改为: MOV BX, DX

MOV AX, W_OP3[BX] (14)MOV OP1, LOW DS错,源操作数中使用LOW来分离寄存器操作数,这是不允许的。

应改为: MOV WORD PTR OP1,DS

(15)MOV SP, OP2[BX][SI] 错,源操作数为字节类型,目的操作数为字类型,二者不一致。

应改为:MOV SP, WORD PTR OP2[BX][SI]

(16)MOV AX, W_OP3+W_OP4错,两个标识符相加无意义。应改为: MOV AX, W_OP1

ADD AX, W_OP2

(17)MOV AX,W_OP3-W_OP4+100正确,源操作数为两个标识符(地址)相减再加一数,汇编时

得到一个数。

(18)SUB AL, W_OP3+7错,两个操作数类型不一致。应改为: SUB AL, BYTE PTR W_OP3+7

(19)MOV AX,BX SHL 2错,SHL只能对常量进行运算,左边不能使用寄存器

(20)MOV BX,W_OP3 AND 8FD7H错,AND只能对常量进行运算,左边不能使用变量

2.设某程序数据段中有下面两条伪指令

DATA1 EQU 25H

DATA2 DW 25H

代码段中有下面的程序段

.........

MOV BX,DATA1

MOV DX,DATA2

.........

试问执行完MOV DX,DATA2指令后BX和DX内容是否相同,为什么?

答:执行完MOV DX,DATA2指令后BX和DX内容不一定相同,因为DATA1是常量25,故(BX)=25, 但DATA2是变量,虽然其初始值为25,如果前面(省略号位置)有指令对DATA2操作,其值可能已发生变化。

3.下面各题中语句有语法错误,试分别用两种办法修改题中语句,使它们在汇编时都能分别获得通过:

(1) DATA1 DW 0FH

……

MOV AH,DATA1

(2) DATA2 EQU 10H

……

MOV DATA2,BL

(3) DATA3 DW ‘EFDABC’

(4) DATA4 DB 3E2H

(5) DASEG1 SEGMENT

VAR1 DW 4FD2H

DASEG1 ENDS

DASEG2 SEGMENT

VAR2 DW 0D8AH

DASEG2 ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DASEG2

START:

......

MOV AX,VAR1

......

COSEG ENDS

END START

答:(1)改为:DATA1 DB 0FH

……

MOV AH, DATA1

或改为:DATA1 DW 0FH

……

MOV AH, BYTE PTR DATA1 (2) 改为:DATA2 DB 10H

……

MOV DATA2,BL

或改为:DATA2 DW 10H

……

MOV BYTE PTR DATA2,BL

(3)改为:DATA3 DB ‘FEADCB’

或改为:DATA3 DW ‘EF’,‘DA’,‘BC’(4) 改为:DATA4 DB 0E2H,3H

或改为:DATA4 DW 3E2H

(5)改为: DASEG1 SEGMENT

VAR1 DW 4FD2H

DASEG1 ENDS

DASEG2 SEGMENT

VAR2 DW 0D8AH

DASEG2 ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DASEG1 START:

……

MOV AX,VAR1

……

COSEG ENDS

END START

或改为: DASEG1 SEGMENT

VAR1 DW 4FD2H

DASEG1 ENDS

DASEG2 SEGMENT

VAR2 DW 0D8AH

DASEG2 ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DASEG2, ES:DASEG1

START:

……

MOV AX,ES:VAR1

……

COSEG ENDS

END START

4.设已定义数据段

DATA SEGMENT

……

VAR2 DW 10H,7889H

……

VAR5 DB 20H,0

ADRR DW VAR2,VAR5

DATA ENDS

为使ADRR字存储单元中存放内容为“0010H”,ADRR+2字存储单元中存放内容为“0020H”,上述省略号位置应分别填写一条什么语句?说明理由。

答:为使ADRR字存储单元中存放内容为“0010H”,ADRR+2字存储单元中存放内容为“0020H”,上述省略号位置应分别填写ORG 10H 和 ORG 20H, 或者分别填写语句

VAR1 DB 10H DUP(?) 和 VAR3 6 DUP(?)

5.下面的数据段中,有数据为‘4100H’的字存储单元有几个?它们的偏移量分别是多少? DATA SEGMENT

DA1 DB 0

ORG 41H

DA2 DB 0,‘A’,41H,0,41H

ADR DW DA1,DA2

DATA ENDS

答:给出的数据段中,有数据‘4100H’的字存储单元有3个,它们的偏移量分别是41H、

44H、47H。

6.下面语句中有数据4203H’的字存储单元有多少?有数据‘0342H’

的字存储单元有多少?

DB 10H DUP(‘B’,2 DUP(3))

答:给出的语句中有数据‘4203H’的字存储单元有15个,有‘0342H’的字存储单元有16个。

7.试用数据定义语句DB或DW改写下述两语句中的某一个,使它们在存储器中有完全相同的存储情况。

VAR1 DB ‘abcdefghij’

VAR2 DW 6162H,6364H,6566H,6768H,696AH

答:将第一个伪指令语句改写为VAR1 DW ‘ab’,‘cd’,‘ef’,‘gh’,‘ij’,第二个伪指令语句不变。或第一个伪指令语句不变,而将第二个伪指令语句改写为:VAR2 DB 61H,62H,63H,64H,65H,66H,67H,68H,69H,6AH

8.分析下面各程序的运行情况,按要求将中间结果及最终结果填入相应划线处。

(1)DATA SEGMENT

CUNT EQU 0fH

DB1 DB 0dfH,0,25H,13H,78H

EVEN

DW1 DW 32H,50H,0de18H,4753H

ADR1 DW DB1

ADR2 DW DW1

BUF DB 4 DUP(0)

DATA ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DATA

BEGIN:MOV AX,DATA

MOV DS,AX

MOV CX,CUNT SHR 2 ;(CX)= ①

ADD ADR1,CX

SUB ADR2,CX

DEC ADR2 ;ADR2= ②

MOV BX,ADR1 ;(BX)= ③

MOV DI,BX

MOV SI,ADR2

MOV AL,DB1[BX] ;(AL)= ④

MOV BUF[DI],AL

MOV AX,DW1[BX][SI]

MOV WORD PTR BUF,AX ;BUF[0]= ⑤,BUF[1]= ⑥ MOV AH,4CH ;BUF[2]= ⑦,BUF[3]= ⑧ INT 21H

COSEG ENDS

END BEGIN

(2)DATA SEGMENT

ORG 32H

DA_WD DW 20H

NUM1 = 10*10

NUM2 EQU 70H

REL1 DW NUM1 LE NUM2

REL2 DB NUM1 NE NUM2,NUM1 EQ NUM2

NUM3 EQU 945H

NUM4 = 35*35

ADRR DW REL1,9873H,REL2

DATA ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DATA

BEGIN:MOV AX,DATA

MOV DS,AX

MOV AX,DA_WD+1 ;(AX)= ①

MOV BX,OFFSET DA_WD ;(BX)= ②

MOV CL,HIGH(OFFSET REL2)

MOV CH,TYPE DA_WD ;(CX)= ③ MOV DX,REL1 ;(DX)= ④ MOV AX,WORD PTR REL2 ;(AX)= ⑤

MOV BX,NUM4 LE NUM3 ;(BX)= ⑥ MOV CX,NUM4 GT NUM3 ;(CX)= ⑦

MOV DX,ADRR+1 ;(DX)= ⑧ LEA SI,ADRR+1 ;(SI)= ⑨ MOV AH,4CH

INT 21H

COSEG ENDS

END BEGIN

(3)DATA SEGMENT

ORG 100H

NUM1 = 8

NUM2 = NUM1+10H

DA1 DB ‘IBM PC’

DB 0AH,0DH

CUNT EQU $-DA1

DA2 DW ‘IB’,‘M ’,‘PC’,0A0DH

ORG 134H

NUM3 = 20H

DA3 DW 10H,$+20H,30H,$+40H

DA4 DW DA1+NUM3+14H

DATA ENDS

COSEG SEGMENT

ASSUME CS:COSEG,DS:DATA

BEGIN:MOV AX,DATA

MOV DS,AX

MOV AX,OFFSET (DA1+1) ;(AX)= ①

MOV BL,LOW OFFSET DA2 ;(BL)= ②

MOV CX,CUNT ;(CX)= ③

MOV DX,DA2+5 ;(DX)= ④ MOV AX,DA3[2] ;(AX)= ⑤ MOV BX,DA3[6] ;(BX)= ⑥ MOV SI,DA4 ;(SI)= ⑦ MOV CX, [SI] ;(CX)= ⑧ MOV AH,4CH

INT 21H

COSEG ENDS

END BEGIN

(4) data segment

org 2

Va1 db 30h,36h

org 7

Va2 db 35h,38h

len1 equ $-Va2

Va3 db 39h,32h

data ends

prog segment

assume cs:prog,ds:data

start: mov ax,data

mov ds,ax

mov dl,[Va1+1] ;(dl)= ①

mov ah,2

int 21h

mov di,offset Va3

mov dl,[di+1] ;(dl)= ②

mov ah,2

int 21h

mov dl,ds:[len1] ;len1= ③,(dl)= ④

mov ah,2

int 21h

lea ax,Va2 ;(al)= ⑤

or al,30h ;(al)= ⑥

mov dl,al

mov ah,2

int 21h

mov ah,4ch

int 21h

prog ends

end start

;最终显示结果为: ⑦

答:(1) ① 3 ② 2 ③ 3 ④ 13H ⑤ deH ⑥ 53H ⑦ 0 ⑧ 13H

(2) ① ff00H ② 32H ③ 200H ④ ffffH ⑤ ffH ⑥ ffffH

⑦ 0 ⑧ 7300H ⑨ 39H

(3) ① 101H ② 8 ③ 8 ④ 0d50H ⑤ 156H ⑥ 17aH ⑦ 134H ⑧ 10H

(4) ① 36H ② 32H ③ 2 ④ 30H ⑤ 7 ⑥ 37H ⑦ 6207

9.按下面的要求写出程序的框架

(1)数据段的位置从0E000H开始,数据段中定义一个100字节的数组,其类型属性既是字又是字节;

(2)堆栈段从小段开始,段组名(类别名)为STACK;

(3)代码段中指定段寄存器,指定主程序从1000H开始,给有关段寄存器赋值;

(4)程序结束。

答:所求程序框架为:

Data SEGMENT AT 0E000H

Arr_w LABEL WORD

Arr_b DB 100 DUP(?)

Data ENDS

Sta_seg SEGMENT PARA ‘S TACK’

DB 80 DUP(?)

Top LABEL WORD

Sta_seg ENDS

Code SEGMENT

ASSUME CS:Code,DS:data,SS:sta_seg

ORG 1000H

Start: MOV AX, data

MOV DS, AX

MOV AX,Sta_seg

MOV SS, AX

MOV SP, OFFSET Top

……

MOV AH, 4CH

INT 21H

Code ENDS

END Start

10.编写一个程序,要求运行时屏幕显示‘BELL’,同时响铃一次(响铃的ASCII码为07)。答:所求程序为:

Code SEGMENT

ASSUME CS:code

Start: MOV DL, 42H

MOV AH, 2

INT 21H

MOV DL, 45H

MOV AH, 2

INT 21H

MOV DL, 4CH

MOV AH, 2

INT 21H

MOV DL, 4CH

MOV AH, 2

INT 21H

MOV DL, 7

MOV AH, 2

INT 21H

MOV AH, 4CH

INT 21H

Code ENDS

END Start

11.假设在数据段X_SEG、附加段Y_SEG和堆栈段Z_SEG中分别定义了字变量X、Y和Z,试编制一完整的程序计算 X+Y+Z,并将结果送X。

答:所求程序为:

X_SEG SEGMENT

X DW 12eH

X_SEG ENDS

Y_SEG SEGMENT

Y DW 4d2H

Y_SEG ENDS

Z_SEG SEGMENT STACK ‘STACK’

Z DW 2CAH

Z_SEG ENDS

Code SEGMENT

ASSUME CS:Code,DS:X_SEG,ES:Y_SEG,SS:Z_SEG

Start: MOV AX, X_SEG

MOV DS, AX

MOV AX, Y_SEG

MOV ES, AX

MOV AX,ES:Y

ADD X, AX

MOV BP, 0

MOV AX, [BP+Z]

ADD X, AX

MOV AH, 4CH

INT 21H

Code ENDS

END Start

12.写一个完整的程序放在代码段C_SEG中,要求把数据段D_SEG中的DADD1和附加段E_SEG 中的DADD2相加,并把结果存放在D_SEG段中的SUM中。其中DADD1、DADD2和SUM均为双字类型,DADD1赋值为98765,DADD2赋值为-15893。

答:所求程序为:

D_SEG SEGMENT

DADD1 DD 98765

SUM DD ?

D_SEG ENDS

E_SEG SEGMENT

DADD2 DD -15893

E_SEG ENDS

C_SEG SEGMENT

ASSUME CS: C_SEG,DS:D_SEG,ES:E_SEG

Start: MOV AX, D_SEG

MOV DS, AX

MOV AX, E_SEG

MOV ES, AX

MOV AX,WORD PTR DADD1

MOV BX,WORD PTR DADD1+2

ADD AX, WORD PTR ES:DADD2

微机原理试题及答案

1 一、选择题(20分,在每小题的4个备选答案中选出一个正确的答案编号填写在该题空白处,每题2分) 1.指令MOV DX,[BX]的寻址方式是 D 。 (A)立即寻址(B)直接寻址(C)寄存器寻址(D)寄存器间接寻址2.若AL的内容为3FH,执行SHL AL,1指令后,AL的内容为 A 。 (A)7EH (B)1FH (C)9FH (D)7FH 解析:shl al ,1 即目的操作数各位左移一次,移动一次,相当于将目的操作数乘以2。3fh=63 63*2=126 126=7eh 故选A 3.属于在工作中需定时刷新的存储器的芯片是 B 。 (A)SRAM (B)DRAM (C)EEPROM (D)EPROM 4.某EPROM芯片上有19条地址线A 0~A 18 ,它的容量为 C 。 (A)128K (B)256K (C)512K (D)1024K 5.8086/8088CPU的SP寄存器是多少位的寄存器 B 。 (A)8位(B)16位(C)24位(D)32位 6.在STOSB指令执行的时候,隐含着寄存器的内容作为操作数的偏移地址, 该寄存器是 D 。 (A)SP (B)BX (C)SI (D)DI 解析:stos数据串存储指令功能:将累加器al或ah中的一个字或字节,传送到附加段中以di为目标指针的目的串中,同时修改di,以指向串中的下一个单元。 7.8255工作在方式0时,下面哪种说法不正确 C 。 (A)A口输入无锁存能力(B)A、B口输出有锁存能力 (C)C口输入有锁存能力(D)A、B、C三个口输出均有锁存能力 解析:对于方式0,规定输出信号可以被锁存,输入不能锁存 8.采用DMA方式来实现输入输出是因为它 A 。 (A)速度最快(B)CPU可不参与操作(C)实现起来比较容易(D)能对突发事件做出实时响应 9.工作在最小模式下,8086/8088CPU芯片中,将地址信号锁存的信号是 C 。 (A)DT/R (B)DEN (C)ALE (D)AEN 10.在LOOP指令执行的时候,隐含着对计数器减1的操作,该计数器是用寄存 器 C 。 (A)AX (B)BX (C)CX (D)DX 解析:loop:循环指令。指令执行前必须事先见重复次数放在cx寄存器中,每执行一次loop指令,cx自动减1。 二、填空题(每小题2分,共10分) 1.两个无符号数相等,该两数相减后ZF标志= 1 。解析:zf: 全零标志位。本次运算结果为0时,zf=1,否则zf=0。 2.执行LODSB后,SI的内容较该指令执行前增加1,说明DF= 0 。

微机原理课后作业答案第五版

第一章 6、[+42]原=00101010B=[+42]反=[+42]补 [-42]原 [-42]反 [-42]补 [+85]原=01010101B=[+85]反=[+85]补 [-85]原 [-85]反 [-85]补 10、微型计算机基本结构框图 微处理器通过一组总线(Bus)与存储器和I/O接口相连,根据指令的控制,选中并控制它们。微处理器的工作:控制它与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。 存储器用来存放数据和指令,其内容以二进制表示。每个单元可存8位(1字节)二进制信息。 输入——将原始数据和程序传送到计算机。 输出——将计算机处理好的数据以各种形式(数字、字母、文字、图形、图像和声音等)送到外部。 接口电路是主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。 总线:从CPU和各I/O接口芯片的内部各功能电路的连接,到计算机系统内部的各部件间的数据传送和通信,乃至计算机主板与适配器卡的连接,以及计算机与外部设备间的连接,都要通过总线(Bus)来实现。 13、8086有20根地址线A19~A0,最大可寻址220=1048576字节单元,即1MB;80386有32根地址线,可寻址232=4GB。8086有16根数据线,80386有32根数据线。

1、8086外部有16根数据总线,可并行传送16位数据; 具有20根地址总线,能直接寻址220=1MB的内存空间; 用低16位地址线访问I/O端口,可访问216=64K个I/O端口。 另外,8088只有8根数据总线 2、8086 CPU由两部分组成:总线接口单元(Bus Interface Unit,BIU) BIU负责CPU与内存和I/O端口间的数据交换: BIU先从指定内存单元中取出指令,送到指令队列中排队,等待执行。 执行指令时所需的操作数,也可由BIU从指定的内存单元或I/O端口中获取,再送到EU去执行。 执行完指令后,可通过BIU将数据传送到内存或I/O端口中。 指令执行单元(Execution Unit,EU) EU负责执行指令: 它先从BIU的指令队列中取出指令,送到EU控制器,经译码分析后执行指令。EU的算术逻辑单元(Arithmetic Logic Unit,ALU)完成各种运算。 6、见书P28-29。 7.(1) 1200:3500H=1200H×16+3500H=15500H (2) FF00:0458H=FF00H×16+0458H=FF458H (3) 3A60:0100H=3A80H×16+0100H=3A700H 8、(1)段起始地址 1200H×16=12000H,结束地址 1200H×16+FFFFH=21FFFH (2)段起始地址 3F05H×16=3F050H,结束地址 3F05H×16+FFFFH=4F04FH (3)段起始地址 0FFEH×16=0FFE0H,结束地址 0FFEH×16+FFFFH=1FFD0H 9、3456H×16+0210H=34770H 11、堆栈地址范围:2000:0000H~2000H(0300H-1),即20000H~202FFH。执行 两条PUSH指令后,SS:SP=2000:02FCH,再执行1条PUSH指令后,SS: SP=2000:02FAH。 12、(2000H)=3AH, (2001H)=28H, (2002H)=56H, (2003H)=4FH 从2000H单元取出一个字数据需要1次操作,数据是 283AH; 从2001H单元取出一个字数据需要2次操作,数据是 5628H; 17、CPU读写一次存储器或I/O端口的时间叫总线周期。1个总线周期需要4个系统时钟周期(T1~T4)。8086-2的时钟频率为8MHz,则一个T周期为125ns,一个总线周期为500ns,则CPU每秒最多可以执行200万条指令。

(完整版)微机原理课后习题参考答案

第一章 2、完成下列数制之间的转换。 (1)01011100B=92D (3)135D=10000111B (5)10110010B=262Q=B2H 3、组合型BCD码和非组合型BCD码有什么区别?写出十进制数254的组合型BCD数和非组合型数。 答:组合型BCD码用高四位和低四位分别对应十进制数的个位和十位,其表示范围是0~99;非组合型BCD码用一个字节的低四位表示十进制数,高四位则任意取值,表示范围为0~9。 组合型:254=(001001010100)BCD 非组合型:254=(00000010 00000101 00000100)BCD 7、计算机为什么采用补码形式存储数据?当计算机的字长n=16,补码的数据表示范围是多少? 答:在补码运算过程中,符号位参加运算,简化了加减法规则,且能使减法运算转化为加法运算,可以简化机器的运算器电路。+32767~ -32768。 9、设计算机字长n=8,求下列各式的[X+Y]补和[X-Y]补,并验证计算结果是否正确。 (1)X=18,Y=89 [X+Y]补=00010010+01011001=01101011B=107D 正确 [X-Y]补=10111001B=00010010+10100111=(-71D)补正确 (2)X=-23,Y=-11 [X+Y]补=11101001+11110101=11011110B=(-34D)补正确[X-Y]补=11101001+00001011=11110100B=(-12D)补正确 (3)X=18,Y=-15 [X+Y]补=00010010+11110001=00000011B=(3D)补正确 [X-Y]补=00010010+00001111=00100001B=(33D)补正确 (4)X=-18,Y=120 [X+Y]补=11101110+01111000=01100110B=(102D)补正确[X-Y]补=11101110+10001000=01110110B=(123D)补由于X-Y=-138 超出了机器数范围,因此出错了。 13、微型计算机的主要性能指标有哪些? 答:CPU字长、存储器容量、运算速度、CPU内核和IO工作电压、制造工艺、扩展能力、软件配置。 第二章 2、8086标志寄存器包含哪些标志位?试说明各标志位的作用。 答:进位标志:CF;奇偶校验:PF;辅助进位:AF;零标志:ZF;符号标志:SF;溢出标志:OF。 5、逻辑地址与物理地址有什么区别?如何将逻辑地址转换为物理地址? 答:物理地址是访问存储器的实际地址,一个存储单元对应唯一的一个物理地址。逻辑地址是对应逻辑段内的一种地址表示形式,它由段基址和段内偏移地址两部分组成,通常表示为段基址:偏移地址。 物理地址=段基址*10H+偏移地址。 6、写出下列逻辑地址的段基址、偏移地址和物理地址。 (1)2314H:0035H (2)1FD0H:000AH 答:(1)段基址:2314H;偏移地址:0035H;物理地址:23175H。 (2)段基址:1FD0H;偏移地址:000AH;物理地址:1FD0AH。 8、设(CS)=2025H,(IP)=0100H,则当前将要执行指令的物理地址是多少? 答:物理地址=(CS)*10H+(IP)=20350H 9、设一个16字的数据区,它的起始地址为70A0H:DDF6H(段基址:偏移地址),求这个数据区的首字单元和末字单元的物理地址。

微机原理与应用试题库(附答案)

《微机原理及应用》试题库 1. 8086 和 8088 的引脚信号中,D为地址锁存允许信号引脚。 A. CLK B. INTR C.NMI D.ALE 2.下面的哪项是有效标识符:B A . 4LOOP : B. DELAYIS : C. MAIN A/ B : D.GAMA$1 : 3.如图所示的三态输出电路,当 A 时, V B≈V DD。 A. E(ENABLE)=1, A=1 B.E(ENABLE)=1, A=0 C. E(ENABLE)=0, A=1 D.E(ENABLE)=0, A=0 4. 设 (SS)=2000H , (SP)=0100H , (AX)=2107H ,则执行指令PUSH AX后,存放数据21H 的物理地址是 D。 A. 20102H B. 20101H C. 200FEH D. 200FFH 5. 汇编语言中,为了便于对变量的访问, 它常常以变量名的形式出现在程序中, 可以认为它是存放数据存储单元的A。 A.符号地址B.物理地址C.偏移地址 D .逻辑地址 6. 下列四个寄存器中,不能用来作为间接寻址方式的寄存器是A。 A. CX B. BX C. BP D. DI (C)7. 执行下列程序段: MOV AX ,0 MOV BX ,1 MOV CX , 100 AA : ADD AX ,BX INC BX LOOP AA HLT 执行后的结果:(AX)=,(BX)=。 A. 5050 , 99 B. 2500, 100 C. 5050 , 101 D. 2550 , 102 8. 假设 V1 和 V2 是用 DW 定义的变量,下列指令中正确的是A。 A . MOV V1, 20H B. MOV V1, V2 C . MOV AL, V1D. MOV2000H, V2 9. –49D 的二进制补码为A。

最新微机原理习题与答案

微机原理习题与答案

微机原理习题与答案 第一章微机基础 1-1微处理器、微机与微机系统三者之间有什么不同? 答: 微处理器一般也称为CPU,它本身具有运算能力和控制功能。微型计算机是由CPU、存储器、输入/输出接口电路和系统总线构成的裸机系统。微型计算机系统是以微型计算机为主机,配上系统软件和外设之后而构成的计算机系统。微处理器是微型计算机的一组成部分,而微型计算机又是微型计算机系统的一组成部分。 1-2 CPU在内部结构上由那几部分组成? 答:8位CPU在内部结构上由寄存器阵列、算术逻辑运算单元ALU、控制器和内部总线及缓冲器等部分组成。 1-3总线接口部件有哪些功能? 8086的执行部件有什么功能? 答:总线接口部件的功能是负责与存储器、I/O端口传送数据。 执行部件的功能是负责指令的执行。 1-4 8086/8088的状态标志和控制标志分别有哪些? 答:8086/8088的状态标志有6个:CF、AF、SF、PF、OF、ZF,控制标志有3个:TF、DF、IF。 1-5 8086/8088和传统的8位计算机相比在执行指令方面有什么不同?这样的设计思想有什么优点? 答:8位饥是取一条指令,执行一条,再取,再执行; 8088执行时,取指与执行几乎是同时进行的。

1-6 8086/088微处理器中有哪些寄存器?通用寄存器中哪些可以作地址指针用? 答:8086/8088各有14个寄存器,它们可分为3组: (1)四个通用寄存器和四个变址和指针寄存器,即AX,BX,CX,DX,SP,BP,SI,DI。 (2)四个段寄存器,即CS,DS,SS,ES。 (3)两个控制寄存器,即IP,FR。 1-7 8086/8088 20位物理地址是怎么样形成的?当CS=2000H, IP=0100H,其指向的物理地址等于多少? 答:物理地址=段地址×16+段内偏移地址。 20100 2-1 试述8088微处理器的各种寻址方式,并写出各种寻址方式的传送指令1~~2条(源操作数寻址与目的操作数寻址) 答:立即寻址,寄存器寻址,直接寻址,寄存器间接寻址,变址寻址,基址加变址寻址。 第三章汇编语言程序设计 3-2指令AND AX,X AND Y中X和Y是两个已赋值的常量,问:两个AND操作分别在什么时间进行?功能上有何区别? 答:指令中的X AND Y操作在程序汇编时进行,该操作完成后得到一个数,即为指令中的第二操作数。由此得到“AND AX,立即数”这样形式的一条指令,由汇编器将其翻译为机器码。该指令中的AND操作由CPU在执行指令时完成,结果存于AX中,并影响F寄存器。 3-3指出以下三条指令的区别(NUM为数据段一个变量名)。

微机原理课后习题答案

李伯成《微机原理》习题第一章 本章作业参考书目: ①薛钧义主编《微型计算机原理与应用——Intel 80X86系列》 机械工业出版社2002年2月第一版 ②陆一倩编《微型计算机原理及其应用(十六位微型机)》 哈尔滨工业大学出版社1994年8月第四版 ③王永山等编《微型计算机原理与应用》 西安电子科技大学出版社2000年9月 1.1将下列二进制数转换成十进制数: X=10010110B= 1*27+0*26+0*25+1*24+0*23+1*22+1*21 +0*21 =128D+0D+0D+16D+0D+0D+4D+2D=150D X=101101100B =1*28+0*27+1*26+1*25+0*24+1*23+1*22+0*21+0*20 =256D+0D+64D+32D+0D+16D+4D+0D=364D X=1101101B= 1*26+1*25+0*24+1*23+1*22+0*21 +1*20 =64D+32D+0D+8D+4D+0D+1D=109D 1.2 将下列二进制小数转换成十进制数: (1)X=0.00111B= 0*2-1+0*2-2+1*2-3+1*2-4+1*2-5= 0D+0D+0.125D+0.0625D+0.03125D=0.21875D (2) X=0.11011B= 1*2-1+1*2-2+0*2-3+1*2-4+1*2-5= 0.5D+0.25D+0D+0.0625D+0.03125D=0.84375D (3) X=0.101101B= 1*2-1+0*2-2+1*2-3+1*2-4+0*2-5+1*2-6= 0.5D+0D+0.125D+0.0625D+0D+0.015625D=0.703125D 1.3 将下列十进制整数转换成二进制数: (1)X=254D=11111110B (2)X=1039D=10000001111B (3)X=141D=10001101B 1.4 将下列十进制小数转换成二进制数: (1)X=0.75D=0.11B (2) X=0.102 D=0.0001101B (3) X=0.6667D=0.101010101B 1.5 将下列十进制数转换成二进制数 (1) 100.25D= 0110 0100.01H (2) 680.75D= 0010 1010 1000.11B 1.6 将下列二进制数转换成十进制数 (1) X=1001101.1011B =77.6875D

微机原理习题及答案

一、选择 1、在微型计算机中,微处理器的主要功能是进行( )。 D A、算术运算 B、逻辑运算 C、算术、逻辑运算 D、算术、逻辑运算及全机的控制 2、Pentium I属于()位CPU C A、16 B、8 C、32 D、64 3、Intel 8086属于()位CPU A A、16 B、8 C、32 D、64 4、CPU与I/O设备间传送的信号通常有( ) D A、控制信息 B、状态信息 C、数据信息 D、以上三种都有 5、存储器用来存放计算机系统工作时所需要的信息,即( )。 D A、程序 B、数据 C、技术资料 D、程序和数据 6、运算器的核心部件是( )。 D A、加法器 B、累加寄存器 C、多路开关 D、算逻运算单元 二、填空 1、内存可分为2大类:随机存储器RAM 和 2、数据总线是向的,地址总线是向的。 3、计算机的五大部件是:、、、、输出设备 4、总线可分为三类:、、 5、存储程序工作原理最先由提出 6、在计算机内部,一切信息的存取、处理和传送都是以形式进行的。 1、只读存储器ROM 2、双、单 3、运算器、控制器、存储器、输入设备 4、地址总线、数据总线、控制总线 5、冯·诺依曼 6、二进制 三、简答 1、冯·诺依曼型计算机的特点是什么 (1).以二进制表示指令和数据 (2).程序和数据存放在存储器中,从存储器中取指令并执行 (3).由运算器、控制器、存储器、输入设备、输出设备构成计算机硬件系统。 一、选择 1、在机器数______中,零的表示形式是唯一的()。BD A、原码 B、补码 C、反码 D、移码 2、计算机内部表示带符号整数通常采用()。C A、原码 B、反码 C、补码 D、移码

微机原理与接口技术课后习题答案

第1章微型计算机系统 〔习题〕简答题 (2)总线信号分成哪三组信号 (3)PC机主存采用DRAM组成还是SRAM组成 (5)ROM-BIOS是什么 (6)中断是什么 (9)处理器的“取指-译码-执行周期”是指什么 〔解答〕 ②总线信号分成三组,分别是数据总线、地址总线和控制总线。 ③ PC机主存采用DRAM组成。 ⑤ ROM-BIOS是“基本输入输出系统”,操作系统通过对BIOS 的调用驱动各硬件设备,用户也可以在应用程序中调用BIOS中的许多功能。 ⑥中断是CPU正常执行程序的流程被某种原因打断、并暂时停止,转向执行事先安排好的一段处理程序,待该处理程序结束后仍

返回被中断的指令继续执行的过程。 ⑨指令的处理过程。处理器的“取指—译码—执行周期”是指处理器从主存储器读取指令(简称取指),翻译指令代码的功能(简称译码),然后执行指令所规定的操作(简称执行)的过程。 〔习题〕填空题 (2)Intel 8086支持___________容量主存空间,80486支持___________容量主存空间。 (3)二进制16位共有___________个编码组合,如果一位对应处理器一个地址信号,16位地址信号共能寻址___________容量主存空间。 (9)最初由公司采用Intel 8088处理器和()操作系统推出PC机。 ② 1MB,4GB ③ 216,64KB (9)IBM,DOS 〔习题〕说明微型计算机系统的硬件组成及各部分作用。 〔解答〕

CPU:CPU也称处理器,是微机的核心。它采用大规模集成电路芯片,芯片内集成了控制器、运算器和若干高速存储单元(即寄存器)。处理器及其支持电路构成了微机系统的控制中心,对系统的各个部件进行统一的协调和控制。 存储器:存储器是存放程序和数据的部件。 外部设备:外部设备是指可与微机进行交互的输入(Input)设备和输出(Output)设备,也称I/O设备。I/O设备通过I/O接口与主机连接。 总线:互连各个部件的共用通道,主要含数据总线、地址总线和控制总线信号。 〔习题〕区别如下概念:助记符、汇编语言、汇编语言程序和汇编程序。 〔解答〕 助记符:人们采用便于记忆、并能描述指令功能的符号来表示机器指令操作码,该符号称为指令助记符。 汇编语言:用助记符表示的指令以及使用它们编写程序的规则就形成汇编语言。 汇编语言程序:用汇编语言书写的程序就是汇编语言程序,或称汇编语言源程序。

微机原理课后作业答案(第五版)

6、[+42]原=00101010B=[+42]反=[+42]补 [-42]原=B [-42]反=B [-42]补=B [+85]原=01010101B=[+85]反=[+85]补 [-85]原=B [-85]反=B [-85]补=B 10、微型计算机基本结构框图 微处理器通过一组总线(Bus)与存储器和I/O接口相连,根据指令的控制,选中并控制它们。微处理器的工作:控制它与存储器或I/O设备间的数据交换;进行算术和逻辑运算等操作;判定和控制程序流向。 存储器用来存放数据和指令,其内容以二进制表示。每个单元可存8位(1字节)二进制信息。 输入——将原始数据和程序传送到计算机。 输出——将计算机处理好的数据以各种形式(数字、字母、文字、图形、图像和声音等)送到外部。 接口电路是主机和外设间的桥梁,提供数据缓冲驱动、信号电平转换、信息转换、地址译码、定时控制等各种功能。 总线:从CPU和各I/O接口芯片的内部各功能电路的连接,到计算机系统内部的各部件间的数据传送和通信,乃至计算机主板与适配器卡的连接,以及计算机与外部设备间的连接,都要通过总线(Bus)来实现。 13、8086有20根地址线A19~A0,最大可寻址220=1048576字节单元,即1MB;80386有32根地址线,可寻址232=4GB。8086有16根数据线,80386有32根数据线。

1、8086外部有16根数据总线,可并行传送16位数据; 具有20根地址总线,能直接寻址220=1MB的内存空间; 用低16位地址线访问I/O端口,可访问216=64K个I/O端口。 另外,8088只有8根数据总线 2、8086 CPU由两部分组成:总线接口单元(Bus Interface Unit,BIU) BIU负责CPU与内存和I/O端口间的数据交换: BIU先从指定内存单元中取出指令,送到指令队列中排队,等待执行。 执行指令时所需的操作数,也可由BIU从指定的内存单元或I/O端口中获取,再送到EU去执行。 执行完指令后,可通过BIU将数据传送到内存或I/O端口中。 指令执行单元(Execution Unit,EU) EU负责执行指令: 它先从BIU的指令队列中取出指令,送到EU控制器,经译码分析后执行指令。EU的算术逻辑单元(Arithmetic Logic Unit,ALU)完成各种运算。 6、见书P28-29。 7.(1)1200:3500H=1200H×16+3500H=15500H (2)FF00:0458H=FF00H×16+0458H=FF458H (3)3A60:0100H=3A80H×16+0100H=3A700H 8、(1)段起始地址1200H×16=12000H,结束地址1200H×16+FFFFH=21FFFH (2)段起始地址3F05H×16=3F050H,结束地址3F05H×16+FFFFH=4F04FH (3)段起始地址0FFEH×16=0FFE0H,结束地址0FFEH×16+FFFFH=1FFD0H 9、3456H×16+0210H=34770H 11、堆栈地址范围:2000:0000H~2000H(0300H-1),即20000H~202FFH。执行两条PUSH指令后,SS:SP=2000:02FCH,再执行1条PUSH指令后,SS:SP=2000:02FAH。 12、(2000H)=3AH, (2001H)=28H, (2002H)=56H, (2003H)=4FH 从2000H单元取出一个字数据需要1次操作,数据是283AH; 从2001H单元取出一个字数据需要2次操作,数据是5628H; 17、CPU读写一次存储器或I/O端口的时间叫总线周期。1个总线周期需要4个系统时钟周期(T1~T4)。8086-2的时钟频率为8MHz,则一个T周期为125ns,一个总线周期为500ns,则CPU每秒最多可以执行200万条指令。

微机原理试题及答案

微机原理试题及答案 微机原理试题及答案 一、填空题(每空1分,共15分) 1、在计算机中,对带符号数的运算均采用补码。带符号负数1100 0011的补码为_10111101_。2、单片机通常采用“三总线”的应用模式,芯片内部设有单独的地址总线、数据总线_ 和控制总线。 3、当使用80C51单片机时,需要扩展外部程序存储器,此时EA应为_0__。 4、若(A)=B3H,(R0)=A8H,执行指令XRL A,R0之后,(A)=_1BH__。 5、在80C51单片机中,带借位减法SUBB指令中,差的D7需借位时,_CY_=1,差的D3需借位时,AC_=1。 6、80C51单片机中,在调用子程序前,用_PUSH__指令将子程序中所需数据压入堆栈,进入执行子程序时,再用___POP__指令从堆栈中弹出数据。 7、在十六进制数与ASCII码值的转换过程中,当十六进制数在0~9之间时,其对应的ASCII码值为该十六进制数加___30H______。 8、外部中断INT0和INT1有两种触发方式:___电平触发方式_____和__边沿触发方式__。 9、在单片机串行通信中,依发送与接收设备时钟的配置情况,串行通信可以分为 __异步通信___和__同步通信_。10、若累加器A中的数据为

0111 0010B,则PSW中的P=__0___。二、选择题(每题1分,共15分) 1、单片机是在一片集成电路芯片上集成了以下部分,除了( D ) A、微处理器 B、存储器 C、I/O接口电路 D、串口通信接口2、一个机器周期包含多少个晶振周期(D ) A、2 B、6 C、8 D、12 3、80C51单片机有21个特殊功能寄存器,其中与串行口相关的有以下几个,除了( B ) A、SBUF B、TCON C、SCON D、PCON 4、 80C51系列单片机具有4个8位的并行I/O口,其中哪个口工作时需要外接上拉电阻(A ) A、P0 B、P1 C、P2 D、P3 5、寄存器中的内容为地址,从该地址去取操作数的寻址方式称为( C ) A、寄存器寻址 B、直接寻址 C、寄存器间接寻址 D、变址寻址6、源地址为1005H。目的'地址为 0F87H。当执行指令“JC rel”时,rel为( B )。A、7EH B、80H C、82H D、84H 7、若(R0)=30H,(30H)=75H,(75H)=90H,执行指令MOV A,@R0后,(A)=__B____。A、30H B、75H C、90H D、00H 8、下列哪个语句是起始地址设置伪指令( A )。A、ORG B、END C、DW D、EQU 9、在80C51单片机中,各中断优先级最低的是( D )。A、外部中断0 B、外部中断1 C、定时器0 D、计数器1 10、80C51单片机的中断响应时间至少需要( C )个完整的机器周期。A、1 B、2 C、3 D、5 11、在80C51单片机中,

微机原理课后答案

1.2 课后练习题 一、填空题 1.将二进制数1011011.1转换为十六进制数为__5B.8H_____。 2.将十进制数199转换为二进制数为____ 11000111____B。 3.BCD码表示的数,加减时逢__10____进一,ASCII码用来表示数值时,是一种非压缩的BCD 码。 4.十进制数36.875转换成二进制是___100100.111____________。 5.以_微型计算机____为主体,配上系统软件和外设之后,就构成了__微型计算机系统____。6.十进制数98.45转换成二进制为__1100010.0111_B、八进制__142.3463________Q、十六进制__62.7333________H。(精确到小数点后4位) 二、选择题 1.堆栈的工作方式是__B_________。 A)先进先出B)后进先出C)随机读写D)只能读出不能写入 2.八位定点补码整数的范围是____D_________。 A)-128-+128 B)-127-+127 C)-127-+128 D)-128-+127 3.字长为16位的数可表示有符号数的范围是___B___。 A)-32767-+32768 B)-32768-+32767 C)0-65535 D)-32768-+32768 三、简答题 1.微型计算机系统的基本组成? 微型计算机,系统软件,应用软件,输入输出设备 2.简述冯.诺依曼型计算机基本思想? ●将计算过程描述为由许多条指令按一定顺序组成的程序,并放入存储器保存 ●指令按其在存储器中存放的顺序执行; ●由控制器控制整个程序和数据的存取以及程序的执行; ●以运算器为核心,所有的执行都经过运算器。 3.什么是微型计算机? 微型计算机由CPU、存储器、输入/输出接口电路和系统总线构成。 4.什么是溢出? 运算结果超出了计算机所能表示的范围。 2.2 一、填空题 1. 8086/8088的基本总线周期由___4____个时钟周期组成,若CPU主频为10MHz,则一个时钟周期的时间为___0.1μs_____。 2. 在8086CPU的时序中,为满足慢速外围芯片的需要,CPU采样___READY_________信号,若未准备好,插入___TW__________时钟周期。 3. 8086系统总线形成时,须要用_____ALE__________信号锁定地址信号。 4. 对于8086微处理器,可屏蔽中断请求输入信号加在_____INTR__________引脚。

《微机原理》复习题及解答

微机原理》复习题解答 1、在8086/8088系统中,存储器是怎样组织的?整个存储空间有多大?最大逻辑长度为多大?至少可将存储器分为多少个段?段起始于什么位置?偏移地址是什么?怎样计算20位物理地址? ①分段组织②1兆字节③64K字节④至少分成16段⑤起始于最后四位二进制数都为0的位置⑥偏移地址是相当于段起始位置的偏移量⑦段地址×16+偏移地址 2、系统总线分为哪几组?各自传送的方向如何? ①分成3组:数据部线、地址总线、控制总线②数据总线和控制总线都是双向的,地址总线始终由CPU发出 3、8086微处理器分为哪几个部分?它们之间采用什么工作方式?其中状态寄存器由几类标志组成?与中断有关的是哪一位? ①分成2部分:总线接口部件、执行部件②并行工作方式③2类:状态标志、控制标志④IF 位,IF置1,响应外部可屏蔽中断 4、怎样将8086设置为最小或最大模式?分别应配置哪些外围器件?作用怎样?最大模式与最小模式的配置相比多了什么器件?作用是什么? ①引脚接高电平则设置为最小模式,如接低电平则设置为最大模式②最小模式下:1片8248A,作为时钟发生器;3片8282或74LS373,用来作为地址锁存器;2片8286/8287作为总线收发器。最大模式下:1片8284A,3片8282,2片8286,1片8288总线控制器,1片8259A及有关电路③8284A除了提供频率恒定的时钟信号外,还对准备发(READY)和(RESET)信号进行同步。8282:地址/数据总线是复用的,而和S7也是复用的,所以在总路线周期前一部分时间中输出地址信号和信号的引脚,在总线周期的后一部分时间中改变了含义。因为有了锁存器对地址和进行锁存,所以在总线周期的后半部分,地址和数据同时出现在系统的地址总线和数据总线上;同样,此时也在锁存器输出端呈现有效电平,于是确保了CPU对存储器和I/O端口的正常读/写操作。8286/8287:当系统中所连的存储器和外设较多时,需要增加数据总线的驱动能力。④多了1片8288。作用:对CPU 发出的S0,S1,S2控制信号进行变换和组合,以得到对存储器和I/O端口的读/写信号和对锁存器8282及对总线收发器8286的控制信号。 5、8086/8088系统中为什么将数据与地址总线复用? 因为数据线与地址线传送时间不一样,在总线周期T1传送地址,其他时刻传送数据,传送数据和地址时间是分离的,所以8086/8088系统中能将数据线与地址线复用。 6、CPU从奇地址或偶地址读写一个字(或字节)时,和A0是什么电平?分别用几个总线周期? A0 操作总线周期 0 0 从偶地址开始读/写一个字1个 1 0 从偶地址单元或端口读/写一个字节1 个 0 1 从奇地址单元或端口读/写一个字节1个 1 1 0 从奇地址开始读/写一个字2个(在第一总线周期,将低8位数据送到AD15—AD8,在第二个总线周期,将高8位数据送到AD7—AD0) 7、CPU的READY和RESET信号有什么作用?

微机原理(第三版)课后练习答案

1 思考与练习题 一、选择题 1.计算机硬件中最核心的部件是( )。C A.运算器 B.主存储器 C.CPU D.输入/输出设备 2.微机的性能主要取决于( )。 A (B——计算机数据处理能力的一个重要指标) A.CPU B.主存储器 C.硬盘 D.显示器 3.计算机中带符号数的表示通常采用( )。C A.原码 B.反码 C.补码 D.BCD码 4.采用补码表示的8位二进制数真值范围是( )。C A.-127~+127 B.-1 27~+128 C.-128~+127 D.-128~+128 5.大写字母“B”的ASCII码是( )。B A.41H B.42H C.61H D.62H 6.某数在计算机中用压缩BCD码表示为10010011,其真值为( )。C A.10010011B B.93H C.93 D.147 二、填空题 1.微处理器是指_CPU_;微型计算机以_CPU_为核心,配置_内存和I/O接口_构成;其特点是_(1)功能强 (2)可靠性高 (3)价格低 (4)适应性强 (5)体积小 (6)维护方便_。P8 P5 2.主存容量是指_RAM和ROM总和_;它是衡量微型计算机_计算机数据处理_能力的一个重要指标;构成主存的器件通常采用_DRAM和PROM半导体器件_。P5 P9 3.系统总线是_CPU与其他部件之间传送数据、地址和控制信息_的公共通道;根据传送内容的不同可分成_数据、地址、控制_3种总线。P9 4.计算机中的数据可分为_数值型和非数值型_两类,前者的作用是_表示数值大小,进行算术运算等处理操作_;后者的作用是_表示字符编码,在计算机中描述某种特定的信息_。P12 5.机器数是指_数及其符号在机器中加以表示的数值化_;机器数的表示应考虑_机器数的范围、机器数的符号、机器数中小数点位置_3个因素。P15 P16 6.ASCII码可以表示_128_种字符,其中起控制作用的称为_功能码_;供书写程序和描述命令使用的称为_信息码_。P18 P19 三、判断题 1.计算机中带符号数采用补码表示的目的是为了简化机器数的运算。( )√ 2.计算机中数据的表示范围不受计算机字长的限制。( )× 3.计算机地址总线的宽度决定了内存容量的大小。( )√ 4.计算机键盘输入的各类符号在计算机内部均表示为ASCII码。( )× (键盘与计算机通信采用ASCII码) 2 思考与练习题 一、选择题 1.在EU中起数据加工与处理作用的功能部件是( )。A A.ALU B.数据暂存器 C.数据寄存器 D.EU控制电路 2.以下不属于BIU中的功能部件是( )。 B A.地址加法器 B.地址寄存器 C.段寄存器 D.指令队列缓冲器

微机原理试题及答案 (1)

学年第学期微机原理及应用(A)课程试卷 卷16 班级姓名得分任课教师 一、选择题:(每题分,共18分) 1、DMAC向CPU发出请求信号,CPU响应并交出总线控制权后将( 3)。 反复执行空操作,直到DMA操作结束 进入暂停状态, 直到DMA操作结束 进入保持状态, 直到DMA操作结束 进入等待状态, 直到DMA操作结束 2、有一个实时数据采集系统,要求10ms进行一次数据采集,然后进行数据 处理及显示输出,应采用的数据传送方式为( 3 )。 无条件传送方式查询方式 中断方式直接存储器存取方式 3、在数据传送过程中,数据由串行变并行,或由并行变串行的转换可通过 (3 )来实现。 计数器寄存器移位寄存器 D触发器 4、8088 CPU输入/输出指令可寻址外设端口的数量最大可达(4 )个。 128 256 16K 64K 5、CPU响应中断后,通过( 4)完成断点的保护。 执行开中断指令执行关中断指令 执行PUSH指令内部自动操作 6、并行接口芯片8255A具有双向数据传送功能的端口是(1 )。 PA口PB口 PC口控制口 7、8088CPU处理动作的最小时间单位是(2 )。 指令周期时钟周期机器周期总线周期8.堆栈是内存中(4 )。 先进先出的ROM区域后进先出的ROM区域 先进先出的RAM区域后进先出的RAM区域

9、计算机中广泛应用的RS-232C实质上是一种(3 )。 串行接口芯片串行通信规程(协议) 串行通信接口标准系统总线标准 5--1 10、高速缓冲存储器(CACHE)一般是由( 1 )芯片组成。 SRAM DRAM ROM EPROM 11、鼠标器是一种(3 )。 手持式的作图部件手持式的光学字符识别设备 手持式的座标定位部件手持式扫描器 12、传送速度单位“bps”的含义是( 2 )。 bytes per second bits per second baud per second billion bytes per second 二、填空题:(每空1分,共12分) 1、CPU在响应中断后,自动关中。为了能实现中断嵌套,在中断服务程序中, CPU必须在保护现场后,开放中断。 2、在计算机运行的过程中,有两股信息在流动,一股是数据,另 一股则是控制命令。 3、指令MOV BX,MASK[BP]是以 ss 作为段寄存器。 4、指令REPE CMPSB停止执行时,表示找到第一个不相等的字符 或 CX=0 。 5、设CF=0,(BX)= 7E15H,(CL)= 03H,执行指令 RCL BX,CL后, (BX) = ,(CF)=,(CL)=。0F0A9H 1 3 6、在8088 CPU中,一个总线周期是 CPU从存储器或I/O端口存取一个字 节的时间。 8253定时/计数器有 3 个独立的16位计数器,每个计数器都可按二进制或 bcd 来计数。 三、程序设计(共40分) 1.(10分)假设X和X+2单元与Y和Y+2单元中分别存放的是两个双

微机原理王忠民版课后答案

部分习题答案 (3) 0.1101 1B= 0.84375 = 0.D8H (4) 11110.01 B= 30.25 =1E.4H 3、完成下列二进制数的加减法运算 (1) 1001.11 + 100.01 = 1110.0001110101.0110 (4) 01011101.0110 — 101101.1011 = 101111.1011 4、 完成下列十六进制数的加减法运算 (1) 745CH + 56DFH= D14B H (2) ABF.8H — EF6.AH = 9C28.E H (3) 12AB.F7 + 3CD.05= 1678 .FC H (4) 6F01H — EFD8H= 7F29 H 5、 计算下列表达式的值 103.CEH (3) 18.9 + 1010.1101B + 12.6H — 1011.1001 = 36.525 6、选取字长n 为8位和16位两种情况,求下列十进制数的补码。 (1) X=— 33的补码: ⑵ Y=+ 33的补码: 0010 0001 , 0000 0000 0010 0001 ⑶ Z=— 128 的补码:1000 0000 , 1111 1111 1000 0000 ⑷ N=+ 127的补码: 0111 1111 , 0000 0000 0111 1111 A=— 65的补码: 1011 1111 , 1111 1111 1011 1111 ⑹ B=+ 65的补码: 0100 0001 , 0000 0000 0100 0001 ⑺ C=— 96的补码: 1010 0000 , 1111 1111 1010 0000 (8) D=+ 96的补码: 0110 0000 , 0000 0000 0110 0000 7、写出下列用补码表示的二进制数的真值 (1) [X 补=1000 0000 0000 0000 H X = — 1000 0000 0000 0000 H =— 32768 (2) [Y 补=0000 0001 0000 0001 H Y = + 0000 0001 0000 0001 H = + 257 (3) [Z 补=1111 1110 1010 0101 H Z= — 0000 0001 0101 1011 H =—347 (4) [A 补=0000 0010 0101 0111 H A= + 0000 0010 0101 0111 H =+ 599 8、设机器字长为8位,最高位为符号位,试对下列格式进行二进制补码运算,并判断结果是否溢出。 (1) 43 + 8 [43]补=00101011B , [8]补=00001000B [43]补+ [8]补=00101011B + 00001000B = 00110011B = 33H 00101011B + 00001000B 00110011B T C s = 0, C D = 0, OF= C S ? C D = 0 ? 0= 0 ??? 无溢出 (1) 43 + 8 33H (无溢出) 第二章 1、 将十进制数转换为二进制和十六进制 (1) 129.75 = 1000 0001.11B = 81.CH (3) 15.625 = 1111.101B = F.AH 2、 将下列二进制数转换为十进制和十六进制 (1) 111010 B= 58 =3A H 计算机中的数值和编码 (2) 218.8125 = 1101 1010.1101B = DA.DH ⑷ 47.15625 = 10 1111.0010 1B = 2F.28 H (2) 1011 1100.111B= 188.875 = BC.E H (2) — 52 + 7 D3 H (无溢出)

微机原理习题解答

第一章微型计算机的基础知识 1-1 将下列十进制数转换为二进制数、十六进制数。 (1)110 (2)1 039 (3)0.75 (4)0.156 25 1-2 将下列十进制数转换为BCD 码。 (1)129 (2)5 678 (3)0.984 (4)93.745 1-3 将下列二进制数转换为十进制数、十六进制数。 (1)10101010 (2)10000000 (3)11000011.01 (4)01111110 1-4 将下列十六进制数转换为二进制数、十进制数。 (1)8E6H (2)0A42H (3)7E.C5H (4) 0F19.1DH 1-5 将下列二进制数转换为BCD 码。 (1)1011011.101 (2)1010110.001 1-6 将下列BCD 码转换为二进制数。 (1)(0010 0111 0011) BCD (2)(1001 0111.0010 0101) BCD 1-7 完成下列二进制数的运算。 (1)1001.11+11.11 (2)1101.01-0110.11 (3)1000.011-1001.101 (4)1111+1101 1-8 完成下列十六进制数的运算。 (1)6AH+0A6H (2)0AB1FH+0EFCH (3)12ADH-1DEH (4)117H-0ABH 1-9 已知X=01H,Y=0FFH ,在下面的情况下比较两数的大小。 (1)无符号数 (2)符号数 (均为补码) 1-10 计算下列各表达式。 (1)101+‘A’+01101001B+0D5H+57Q (2)127.8125+10111101.101+375.63Q+1FC.8AH 1-11 写出下列字符串的ASCII 码。 (1)HELLO (2)A8=

相关文档
相关文档 最新文档