1、计算机(微机)组成原理试题集含答案 一、选择题 I、完整的计算机系统应包括运算器、存储器、控制器。 一个完整的计算系统应该是:硬件系统和软件系统,硬件系统应该包括运算器,控 制器,存储器,输入设备和输出设备,软件系统包括系统软件和应用软件.而你给的 答案中B和D是可以排除的,也就是不能选,A和C两个中A的可能性最大,答案 只能选A. 3、冯.诺依曼计算机工作方式的基本特点是按地址访问并顺序执行指令。 4、移码 表示法主要用于表示浮点数中的阶码。 5、动态RAM的刷新是以行为单位的。 8、在定点运算器中产生溢出的原因是运算的结果的超出了机器的表示范围。 10、在指令的地址字段中,
2、直接指出操作数本身的寻址方式,称为立即寻址。 II、目前的计算机,从原理上讲指令和数据都以二进制形式存放。 13、计算机问世至今,新型机器不断推陈出新,不管怎样更新,依然保有存 储程序”的概念,最早提出这种概念的是冯.诺依曼。 16、在CPU中,跟踪后继指令地址的寄存器是 程序计数器。 20、系统总线中地址总线的作用是用于选择指定的存储单元或外设。 21、计算机中的主机包含运算器、控制器、存储器。 23、原码一位乘运算,乘积的符号位由两个操作数的符号进行异或运算。 24、对于真值“0表示形式唯一的机器数是移码和补码。 25、若[X]补=0.01110 则[X]反=0.01110
3、 --x为正数 26、在CPU中,存放当前执行指令的寄存器是指令寄存器。 保存当前正在执行的指令的寄存器称为(指令寄存器)。 指示当前正在执行的指令地址的寄存器称为(程序计数器或指令计数器)。 27、下列编码中通常用作字符编码的是ASCII码。 ASCII ASCII(American Standard Code for Information Interc美ng信息互换标准 代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语和其他 西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646 28、在下列存储器中,半导体存储器可以作为主存储器。
4、 30、在CPU中跟踪指令后继地址的寄存器是PC。 31、EPROM是指光擦除可编程的只读存储器。 EPROM (Erasable Programmable Read-Only Memory可擦除可编程 ROM)芯片 可重复擦除和写入,解决了 PROM 芯片只能写入一次的弊端。EPROM 芯片有 一个很明显的特征,在其正面的陶瓷封装上,开有一个玻璃窗,透过该窗, 可以看到其内部的集成电路,紫外线透过该孔照射内部芯片就可以擦除其内的 数据,完成芯片擦除的操作要用到EPROM 擦除器°EPROM内资料的写入要用 专用的编程器,并且往芯片中写内容时必须要加一定的编程电压 (VPP=12 —24V
5、随不同的芯片型号而定)EPROM 的型号是以27开头的,如 27C020 (8*256K)是一片2M Bits容量的EPROM 芯片。EPROM 芯片在写入资料 后,还要以不透光的贴纸或胶布把窗封住,以免受到周围的紫外线照射而使 资料受损。EPROM芯片在空白状态时(用紫外光线擦除后),内部的每一个存 储单元的数据都为1 (高电平)。 33、CPU主要包括 控制器、运算器(不含主存)。 36、存储器是计算机系统的记忆设备,主要用于存放程序和数据。 37、在计算机中,普遍采用的字符编码是ASC II码。 39、设变址寄存器为X,形式地址为D, (X )表示寄存器X的内容,这种寻 址方式
6、的有效地址为EA=(X)+D。 41、微程序存放在控制存储器。 CPU内部有一个控制存储器,里面存放着各种程序指令对应的微程序段.当 CPU执行一句程序指令里,会从控制存储器里取一段与该程序指令对应的微 程序解释执行,从而完成该程序语句的功能. 45、存储单元是指存放一个机器字的所有存储元。 46、下列有关运算器的描述中,既做算术运算,又做逻辑运算是正确的。 指令周期 指令周期是执行一条指令所需要的时间,一般由若干个机器周期组成,是从取 指令、分析指令到执行完所需的全部时间。 CPU从内存取出一条指令并执行这条指令的时间总和。 指令不同,所需的机器周期数也不同。对于一些简单的的
7、单字节指令,在 取指令周期中,指令取出到指令寄存器后,立即译码执行,不再需要其它的机 器周期。对于一些比较复杂的指令,例如转移指令、乘法指令,则需要两个或 者两个以上的机器周期。 从指令的执行速度看,单字节和双字节指令一般为单机器周期和双机器周 期,三字节指令都是双机器周期,只有乘、除指令占用4个机器周期。 因此在进行编程时,在完成相同工作的情况下,选用占用机器周期少的 命令会提高程序的执行速率,尤其是在编写大型程序程序的时候,其效果更 加明显! 47、寄存器间接寻址方式中,操作数处在主存单元。 50、指令周期是指CPU从主存取出一条指令加上执行这条指令的时间 55、在定点二进制运
8、算器中,减法运算一般通过 补码运算的二进制加法器 来 实现。 举例说明: 减法5-3相当于加法5+(-3) 被加数5的二进制代码为 0101 加数-3的二进制代码为10 11 -3的二进制反码为1111 11 -3的二进制补码为1111 1101 即 5-3 相当于 5+(-3)= 0101+1111 1101= 10=2 其中最高位为0表示正数最高数为1表示负数,正数的补码为其本身, 负数的补码为取反加1 由此可见 减法相当于补码运算的二进制加法器 57、单地址指令中为了完成两个数的算术运算,除地址码指明的一个操作数外, 另一个数常需采用隐含寻址方式。 58、用于对某
9、个寄存器中操作数的寻址方式称为寄存器直接寻址。 59、运算器虽有许多部件组成,但核心部分是算术逻辑运算单元。 71、采用DMA方式传送数据时,每传送一个数据就要占用CPU 一个存储周 期的时间。 73、中断响应时,保存PC并更新PC的内容,主要是为了能进入中断处理程 字并能正确返回原程序。 79、在计算机硬件系统中,在指令的操作数字段中所表示的内存地址被称为形 式地址。 81、Cache是为提高存储系统的速度。 82、计算机中,执行部件根据控制部件的命令所作的不可再分的操作称为微命 令。 83、对组合逻辑的控制器,指令不同的执行步骤是用节拍发生器 给出的 85、指令的寻址方式有
10、顺序和跳跃两种方式,采用跳跃寻址方式,可以实现程 序的条件转移或无条件转移。 95、PROM是指可编程的只读存储器。 二、填空题 2、DMA方式中,周期窃取是指窃取一个存储周期。 3、计算机系统总线根据传送的信息不同,可分为 地址总线,控制总线,数据 总线。 5、指令格式通常由操作码字段和地址码字段组成。 6、动态半导体存储器的刷新一般有集中刷新、分散刷新、异步刷新三种方式, 之所以要刷新是因为动态存储器依靠电容电荷存储信息,时间一长,电荷可能 泄放。 10、主存和Cache的地址映射方法有很多,常用的有 全相联映射、直接相联映 射和组相联映射三种,其中灵活性最强的是全相联映射,
11、成本最高的是全 相联映射。 12、Cache中数据块常用的替换算法有先进先出(FIFO )和最近最少使用 (LRU)两种。 13、按照总线仲裁电路的位置不同,可分为集中式仲裁和 分布式仲裁。 14、寄存器直接寻址操作数在寄存器中;寄存器间接寻址操作数在主存中。 17、RISC的中文含义是精简指令集计算机,CISC的中文含义是复杂指令系 统计算机。 RISC ( reduced instruction set源叩精简指令集计算机) CISC ( Complex Instruction Set Comput复杂指令系统计算机) 18、计算机软件一般分为两大类:一类叫系统软件,另一类叫
12、应用软件,操 作系统属于系统软件类。 19、目前主流的CPU包括 运算器、控制器 和Cache. 20、主存储器容量通常以KB表示,其中K= 2的10次方;硬盘容量通常以68 表示,其中G= 2的30次方。 21、存储器和CPU连接时,要完成地址线的连接;数据线的连接和控制线 的连接,方能正常工作。 23、常见的集中式总线控制方式有链式查询、计数器定时查询和独立请求 三种,其中链式查询对电路故障最敏感。 25、存储器的技术指标有 存储容量和存取时间。 27、一个定点数由符号位和数值域两部分组成。 29、运算器的两个主要功能是:算术运算,逻辑运算。 30、完整的计算机系统包括硬件
13、软件;在计算机中用二进制的理由是便于 实现。 31、 直接内存访问(DMA )方式中,DMA控制器从CPU完全接管对总线的 控制,数据交换不经过CPU,而直接在内存和I/O设备 之间进行。 32、外围设备主要可以分为 输入设备和 输出设备。 外围设备 计算机系统中除主机外的其他设备。包括输入和输出设备、外存储器、模数转 换器、数模转换器、外围处理机等。是计算机与外界进行通信的工具。一例 如打印机、磁盘驱动器或键盘。 33、CPU能直接访问cache和 主存,但不能直接访问磁盘和光盘。 35、为了解决多个主设备同时竞争总线控制权,必须具有总线仲裁部件部 件。 36、在计算机系统中
14、多个系统部件之间信息传送的公共通路称为总线。就 其所传送信息的性质而言,在公共通路上传送的信息包括数据、地址、控制信 息。 37、指令操作码字段表征指令的操作特性与功能,而地址码字段指示参与操 作的操作数的地址。 38、CPU中,保存当前正在执行的指令的寄存器为指令寄存器IR,保存当前 正在执行的指令的地址的寄存器为程序计数器PC,保存CPU访存地址的寄存 器为内存地址寄存器mar。 39、DMA技术的出现使得 外围设备 可以通过DMA控制器 直接访问内存; 与此同时,CPU可以继续执行其它任务。 40、一个浮点数由尾数和阶码两部分组成。 微机组成原理练习试题带答案 第1章进制及
15、码元 1、进制转换 129=81H= 11B=201Q 2 9 8 =~72Ih= 11010101=452Q 10 0 0= 3E8H= 111110101=l750Q 5DH= 1011101 B= 135 Q= 93 D 3E 8 H= 11111010 B= 175前二 10 D; 357Q=11101111 B= 0EF H= 13 D 2、进制计算 110110 2FE3 F7, -119 FFF7, -32759 47 3、数据表示范围: 一个字节的无符号数表示范围为0〜255,有符号数补码表示范围为-128—+127。 两个字节的无符号数表示范围为痔55
16、35,有符号数补码表示范围为一32768 1+32767。 N位二进制数的无符号数表示范围为0〜(2n-1),有符号数(补码)表示范围为-2;〜 (2n-1-1). 4、35H代表的ASCII字符为'5',代表十六进制数时等价的十进制值为53 ,代表压缩8421BCD 码等价的十进制值为35 ,代表非压缩8421BCD码等价的十进制值为5O 5、FFH代表无符号数时等价的十进制值为255,代表补码有符号数时等价的十进制值为 1,代表反码有符号数时等价的十进制值为^一 0,代表原码有符号数时等价的十进制值 为一 127。 6、一20的8位二进制补码为 ECH,原码为94H,反码为 EB
17、H。 158的16位二进制补码为9EH,原码为9EH,反码为 9EH。 7、英文字符一般在计算机内占用(1)个字节,每个字节的最高位一定为_0_,全角英文字符 在计算机内占用工个字节,一个汉字在计算机内占用足 个字节,每个字节最高位为上。 8、设阶码用8位补码表示,尾数部分用16位补码表示,则一( 1/32+1/128+1/512 )的尾数 部分及阶码分别为多少? 1、请画出计算机系统硬件图。 第2章微机硬件基础 2、8086/88CPU为什么要分为BIU和EU两大模块? 答:为了使取指和分析、执行指令可并行处理,提高CPU的执行效率。8086/88CPU
18、有两大模 块总线接单元BIU和执行单元EU组成。 3、简述8086/88 CPU的两大模块BIU和EU的主要功能及组成。 答:如下图所示: L耳鹿,段器F质霸僧咕禁匏也址带戚、总或拍制 广 BH1 L *OE; EP,市今队舞.堆法暮.总域控制谚辑 脱号做靛!L CPU 4 「 功德;奇折指分、甄行指手.EA帷哝.数据哲,存、叫 搏一阳 虹EU T L 组也 m、EUFS翘避* aL「[官 Ht JPSW1 4、简述8086/88 CPU的14个寄存器的英文名、中文名及主要作用。 答:AX(Accumulator)(AH、AL)累加器,它是汇编编程中最常用的一个寄存器,主
19、要用于乘除 运算、BCD运算、换码、I/O操作、串操作、中断调用等。 BX(Base)(BH、BL)基址寄存器,主要用于存放地址、基址(默认相对于DS段)等。 CX(Counter)(CH、CL)计数器,主要用于循环计数、串操作计数、移位计数(CL)等。 DX(Data)(DH、DL)数据寄存器,主要用于16位乘除、问接I/O、中断调用等。 BP(Base Pointer)基址指针,主要用于存放地址、基址(默认相对于SS段)等。 SP(Stack Pointer)堆栈指针(栈顶指针),主要用于存放栈顶地址。 SI(Source Index)源变址寄存器,用于存放地址、变址、串操作源
20、变址。 DI(Destination Index)目的变址寄存器,用于存放地址、变址、串操作目的变址。 CS(Code Segment)代码段寄存器(代码段),用于存放正在或正待执行的程序段的起始地 址的高16位二进制数据,即程序段的段地址。 DS(Data Segment)数据段寄存器(数据段),用于存放正在或正待处理的一般数据段的起 始地址的高16位二进制数据,即一般数据段的段地址。 ES(Extra Segment)附加数据段寄存器(附加段),用于存放正在或正待处理的附加数据段 的起始地址的高l6位二进制数据,即附加数据段的段地址。 SS(Stack Segment)堆栈数据
21、段寄存器(堆栈段),用于存放正在或正待处理的堆栈数据段 的起始地址的高l6位二进制数据,即堆栈数据段的段地址。 IP(Instruction pointer)指令指针,它的内容始终是下一条待执行指令的起始偏移地 址,与CS 一起形成下一条待执行指令的起始物理地址°CS: IP的作用是控制程序的执行流 程。IP 一般会自动加l(逻辑加1、实际随指令长度变化)移向下一条指令实现顺序执行;若 通过指令修改CS或IP的值,则可实现程序的转移执行。 PSW(Program Status word程序状态字,它其中有三个控制标志(IF、DF、TF)和6个状 态标志(SF、PF、ZF、OF、CF、AF)
22、控制标志是用于控制CPU某方面操作的标志,状态标志 是部分指令执行结果的标志。 5、请画出8086/88 CPU的内部结构图。 答:如下图所示: 即:BIU 6、请说明8086/88 CPU的标志位的英文名、中文名及填充方法。 答:IF(InterruptEnableFlag)中断允许标志,用于控制CPU能否响应可屏蔽中断请求,IF=1 能够响应,IF=0不能响应。 DF (Direction Flag方向标志,用于指示串操作时源串的源变址和目的串的目的变址变 化方向,DF1向减的方向变化,DF= 0向加的方向变化。 TF(TrapFlag)陷阱标志(单步中断标志),T
23、F= 1程序执行当前指令后暂停,TF=0程序执行 当前指令后不会暂停。 SF(Sign Flag)符号标志,指令执行结果的最高二进制位是0还是l,为0,则SF=0,代 表正数;为l,则SF=1,代表负数。我们一般是用十六进制数表示,则可以根据十六进制的 最高位是落在O〜7还是落在8〜F之间,若落在0〜7之间则SF=0.否则SF=1。 PF(Parity ChECk Flag)奇偶校验标志,指令执行结果的低8位中1的个数是奇数个还是 偶数个,若为奇数个则PF=0,若为偶数个则PF=1。 ZF(Zero Flag)零标志,指令执行结果是不是为0,若为0则ZF=1,否则ZF=0。 OF(Ov
24、erflow Flag)有符号数的溢出标志,指令执行结果是否超出有符号数的表示范围, 若超过则0F=1,否则OF=0。我们可以通过判断是否出现以下四种情况之一:正加正得负,正 减负得负,负加负得正,负减正得正。若出现则0F=1.否则OF=0. CF(Carry Flag)进位/借位标志无符号数的溢出标志),指令执行结果的最高位是否有向 更高位进位或借位,若有则CF=1,同时也代表无符号数溢出;若无则CF=0,也代表无符号数 未溢出。 AF(Auxiliary Carry Flag)辅助进位/借位标志,低4位二进制是不是有向高位进位或 借位,若有则AF=1,否则AF=0,其主要用于BCD修正
25、运算。 7、内存分段组织的优缺点是什么? 答:优点如下: (1) 8086 / 8088 CPU中的寄存器只有16位,如果采用它们直接寻址,则寻址能力势必限 制在64 KB范围内,而采用分段组织可以较好地实现扩展CPU的寻址能力。每段的大小可达 64 KB,不同段的组合则可寻址更大的范围。 (2) 使程序与数据相对独立,不同存取方式的数据也相对独立。 程序:存放于代码段CS中 一堆栈方式:存放于堆栈段SS中 数据:随机方式:存放于数据段DS及附加段ES中 (3) 便于程序和数据的动态装配,从一个地方挪到另外一个地方只要更改一下段寄存器的 值即可,段内偏移可以不用改变。 缺点:
26、内存地址采用分段组织增加地址计算的复杂度,降低了 CPU的执行效率。 8、1MB内存最多可以有(64K)个不同的段地址,若不允许重叠的话最多可有(16)个不同 的段地址。不同的段间(可以)重叠。 9、设DS=26FCH , BX=108H , SI=9A8H ,试求出使DS: BX与ES: Sl指向同一物理地址的ES值。 答:即 DS: BX=ES: SI DS:BX=DSx l6+BX=26FCHx 16+108H=270C8H ES:SI=ESx16+SI=ESx16+9A8H ES=(270C8H 一 9A8H) : l6=2672H 10、接、端以及端地址之间的对应关系如
27、何? 答:一个计算机系统内有很多接,一个接内一般有多个端,一个端可以有多个端 地址与其对应(这叫重叠地址),一个端地址可以对应多个端(但需要继续区分才能访问, 如读写顺序、读写信号、数据位、索引区分)。所以通过端传输信息首先需要区分端,区 分端可通过端地址不同来区分。 11、访问端有哪些方法? 答:(1)用I/O指令实现信息传输;(2)通过BIOS中断调用实现信息传输;(3)通过DOS中 断调用实现信息传输。 12、请根据图2.3说明ADD AX, BX指令的取指及执行过程。 自己看书 13、8086/88的20位物理地址是怎样形成的?当CS=20H, IP=01H,下一条待执行指
28、令 的物理地址等于多少? 答:20位物理地址由段地址左移4位加偏移地址形成,下一条待执行指令等于CS*10H+IP得 到 201H。 14、已知当前数据段位于存储器的B10H到BF0FFH范围内,请指出DS段寄存器的取值范围。 答:DS段寄存器的取值范围:AF10H~B1H 第3章寻址方式及指令系统 1、指令是CPU可以理解并执行的操作命令,指令由操作码和操作数两部分组成,指令有两个 级别,即机器级和汇编级。 2、请画出程序执行流程示意图。 3、指令主要有哪些分类方式及其主要类别是什么? 答:指令分类有不同的方式。按操作数的个数将指令分为零地址指令(无操作数)、一地址指
29、 令(只有一个操作数)、二地址指令(有两个操作数)、多地址指令(多于两个操作数);按指令 级别分为机器指令和汇编指令:按是否转移分为转移指令和顺序指令;按功能分为七大类: 传送类、算术运算类、位操作类、I/O类、串操作类、CPU控制类、转移类;按指令长度(即 指令占用的字节数)分为l字节指令、2字节指令等,8086 / 8088指令长度是不同的,叫变字 长,不同的指令有不同的指令长度,从1〜6字节均有;按指令执行期间取操作数是否需要与 总线打交道分为内部指令(不需)和外部指令(需要),类似功能的指令内部指令比外部指令执 行速度快,所以在编程时尽量采用内部指令即多用寄存器优化程序。 4、操作数
30、的寻址方式有哪些?并举例说明其主要特点。 答:操作数寻址方式主要有立即寻址方式、寄存器寻地址、存储器寻址方式、端寻址方式 4类。 (1)立即寻址方式:操作对象是这个操作数本身,MOV AL,5 (2)寄存器寻地址:操作对象是寄存器中的内容MOV AX,BX (3 )存储器寻址方式:操作对象是内存地址所对应的存储单元中的内容,MOV AX [20H] (4)端寻址方式:操作数是指明端的地址、端地址所对应的端中的内容是操作对 象IN AX,46直接寻址。 5、内存寻址中段寄存器与段内偏移地址对应关系如何? 『 取指令码 无。 IP 取喉栈幕作,
31、 无, SP 字苻串操作源地址 CS, ES, SS-p 字待率撵作目苗地M 无3 BP用作摹址奇寿器时 踞 cs. OS,日gp 板据寻旺方丸求得甫效地址BA f薮棒存底 CS。ES, SS-p 依握寻址方式求徉有菽珞址EA 6、设 CS=10H, DS=20H, ES=30H, SS=40H, IP=1H, SP=2H, BX=3H, BP=4H, SI=5H,则①下一条待执行指令的物理地址为多少?②当前栈顶的物理地址为多少?③[BX] 代表的存储单元的物理地址为多少?④[BP]代表的存储单元的物理地址为多少?⑤ES: [BX+SI] 代表的
32、存储单元的物理地址为多少? 答:①下一条待执行指令的物理地址=CSx16+IP=10Hx16+IOOH=101H。 ② 当前栈顶的物理地址=SSx16+SP=40Hx 16+2H=402H。 ③ [BX]代表的存储单元物理地址=DSx16+BX=20H X l6+3H=203H。 ④ [BP]代表的存储单元物理地址=SS X 16+BP=40Hx 16+4H404H。 ⑤ ES: [BX+SI]代表的存储单元物理地址=ESx16+BX+SI=30Hx 16+3H+5H=308H 7、试根据以下要求,分别写出相应的汇编语言指令。 ⑴以寄存器BX和DI作为基址变址寻址方式把存储器中的一
33、个字送到DX寄存器。 答:MOV DX, [BX+DI] (2) 以寄存器BX和偏移量VALUE作为寄存器相对寻址方式把存储器中的一个字和AX相加,把 结果送回到那个字单元。 答:ADD VALUE[BX] , AX ⑶将1字节的立即数0B6H与以SI作为寄存器间接寻址方式的字节单元相比较。 答:CMP BYTE PTR[SI] , 0B6H ⑷将BH的高4位与低4位互换。 答:MOV CL, 4 ROR BH, CL ;或者 ROL BH, CL (5) 测试BX的第3、7、9、12、13位是否同时为0。 答:TEST BX, 3288H; 11101010B (6)
34、将存放了 0〜9数值的DL寄存器中的内容转化为相应的‘0’〜‘9’的字符。 答:ADD DL, 30H;或者 OR DL, 30H ⑺将存放了 ‘A’〜‘F’字符的AL寄存器中的内容转化为相应的数值。 答:SUB AL, 37H 8、写出清除AX寄存器的多种方法并比较(要求单指令实现)。 答: (1) AND AX, 0;可以对AX清零,还可以清除进位位和影响到SF、ZF、PF标志 位。 (2) MOV AX, 0;此条指令占用3个字节。 (3) SUB AX, AX ;减法指令,该条指令只占用2个字节。 (4) X0R AX, AX 9、分别用存储器的5种寻址方式实现将
35、以A为首址的第5个字(注意:从第0个算起)送 AX的指令序列。 10、指出下列指令错误的原因 。 答:(1)MOV CL,3; 3超过字节数据表示范围 (2)MOV CS,AX; CS不能作为目的操作数 (3)MOV BX,DL; 数据类型不匹配 (4)MOV ES,10H: 立即数不能送给段寄存器 (5)INC [BX] ;数据类型不明确 ’ (6)ADD AX,DS: 段寄存器不能参加运算 (7)TEST BX, [CX] ;存储器间接寻址只能使用BX、Sl、Dl、BP四个之一 (8)SUB [BX],[BP+SI] ;加减两个操作数不能同
36、时为存储操作数 ⑼JC [SI] ;条件转移只有短转移寻址方式 (10)SHL BX ;少给一个表明移位次数的操作数,1或CL 11、( 1 ) CS=(10)IP=(0155) (2) CS=(10)IP=(176F) (3) CS=(10)IP=(17C6) (4) CS=(20)IP=(0146) (5) CS=(10)IP=(1770) (6) CS=(20)IP=(0146) 12、分别说明下列各组指令中的两条指令的区别。 答:(1)MOV AX,TABLE LEA AX,TABLE 假设TABLE为字变量名,则:左为将TABLE单元的内容送AX,右
37、为将TABLE单元的偏移 地址送AX。 假设TABLE为字节变量名,则:左为错误指令,右为将TABLE单元的偏移地址送AX 假设TABLE为常量名,则:左为将TABLE的内容送AX,右为错误指令 (2) AND BL,0FHOR BL,0FH 左为将BL的高4位清0,右为将BL的低4位置1 (3) JMP SHORT LlJMP NEA RPTR Ll 左为短转移,2字节的指令,转移范围为一 128〜+127 右为近转移,1字节的指令,转移范围为--32 768+32 767 (4) M0V AX,BXMOV AX,[BX] 左为将BX的值送AX 右为将BX的值作为相对DS
38、段的内存单元偏移地址,取出字单元值送AX (5) SUB DX,CXCMP DX,CX 左为减法,并将DX-CX的值存ADX中 右为比较,做减法,但不会将DX-CX的值存ADX中 (6) MOV [BP][SI],CLMOV DS:[BPIESI],CL 左边第〜操作数默认为相对于SS段偏移的存储器操作数 右边第一操作数采用段超越,指定为相对于DS段偏移的存储器操作数 13、写出判断AL为正为负的程序段(请至少用三种方法)。 答:方法一:CMP AL,80H;而后用JAE代表负数转移,JB代表正数转移 方法二:CMP AL,H;而后用JGE代表正数转移,JL代表负数转移 方
39、法三:TEST AL, 80H;而后用JNZ代表负数转移,JZ代表正数转移 方法四:OR AL,AL ;而后用JNS代表负数转移,JS代表正数转移 方法五:AND AL,AL ;而后用JNS代表负数转移,JS代表正数转移 方法六:SUB AL,H;而后用JGE代表正数转移,JL代表负数转移 方法七:TEST AL,80H:而后用JNS代表正数转移,JS代表负数转移 14、思考题:试比较以下几条指令的功能。 答:MOV BX,SI ;将SI的值送给BX MOV BX,[SI] ;将SI的值作为偏移地址找到对应的内存单元中的值送给BX MOV BX,OFFSET[SI];将Sl的值
40、作为偏移地址找到对应内存单元的偏移地址送给BX, 即SI的值送给BX LEA BX,[SI];将Sl的值作为偏移地址找到对应内存单元的偏移地址送给BX, 即Sl的值送给BX LDS BX, [SI];将Sl值作为偏移地址找到对应内存单元中的第一个字值送给BX, 第二个字值送DS LES BX, [SI] :将SI值作为偏移地址找到对应内存单元中的第一个字值送绐BX, 第二个字值送ES 15、设B、D为字节变量,A、C为字变量,且A除B可能会溢出,试编写无符号数或有符号 数A/B商送C,余数送D。 答:可能会溢出则要考虑扩展数据表示能力。 ;无符号数除法 .;有符号数除法 MO
41、V AL,B MOV AL,B XOR AH, AH CBW MOV BX,AX MOV BX,AX MOV AX,A MOV AX,A XOR DX,DX ; 无符号扩展CWD;有符号扩展 DIV BX IDIV BX MOV C,AX MOV C,AX MOV D,DL MOV D,DL 16、编写程序段实现 DX、AX中32位二进制数*l0 (设不溢出)。 答:;X*10=X*8+X*2, SHL AX,1 用移位指令实现 RCL DX,1 MOV BX,DX :DX,AX= (DX,AX) *2 MOV BP, AX SHL AX,l
42、 ;BX,BP转存2倍值 RCL DX,l SHL AX,l ;再乘2 RCL DX,1 ADD AX,BP :再乘2 ADC DX,BX ;8倍+2倍=10倍 17、请编写程序段实现如图3.33所示功能。 MOV SI,BX LDS BX,[SI] 18、设已有定义 STR DB “Sdfikjwsmfw893040pYUIUKLHGUkjdshf8” N EQU $ - STR1 试编写实现在STR中查找是否存在非‘A’的功能程序段。即表示STR串中大部分是‘A’ 若其中存在不是‘A’的字符则查找成功,若STR全部为‘A’则不成功。 19、程序理解执行。
43、 (1)MOVAH,一l;AH=FFH MOVAL,180;AL=B4H MOVBL,15;BL=0FH IDIV BL; AX/BL 即: 程序段执行后,AX=0FFFBH。 说明:关键是要知道谁除以谁, -76/15,商-5,余数-1 特别注意是有符号除还是无符号除。 (2) MOV AL,0CH ;AL=0CH OR AL,AL ;AL=0CH,CF=0 SBB AL, 0F0H ;AL=lCH NEG AL ;AL=E4H, CF=1 ADC AL, 0D4H ;AL=B9H TEST AL, 35H ;AL=B9H, CF=0 程序段执
44、行后, CF= 0 , AL=B9H。 逐步进行即可完成。 (3) (4) MOV AL, 08H MOV AH,— l MOV BX, 0F8H CMP AX,BX 程序段执行后SF MOV AX,’ 中’ MOV BX,’AB’ ;AX=FF08H ;BX=F8H OF=1 , CF= 0 。 "T AX的二进制高位为1,即落在负数范围 ;BX的二进制高位为0,即落在正数范围 说明:第(1)、(2)小题只要理解每条指令功能及对标志位的影响, CMP AX, BX 程序段执行后SF OF=」,CF= 0。 说明:第(3)(4)小题实质是考查有符号数
45、和无符号数大小的比较。 MOV AX,’58’; AX=3538H AND AX, 0F0FH ; AX=0508H AAD; AX=58=3AH 程序段执行后AX= 3A H,即兰。 程序段的功能是:将两位非压缩BCD码转化为其对应的十六进制数。 说明:可用AAD指令实现将十位和个位数值拼装还原为0〜99的十六进制数。反之 将0〜99的数值分离成十位和个位可用AAM指令实现,教材《汇编语言、微机原理及接技 术(第2版)》例5. 10和例5. 13中均有应用。 20、程序语句填空。 (1) 下列是完成1〜20之间的奇数累加和存于AL中的程序段: XOR AL,AL MOV
46、CX,10;循环次数 MOV BL,1 AGAIN: ADD AL. BL ADD BL, 2;步长,参数改变 LOOP AGAIN (2) 下列是在串长为N的串STR中查找是否有‘M’字符的程序段: MOV DI, SEG STR MOV ES, DI LEA Dl, STR CLD MOV CX, N MOV AL, 7M7 REPNE SCASB;串查找核心指令 JZ FOUND ;转到找到分支 (3) 下列是完成1位十六进制数X显示的程序段: MOV DL, X AND DL, 0FH ADD DL, 30H ;或OR
47、DL, 30H CMP AL, ’9’ JBE NEXT ADD DL, 7 NEXT: MOV AH, 02H INT 21H (4) 将DH中的二进制数看成压缩BCD码并送出显示的程序段如下: MOV DL, DH MOV CL, 4 ;获取十位 SHR DL ,CL ADD DL, 30H MOV AH, 2 ;2号功能调用显示十位 INT 21H MOV DL, DH AND DL, 0FH ;获取个位 OR DL, 30H INT 21H
48、 21、图略 22、假定AX和BX中的内容为带符号数,CX和DX的内容为无符号数,请用比较指令和转移 指令实现以下条件转移: (1)若DX的内容超过CX的内容,则转到Ll。 答:CMP DX, CX JA Ll ⑵若BX的内容大于AX的内容,则转到L2。 答:CMP BX, AX JG L2 (3) 若。乂的内容未超过CX的内容,则转到L3。 答:CMP DX, CX JNA L3 (4) 判断BX与AX相比较是否产生溢出,若溢出则转到L4。 答:CMP BX,AX JO L4 (5) 若8乂的内容小于等于AX的内容,则转到L5。 答:CMP BX,AX JL
49、E L5 (6) 若。乂的内容小于等于CX的内容,则转到L6。 答:CMP DX,CX JBE L6 23、假设BX=0A69H,VALUE变量中存放的内容为1927H,写出下列各条指令执行后的BX的寄 存器中和CF、ZF、SF与OF的值: (1) XOR BX,VALUE (2) AND BX,VALUE (3) OR BX,VALUE (4) SUB BX,VALUE (5) CMP BX,VALUE (6) TEST BX,VALUE 答: BX CF ZF SF OF (1) 134EH (2) 0821H (3) 186FH (4)
50、 Fl42H 1010 (5) 0A69H1010 (6) 0A69H 第4章MASM汇编语言 1、名词解释 指令伪指令宏指令汇编语句汇编语言汇编源程序汇编程序汇编连接程序 连接 答:指令:是CPU可以理解并执行的操作命令。 伪指令:是用于为汇编程序编译时理解程序框架、分配空间(数据定义)等的汇编语句。 宏指令:实质上就是有多条指令打包而成的一组指令的集合。 汇编指令:一行只能写一条汇编语句,一条汇编只能写在一行内。 汇编语言:语句中的表达式是在汇编过程中完成计算的,即翻译之后的机器语言程序中 是不包含表达式的。 汇编源程序:主要有四步,录入源程序、汇编、连接、运行






