




已阅读5页,还剩34页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机原理及应用 习 题 集 (含 答 案) 中原工学院 电子信息学院 微机原理课程组 2006 年 12 月 习题一 冯诺依曼计算机由哪几个部分组成?各部分的功能是什么? 答:答:冯诺依曼在 1946 年提出了“存储程序”的计算机设计方案,计算机由运算器、 控制器、存储器、输入设备和输出设备几个部分组成。 输入设备用来向计算机输入程序和原始数据; 输出设备用来输出计算机的处理结果及程 序;存储器用来存放程序和数据;运算器是对数据进行运算的部件,其主要功能是对二进制 数据进行算术运算(加、减、乘、除)和逻辑运算(与、或、非、移位) ,故又称为算术逻 辑单元;控制器是整个计算机的控制中心,其功能是控制计算机各个部件自动协调工作。 计算机的发展经历了哪几个时代?计算机有哪些方面的应用? 答:答:第一代 (1946 年1958 年):电子管计算机;第二代 (1959 年1964 年):晶体管 计算机;第三代 (1965 年1970 年):集成电路(IC)计算机;第四代 (1971 年以后):大 规模/超大规模集成电路(LSIC/VLSIC)计算机。 计算机应用主要有:1.科学计算;2.数据处理;3.实时控制;4.计算机辅助系统;5. 人工智能;6.远程教育;7.电子商务等。 微型计算机系统主要由哪些部分组成?各部分的主要功能是什么? 答:答:微型计算机系统主要由: 微处理器、主存储器、输入/输出接口、输入/输出设备、 系统总线等部分组成。 各部分的主要功能是:1.微处理器:它是微型计算机的核心部件,由运算器、控制器、 寄存器等组成其主要功能是通过对指令的译码, 产生微操作以控制计算机各个部件自动协调 工作。2.主存储器:是微型计算机的重要组成部分之一,用于存储指令和数据。3.输入/输 出接口:简称 I/O 接口,是微机与 I/O 设备进行信息传递的桥梁,即微机通过 I/O 接口与输 入/输出设备进行信息交换。4.输入/输出设备:简称为 I/O 设备,人们通过 I/O 设备与微机 进行信息交流。5.系统总线(system bus) :是用来连接微处理器与其他部件的一束信号线, 通过系统总线架起了微处理器与其他部件之间进行信息传递的通道。 什么是微型计算机的系统总线?简要说明微处理器三总线的作用。 答:答:系统总线是用来连接微处理器与其他部件的一束信号线,根据所传递的信息不同, 可以将系统总线分为:地址总线(AB),用于传送存储器或 I/O 接口的地址;数据总线(DB) , 用于微处理器与其他部件的信息传递;控制总线(CB) ,用于传送各类控制信号,使外设和 其它的部件在微处理器的控制下完成控制操作。 解释下面术语的含义。 (1) 微处理器、微型计算机、微型计算机系统 答:答:微处理器:它是微型计算机的核心部件,由运算器、控制器、寄存器等组成; 微型计算机:体积小、重量轻,采用超大规模集成电路 VLSIC,器件数量少,便于携 带(笔记本) ,规模化生产、产量大、价格低廉、普及面大,结构配置灵活、可靠性高; 微型计算机系统:由微型计算机构成的计算机系统。 (2)字节、字、字长 答:答:字节:是计算机中比较通用的基本单位,一个字节由 8 位二进制数位组成。 字:是计算机内部处理数据的基本单位。 字长:是是指机器一次所能处理的数据位数。 (3)主存、内存、高速缓冲存储器 答:答:主存:是微型计算机的重要组成部分之一,按读写性能可以分为随机存储器(简 RAM)和只读存储器(简称 ROM) 。 内存:通常说内存容量,指的是随机存储器,并不包括只读存储器。 高速缓冲存储器:在慢速的 DRAM 和快速 CPU 之间插入一速度较快、容量较小的 SRAM,起到缓冲作用,使 CPU 可以以较快速度存取 SRAM 中的数据。 (4)RAM、ROM 答:答:RAM:随机存储器;ROM;只读存储器。 (5)硬件、软件 答:答:硬件:组成计算机的物理实体;软件:操作计算机运行的程序。 习题二 数制转换 (1)12=( 11001100 )B=( 0C0C )H (2) (0F89)H=(1 11111000100111110001001)B=( 39773977 )D (3) (67.75)D=( 1000011.111000011.11 )B=( 43.B43.B )H (4) 96.25 =( 1100000.011100000.01 )B=( 60.4 60.4 )H (5) 10111011B =( 187187 )D=( 0BB0BB )H (6)(0001 1000 0010.0101) B = ( 386.3125386.3125 )D =( 182.5182.5 )H 写出下列二进制数的原码、反码和补码。 (1)+1111000B XX原原01111000 X01111000 X反反00000111 X00000111 X补补01111000 01111000 (2)-1000000B XX原原11000000 X11000000 X反反10111111 X10111111 X补补11000000 11000000 (3)-0000001B XX原原10000001 X10000001 X反反11111110 X11111110 X补补11111111 11111111 (4)-0101100B XX原原10101100 X10101100 X反反11010011 X11010011 X补补1101010011010100 求下列数的补码 (用一个字节表示) ,如果用一个字表示结果如何? (1) -9 XX补补11110111(字节) X11110111(字节) X补补1111111111110111(字)1111111111110111(字) (2) 23 XX补补00010111(字节) X00010111(字节) X补补0000000000010111(字)0000000000010111(字) (3)-65 XX补补10111111(字节) X10111111(字节) X补补1111111110111111(字1111111110111111(字) (4)-128 XX补补10000000(字节) X10000000(字节) X补补1111111110000000(字)1111111110000000(字) 已知X补 ,求 X 的真值。 (1)X补01111111B X127X127 (2)X补10000001B X127X127 (3)X补10000000B X128X128 (4)X补01111000B X120X120 试将二进制数 10000100B 和 00001110B 相加,试说明不管把这两个数看作是无符 号数还是有符号数,结果都正确(看作有符号数时采用补码表示) 。 00001110B 10010010B 10000100B 答:当作为无符号数相加时和为 146,小于 255 结果正确, 当作为有符号数,正数和负数相加,结果不会溢出。 将有符号数 10000100B 和 11100110B 相加,判断结果是否溢出,为什么? 答:用进位位法判别溢出:CY1,CD0,OFCYCD1, 产生溢出。因为两负数相加,其和大于128,超出了表示的范围。 10000100B 11100110B 101101010B 数值型数据,在加减运算中为什么采用补码表示? 答:对数值型数据,有正数也有负数,采用补码表示时,可以将符号和数值位一起进行 编码,并可将减运算转化成加运算。 完成下列 8421 BCD 码与其它数制/码制的转换。 (1) (1001 0011)BCD= ( 93 )D =( 01011101 ) B 错了,应为43.C (2)(1000 0010.0101)BCD = ( 82.5 )D =( 01010010.1 ) B (3)(0011 0111 0110.0111)BCD = ( 376.7 )D =( 101111000.1011001 ) B (4) (11010001)B=( 0010 0000 1001 )BCD (5)(0001 1000 0010.0101) B = ( 0011 1000 0110.0011 0001 0010 0101 )BCD (6) (58.5)D= = ( 111010.1 ) B = ( 0101 1000.0101 )BCD 计算下列 BCD 码的和,并按规则进行十进制调整。 (1)9887 (2)4868 (3)5984 (4)456989 10011000 10000111 100011111 01100110 000110000101BCD 01001000 01101000 10110000 01100110 000100010110BCD 答:(1)9887185 个位相加和大于 9,加 6 调整, 十位相加和产生进位,加 60H 调整 结果为:185 答: (2)4868116 个位相加产生进位加 6 调整 十位相加和大于 9 加 60H 调整 结果为:116 10000100 11011101 01100110 000101000011BCD 01011001 答: (3)5984143 个位相加和大于 9,加 6 调整 十位相加和大于 9,加 60H 调整 结果为:143 100110001001 110111011111 011001100110 0001010001000101BCD 010001010110 答(4) : 4569891445 个位、十位、百位相加和均大于 9 个位、十位、百位均加加 6 调整 结果为:1445 10A Z、a z、0 9 的 ASCII 码分别是什么?空格、回车、换行、$、?、+、 -的 ASCII 码是什么? 答:ASCII 码用 16 进制表示 A Z 的 ASCII 码为:41H5AH; a z 的 ASCII 码为:61H7AH; 0 9 的 ASCII 码为:30H39H; 空格的 ASCII 码为:20H; 回车的 ASCII 码为:0DH; 换行的 ASCII 码为:0AH; “$”的 ASCII 码为:24H; “?”的 ASCII 码为:3FH; “”的 ASCII 码为:2BH; “”的 ASCII 码为:2DH。 11什么是组合的 BCD 码?什么是非组合的 BCD 码? 答:组合的 BCD 码是用一个字节表示 2 位 BCD 码; 非组合的 BCD 码一个字节仅在低四位表示 1 位 BCD 码。 12简述汉字的编码规则。 答:GB2312 国标字符集呈二维表,分成 94 行94 列,行号称为区号,列号称为位号。 每一个汉字或符号在码表中都有各自一个惟一的位置编码, 该编码就是字符所在的区号 (行 号)及位号(列号)的二进制代码(7 位区号在左、7 位位号在右,共 14 位) ,也称为汉字 的区位码。因此,字符集中的任何一个图形、符号及汉字都用唯一的区位码表示。 为了不影响已经约定好的数据通信规程, 将区位码的区号和位号都加 32 (即 100000) , 变换成对应的国标码。 习题三 18086CPU 由哪两部分组成?他们的主要功能各是什么?8086CPU 与 8088CPU 的主 要区别是什么? 答:由指令部件 EU 和总线接口部件 BIU 组成。 EU 功能:EU 只负责执行指令。其中的算术逻辑单元(ALU)完成 16 位或 8 位的二进 制运算,运算结果可通过内部总线送到通用寄存器组或 BIU 的内部寄存器中等待写入存储 器。16 位暂存器用来暂存参加运算的操作数。经 ALU 运算后的结果特征送入标志寄存器 FR 中保存;EU 中的控制器负责从 BIU 的指令队列中取指令,并对指令进行译码,根据指 令要求向 EU 内部各部件发出控制命令以完成各条指令的功能。 BIU 功能:总线接口单元 BIU 负责与存储器或 I/O 端口打交道,正常情况下,BIU 通 过地址加法器形成指令所在存储器中的物理地址后, 启动存储器, 从给定地址的存储器中取 出指令代码送指令队列中等待执行,一旦指令队列中空出 2 个字节,BIU 将自动进人读指令 操作以填满指令队列。 只要收到 EU 送来的操作数地址, BIU 将立即形成操作数的物理地址, 完成读/写操作数或运算结果的功能。 答:8086CPU 与 8088CPU 的主要区别: 8088 BIU 中指令队列长度仅有 4 个字节; 8088 BIU 通过总线控制电路与外部交换数据的总线宽度是 8 位,总线控制电路与专 用寄存器组之间的数据总线宽度也是 8 位, 而 EU 内部总线仍是 16 位, 所以把 8088 CPU 称 之为准 16 位微处理器。 28086 内部的并行操作体现在哪里? 答:EU 执行指令时,不必访问存储器去取指令,而是直接从指令队列中取得指令代码, 并分析执行它。BIU 通过地址加法器形成指令所在存储器中的物理地址后,启动存储器,从 给定地址的存储器中取出指令代码送入指令队列中等待执行。这两个过程是并行进行的。 38086CPU 中有哪些寄存器?各有什么用途? 答: 通用寄存器组:4 个 16 位通用寄存器,AX、BX、CX、DX,称作通用数据寄 存器。可用来存放 16 位的数据或地址,另有隐含的专门用法;2 个指针寄存器:SP 和 BP。 它们均用来存放段内偏移地址;2 个变址寄存器:SI 和 DI。这两个寄存器常用在字符串操 作中,并分别用来存放源操作数的段内偏移量和目标操作数的段内偏移量。 段寄存器组: CS:代码段寄存器,存放代码段的基地址,要执行的指令代码均存放在代码段中; DS:数据段寄存器,存放数据段的基地址,指令中所需操作数常存放于数据段中; SS:堆栈段寄存器,存放堆栈段的基地址,堆栈操作所需的数据存放于堆栈段中; ES:附加段寄存器,存放附加段的基地址,附加段也是用来存放存储器操作数的。 标志寄存器 FR: 表示运算的特征或控制 CPU 的操作。 指令指针寄存器 IP: 用来存放将要执行的下一条指令代码在代码段中的偏移地址,在程序运行过程中,BIU 可修改 IP 中的内容,使它始终指向将要执行的下一条指令 4标志寄存器 FR 中有哪些标志位?它们的含义和作用是什么? 答:标志寄存器 FR 进位标志位 CF:运算结果最高位若产生进位或借位,该标志置 1,否则置 0。 奇偶标志位 PF:运算结果中 1 的个数为偶数,该标志置 1,否则置 0。 辅助进位标志位 AF:加法/减运算中,若第 3 位有进/借位,AF1,否则 AF1。 零标志位 ZF:运算指令执行之后,若结果为 0,则 ZF1,否则 ZF=0。 符号标志位 SF:它和运算结果的最高位相同。有符号运算时最高位表示符号,SF 1 为负,SF0 为正。 溢出标志 OF:若本次运算结果有溢出,则 OF=1,否则 OF=1。 中断标志位 IF:该标志用于控制可屏蔽的硬件中断。IF = 0,可接受中断;IF = 0 中 断被屏蔽,不能接受中断。该标志可用指令置 1 或置 0(复位) 。 方向标志位 DF:该标志位用于指定字符串处理指令的步进方向。当 DF = 1 时,字 符串处理指令以递减方式由高地址向低地址方向进行;当 DF = 0 时,字符串处理指令以递 增方式,由低地址向高地址方向进行。该标志可用指令置位或清零。 单步标志位 TF:TF = 1,表示控制 CPU 进人单步工作方式,此时,CPU 每执行完 一条指令就自动产生一次内部中断。单步中断用于程序调试过程中。 5为达到下述目的,各应判定哪个标志位并说明其状态。 (1)两数相减后比较大小; 答:无符号数 AB,判 CF。AB 时 CF0;AB 时 CF1。 有符号数 AB,判 SF 和 OF。AB 时SFOF0;AB 时:SFOF1。 (2)比较两数是否相等; 答:判 ZF。当 AB 时,ZF1。 (3)两数运算后是正数还是负数? 答:对有符号数,判 SF。当 SF1 时,结果为负数;当 SF0 时,结果为正数。 (4)两数相加后是否产生溢出? 答:对有符号数,判 OF。当 OF1 时,结果产生溢出;当 OF0,结果无溢出。 6什么是逻辑地址?它由哪两部分组成? 答:在 8086 系统中,16 位的地址称为逻辑地址。包括了段内“偏移地址”和“段基址” 。 78086 系统的存储器的逻辑地址和物理地址之间有什么关系? 答:物理地址为 20 位,是由“段基址”和“偏移地址”组成,其关系为: 物理地址段基址16偏移地址 8 “最小模式”和“最大模式”系统的主要区别是什么?各有什么主要特点? 答:最小模式是指单机系统,即系统中只有 8086/8088 一个微处理器。在这种系统中, 8086/8088CPU 直接产生所有的总统控制信号。 最大模式系统中包含有两个或多个处理器,可构成多机系统,其中一个为主处理器 8086/8088 CPU。其它处理器称为协处理器,它们是协助主处理器进行工作的。在最大模式 系统中,系统所需控制信号由总线控制器 8288 提供。 两种模式的最主要区别体现在 8086 CPU 的部分管脚(2431 引脚)具有不同的功能。 98086 系统中存储器为什么要分段?各逻辑段之间的关系如何? 答:80868088 系统中,可寻址的存储器空间达 1M 字节,要对整个存储器空间寻址, 需要 20 位长的地址码, 而 CPU 内部可以提供地址的寄存器及算术逻辑运算单元都是 16 位, 其寻址范围为 64K 字节(16 位地址) 。因此在 80868088 系统中,把整个存储空间分成许 多逻辑段,这些逻辑段容量不能超过 64K 字节。对任何一个存储单元,只要能得到它所在 段的首地址和段内的相对地址(16 位) ,就可对它进行访问。 逻辑段的首地址可在整个存储空间内进行设置, 各个逻辑段之间可以紧密相连, 也可以 相互重叠(完全重叠或部分重叠) 。 10在 8086CPU 中堆栈操作是字操作还是字节操作?已知 SS=1050H,SP=0006H, AX=1234。若执行对 AX 的压栈操作后,则 AX 中的数据存放在何处?SP 为什么值? 答:堆栈操作是字操作。 对 AX 压栈后,AX 中的数据在 10504H,10505H 单元中,其中(10504H)34H, (10505H)12H,SP0004H。 11已知当前数据段位于存储器的 A1000H 到 B0FFFH 范围内,DS 段寄存器的内容是 多少? 答:DSA100H,为数据段的“段基址” 。 12若 CS=234EH 时,已知某一存储单元的物理地址为 25432H。问若 CS 的内容被指 定成 1A31H 时,该存储单元的物理地址应为什么? 答:因为存储单元的物理地址是唯一的,当 CS 内容改变后,并不影响该存储单元的物 理地址,故仍为:25432H。 13在 8086 系统中为什么用地址锁存器? 答: 因 8086CPU 的引脚采用了分时复用的地址/数据和地址/状态总线, 为保证形成稳定 的系统地址总线,故需采用地址锁存器以产生系统地址总线。 148086 CPU 读/写总线周期各包含多少个时钟周期?什么情况下需要插入 TW等待周 期?应插入多少个 TW,取决于什么因素?什么情况下会出现空闲状态 TI ? 答:读写总线周期最少各包含了四个时钟周期,如果配合工作的存储器或 I/O 端口由于 本身速度或其它原因来不及在 T3时钟周期送出所需信息,则插入 TW。否则不需插入等待周 期 TW。在 T3周期结束后可立即进入 T4周期; 当检测到 READY 引脚为低电平,则在 T3周期结后不进入 T4周期,而应插入一个 TW 周期。以后在每一个 TW周期的上升沿都 5CE5AH 34H 5CE5BH 12H 5DC45H 6BH 5DC46H 5AH 要检测 READY 引脚电平,只有检则到 READY 为高电平时,才在这个 TW周期 后进入 T4周期。 当 BIU 不访问存储器和外设时,总 线时序出现空闲状态 TI 15.某程序数据段中存有两个数据字 1234H 和 5A6BH,若已知 DS=5AA0H,它们 的偏移地址分别为 245AH 和 3245H,试画 出它们在储存器中的存放情况。 答:它们在储存器中的存放情况见图: 1680286 CPU 的结构中比 8086 CPU 增加的部分有哪些?其主要用途是什么? 答:8086CPU 内部有 BIU 和 EU 两个独立部件并行工作,而 80286 CPU 内部有 4 个部 件 BU(总线单元) 、IU(指令单元) 、EU(执行单元)和 AU(地址单元)并行工作,提高 了吞吐量,加快了处理速度。其中 IU 是增加的部分,该单元取出 BU 的预取代码队列中的 指令进行译码并放入已被译码的指令队列中,这就加快了指令的执行过程。 习题四习题四 18086 语言指令的寻址方式有哪几类?用哪一种寻址方式的指令执行速度最快? 答:数据操作数的寻址方式有七种,分别为:立即寻址,寄存器寻址,直接寻址,寄存器间 接寻址,寄存器相对基址变址和相对基址变址寻址。其中寄存器寻址的指令执行速度最快。 2若 DS6000H,SS5000H,ES4000H,SI0100H,BX0300H,BP0400H,D 1200H,数据段中变量名 NUM 的偏移地址为 0050H,试指出下列源操作数的寻址方式和物理地 址是多少? (1)MOV AX, 64H 答:寻址方式为直接寻址;PA60064H (2)MOV AX,NUM 答:寻址方式为直接寻址; PA60005H (3)MOV AX, SI 答:寻址方式为寄存器间接寻址;PA60100H (4)MOV AX, BX 答:寻址方式为寄存器间接寻址;PA60300H (5)MOV AX, BP 答:寻址方式为寄存器间接寻址;PA50400H (6)MOV AL, DI 答:寻址方式为寄存器间接寻址;PA61200H (7)MOV AL, BX1110H 答:寻址方式为寄存器相对寻址;PA61410H (8)MOV AX,NUMBX 答:寻址方式为寄存器相对寻址;PA60305H (9)MOV AX, BXSI 答:寻址方式为基址变址寻址;PA60400H (10)MOV AX,NUMBX DI 答:寻址方式为相对基址变址寻址;PA=61505H 3设 BX637DH,SI2A9BH,位移量为 C237H,试确定由这些寄存器和下列寻址方式产 生的有效地址。 (1)直接寻址 答:有效地址为 EAC237H (2)用 BX 的寄存器间接寻址 答:有效地址为 EA637DH (3)用 BX 的相对寄存器间接寻址 答:有效地址为 EA125B4H (4)基址加变址寻址 答:有效地址为 EA8E18H (5)相对基址变址寻址 答:有效地址为 EA1504FH 其中, (3)和(5)中产生进位,要把最高位 1 舍去。 4指出下列指令是否正确,若不正确情说明原因。 (1) MOV DS, 2010H ;立即数不能传送到 DS (2) PUSH AL ;栈操作,操作数类型必须为 WORD 类型 (3) MOV DX,SP ;SP 寄存器不能做间址寄存器 (4) IN AL,0A00H ;I/O 指令的直接寻址,地址只能为 8 位 (5) XCHG CL,CH ;正确 (6) SHR AX,3 ;移位超过一位时,应采用 CL 寄存器间址 (7) AAA CX ;非组合的 BCD 码加法调整 AAA 指令应为隐含操作数 (8) ADD BP+DI ;加法指令 ADD,缺少源操作数 (9) OUT DX,CL ;I/O 指令操作数只能用 AX、AL 提供,端口地址可以是 8 位的 直接地址或用 DX 间址 (10)CBW BH ;符号扩展指令为隐含操作数 (11)ADD 03ECH ;加法指令应为双操作数指令,立即数不能做目的操作数 (12)MOV BX, SI+DI ;源操作数形式错误,SI 和 DI 不能同时做为间址寄存器 (13)MOV DI, AX ;AX 不能做为间址寄存器 (14)OUT 258H, BX ;I/O 指令格式错误,见(9)题的解释 (15)SHL AX, 3 ;移位指令,位移位数大于 1 时,应用 CL 来指明 (16)MOV 64H,AL ;立即数不能做为目的操作数 (17)ADD AL,6600H ;源、目的操作数的类型不一致 (18)MOVBX , SI ;传送指令中,两个操作数不能同时为存储器操作数 (19)XCHG AX,8800H ;交换指令的操作数不能使用立即数 (20)MOV AX, BXDX ;传送指令的源操作数,不能使用立即数 (21)LEA BX,1000H ;有效地址传送指令的源操作数不能为立即数,必须是存储器操作数 (22)DIV 0010H ;正确 (23)LEA DX,DI ;同(21)题,源操作数不能为寄存器操作数 (24)MUL AX,200H ;乘法指令的目的操作数是隐含的,不能出现在指令中 (25)MOV AX, BX+BP ;传送指令中源操作数格式错,BX 和 BP 不能同时为间址寄存器 (26)CMP BX, SI ;比较指令的两个操作数不能同时为存储器操作数 (27)OUT DX, BX ;I/O 指令中,源操作数只能使用 AL 或 AX 寄存器 (28)AND OFH,AL ; “与”指令中,目的操作数不能使用立即数 (29)SAL BX,CX ;移位指令,移位位移不能用 CX 寄存器指明 (30)JMP FAR BX+SI ;转移指令中转移的目标地址表达方式错误 ;如果是段内间接转移,应为:JMP WORD PTRBX+SI ;如果是段间间接转移,应为:JMP DWORD PTRBX+SI (31)JNZ AAA;不相等转移指令中,符号地址(标识符)不能使用系统中的保留字 (32)JMP NEXT ;正确 (33)SBC AX, DX ;指令助记符错,源操作数表示方式错 (34)MOV CS,DS ;段寄存器之间不能传送数据,CS 寄存器也不能做为目的操作数 (35)ADD DS, AX ;加法指令中段寄存器不能做为操作数 (36)MOV AL,CX ;源、目的操作数的类型不一致,见(17)题 (37)INC BX ;没有指定存储器操作数类型 (38)MOV CL,A8H ;源操作数为 16 进制的立即数,16 进制数以字母开头时应在前面加“0” (39)MOV ES,DS ;错同(34)题 (40)IN AL,BX ;I/O 指令端口地址表示错误,只能用 8 位立即数或 DX 间址 5设一个字节数据 X 存放 AL 寄存器中,试说明下列程序的功能: XOR AH,AH ;AH 清零 SAL AX,1 ;AX 左移一位,相当于 2X MOV BX,AX ;2X 送 BX 暂存 MOV CL,2 SAL AX,CL ;AX 左移二位,2X4=8X ADD AX,BX ;2X+8X=10X 该段程序实现了字节数据 X 乘 10,结果在 AX 中。 6试编程实现: (1)AL 寄存器的低 4 位清 0 (2)BL 寄存器的低 4 位置 1 (3)CL 寄存器的低 4 位取反 (4)测试 DL 寄存器的最低 2 位是否同时为 0,若是,将 0 送入 BL 寄存器;否则将 1 送 入 BL 寄存器。 答:程序段如下 ; AL 寄存器的低 4 位清 0 ; BL 寄存器的低 4 位置 1 ; CL 寄存器的低 4 位取反 ; 测试 DL 寄存器 AND AL,0F0H OR BL,0FH XOR CL,0FH TEST DL,03H JZ NEXT MOV BL,1 JMP NEXT1 NEXT:MOV BL,0 NEXT1:HLT 7若有两个 4 字节的无符号数相加,这两个数分别存放在 2000H 和 3000H 开始的存储单元 中,得到的和存放在 2000H 开始的内存单元。试编程完成。 答:程序段如下 MOV AX,3000H ADD 2000H,AX MOV AX,3002H ADC 2002H,AX 8设从 2000H 为首址的内存中,存放着 10 个带符号的字节数据,试编程完成:找出其中最 大的数,并存入 2000H 单元。 答:程序段如下 MOV BX,2000H MOV CX,9 MOV AL,BX N2:INC BX CMP AL,BX JGE N1 MOV AL,BX N1:LOOP N2 MOV 2000H,AL HLT 9用寄存器间接寻址方式时,BX、BP、SI、DI 分别针对什么情况来使用?用这 4 个寄存器 分别组合间接寻址时,物理地址是怎样计算的?举例说明。 答:BX、SI、DI 用于在数据段寻址,BP 用于在堆栈段寻址。 在数据段物理地址为:PADS10HBX/SI/DI 或者为:PADS10HBXSI 或(BXDI) 在堆栈段物理地址为:PASS10HBP 或者为:PASS10HBPSI 或(BPDI) 举例如下: MOV AX,BXSI ;在数据段寻址,PADS10HBXSI MOV AX,BPDI ;在堆栈段寻址,PASS10HBPDI 10 已知: DS2000H, BX0300H, SI0002H,(20300H) 12H,(20301) 34H,(20302H) 56H, (20303H)78H, (21400H)2AH, (21401H)4CH, (21402H)B7H, (21403H) 65H 试说明下列各条指令执行完后 AX 寄存器的内容。 (1)MOV AX,1400H ;答:执行完该条指令后 AX1400H ;答:执行完该条指令后 AX0300H ;答:执行完该条指令后 AX4C2AH ;答:执行完该条指令后 AX3412H (2)MOV AX,BX (3)MOV AX,1400H (4)MOV AX,BX 11根据以下要求,试写出相应的汇编语言指令。 (1)把 BX 寄存器和 DX 寄存器的内容相加,结果存入 BX 寄存器中。 答:指令为 ADD BX,DX (2) 用寄存器 BX 和 SI 的基址变址寻址方式把存储器中的一个字节与 AL 寄存器的内容相 加,并把结果送到 AL 寄存器中。 答:指令为 ADD AL,BXSI (3) 用寄存器 BX 和位移量 0B2H 的寄存器相对寻址方式把存储器中的一个字和 CX 相加, 并把结果存回存储器中。 答:指令为 ADD BX0B2H,CX (4)用位移量为 0524H 的直接寻址方式把存储器中的一个字与立即数 3C5AH 相加,并把 结果送回该存储单元。 答:指令为 ADD 0524H,3C5AH 12已知堆栈段寄存器 SS 的内容是 0FF0AH,堆栈指针寄存器 SP 的内容是 0008H,先执行 两条把 8057H 和 0F7CH 分别进栈的 PUSH 指令,再执行一条 POP BX 指令。试画出堆栈区和 SP 的内容过程变化示意图(标出存储单元的物理地址) 。 答: 将 8057H 和 0F7CH 分别进栈后, SP0004H, 再执行一条 POP BX 指令后, SP0006H, BX0F7CH。堆栈区和 SP 的内容过程变化示意图如下: 7 C H 0 F H 5 7 H 8 0 H H H H 7 C H 0 F H 5 7 H 8 0 H H H H 0FF0A0H 0FF0A1H 0FF0A2H 0FF0A3H 0FF0A4H 0FF0A5H 0FF0A6H 0FF0A7H 0FF0A8H H 0FF0A9H H 0FF0AAH H SP SP0008H SP0004H SP SP0006H SS0FF0AH SP 13字节扩展指令和字扩展指令用在什么场合?举例说明。 答:用在除法运算中,对带符号数的被除数进行扩展; 例如:当被除数在 AX 中,除数在 BX 中时 CDW IDIV BX 14写出执行以下计算的指令系列。其中 X、Y、Z、R、W 均为存放 16 位带符号数单元的 地址。 (1)Z W (ZX) 答:指令系列如下 MOV AX,Z SUB AX,X ADD AX,W MOV Z,AX (2)Z W (X6)(R9) 答:指令系列如下 ADD X,6 SUB R,9 MOV AX,W SUB AX,X SUB AX,R MOV Z,AX (3)Z (WX)/(Y6) ,R 余数 答:指令系列如下 MOV AX,W IMUL X MOV BX,Y ADD BX,6 IDIV BX MOV R,DX (4)Z ( (WX)/ 5Y) 2 答:指令系列如下 MOV AX,W SUB AX,X CDW IDIV 5 IMUL Y IMUL 2 ADD DX,CF MOV Z,AX 15写出完成以下操作的程序段。假设各变量的值均为用压缩 BCD 码表示的二位十进制数 (1)U V(S6) 答:程序如下 MOV AL,S SUB AL,6 DAS ADD AL,V DAA MOV U,AL (2)U (XW)(ZV) 答:程序如下 MOV AL,Z SUB AL,V DAS MOV BL,AL MOV AL,X ADD AL,W DAA SUB AL,BL DAS MOV U,AL 16移位指令和循环移位指令在执行操作时,有什么差别?在编制乘除法程序中,为什么常 用移位指令来代替乘除法指令?试编制一个程序段,实现 CX 中的数除以 4,结果仍放在 CX 中。 答:逻辑移位指令用于无符号数的移位,左移时,最低位补 0,右移时,最高位补 0。 算术移位指令用于对带符号数的移位,左移时,最低位补,右移时,最高位的符号在右移 的同时,且保持。 小循环移位指令 ROL、ROR 是只对目标操作数进行循环,即不含 CF 的左、右移循环移位。 大循环移位指令 RCL、RCR 是把标志位 CF 也包含在循环中的左、右移循环移位。 对于二进制数,左移一位相当于乘二,右移一位相当于除二,所以可以用移位指令来代替乘 除法指令。 SAR CX,1 ;CX 算术右移一位,除二 SAR CX,1 ;CX 算术右移一位,除二 17在 0628H 单元处有一条二字节指令 JMP SHORT OBJ,如果其中位移量为: 27H; 6BH; 0C6H,试问转向地址处的值为多少? 答:段内短转移的把当前的 IP 值(即 JMP 指令的下一条指令的地址)与指令指定的 8 位偏 移量之和送到 IP,使程序运行发生转移。指令中的 OBJ 是一个带符号的八位偏移量。 当 OBJ27H 时,转移的目标地址值为:0651H 当 OBJ6BH 时,转移的目标地址值为:0692H 当 OBJ0C6H 时,转移的目标地址值为:05F0H 18带参数的返回指令用在什么场合?设栈顶地址为 4000H,当执行 RET 0008H 后,SP 指 针的值是多少? 答:当调用程序为子程序提供一定的参数或参数的地址,这些参数是通过堆栈传递给子程序 时;在子程序运行结束返回时,这些参数或参数地址已经没有在堆栈中保留的必要。因此,使用 带参数的返回指令 RET n,以便废弃一些 CALL 指令执行前入栈的参数。 设栈顶地址为 4000H,当执行 RET 0008H 后,执行 SP SPn 的操作,SP4008H。 19假定 AX 和 BX 中内容为带符号数,CX 和 DX 中的内容为无符号数。请用比较指令和 条件转移指令实现以下判断。 (1)若 DX 的内容高于 CX 的内容,转去执行 EXCEED。 (2)若 BX 的内容大于 AX 的内容,转去执行 EXCEED。 (3)若 CX 的内容等于零,转去执行 ZERO。 (4)若 BX 的内容小于等于 AX 的内容,转去执行 EXCEED。 (5)若 DX 的内容低于等于 CX 的内容,转去执行 EXCEED。 答: CMP DX,CX JA EXCEED CMP BX,AX JG EXCEED CMP CX,0 JZ ZERO CMP BX,AX JLE EXCEED CMP DX,CX JBE EXCEED 20分析下列程序段: ADD AX,BX JNO L1 JNC L2 SUB AX,BX JNC L3 JNO L4 JMP SHORT L5 如果 AX 和 BX 的内容(带符号数)给定如下: AX BX (1)B568H 54B7H (2)147BH 80DCH (3)D023H 9FD0H (4)42C8H 608DH (5)B568H 94B7H 问该程序执行完后,程序转向哪里? 答: AXBX 没有产生溢出,程序转向 L1 AXBX 没有产生溢出,程序转向 L1 AXBX 产生溢出,产生进位,执行减运算,产生借位,产生溢出,程序转向 L5 AXBX 产生溢出,无进位,程序转向 L2 AXBX 产生溢出,产生进位,执行减运算,产生借位,产生溢出,程序转向 L5 218086/8088 用什么途径来更新 CS 和 IP 的值? 答:出栈;转移;过程调用;中断。 22设 IP3D8FH,CS4050H,SP0F17CH。 当执行 CALL 2000:0094H 后,试指出 IP、 CS、SP、 (SP1) 、 (SP2) 、 (SP3)和(SP4)的值。 答:CS2000H,IP0094H;SP0F78H, (SP1) 3DH, (SP2)8FH, (SP3) 40H, (SP3)50H 23编写一段程序,比较两个 5 字节的字符串 OLDS 和 NEWS,如果 OLDS 字符串不同于 NEWS 字符串,则执行 NEW_LESS,否则顺序执行。 答:设字符串 OLDS 位于数据段,字符串 NEWS 位于扩展段,程序段如下: LEA SI,OLDS ;取源串首址送 SI LEA DI,NEWS ;取目的串首址送 DI CLD ;增址比较 MOV CX,5 ;串长度为 5 REPE CMPSB ;相等重复串比较 JNE NEW_LESS ;不相等转移 HLT ;暂停 习题五 1汇编程序和汇编语言源程序有什么区别?两者的作用是什么? 答:汇编程序是对汇编源程序进行编译的系统程序;汇编源程序是编程人员利用汇编语言为解 决某些问题而编写的程序。汇编程序用来对汇编源程序进行编译,从而产生目标代码的;而汇编源 程序是用来执行程序动作的语句。 2汇编语言源程序的语句有哪几种?各自的作用是什么? 答:汇编语言源程序是由指令语句、伪指令语句、宏指令语句组成。 指令语句:产生目标代码,是 CPU 可以执行的能够完成特定功能的语句。 伪指令语句:在汇编程序对源程序汇编期间由汇编程序处理的操作,它可以完成如处理器选择、 定义数据、分配存储区、指示程序结束等功能,但不产生目标代码。 宏指令语句:宏指令语句的目的在于简化汇编语言源程序的书写,不能缩小目标代码文件。 3标号和变量都有什么属性?各属性的作用是什么? 答:有段属性、偏移地址属性和类型属性。 段属性:段属性定义了标号和变量的段起始地址,其值是在某一段寄存器中。 偏移地址属性:该属性表示标号和变量相距段起始地址的字节数,是一个 16 位无符号数。 类型属性:对于标号而言:用于指出该标号是在本段内引用还是在其它段中引用。标号的类 型有 NEAR(段内引用)和 FAR(段间引用)两种;对变量而言:其类型属性由定义变量的伪指令 DB(定义字节型) 、DW(定义字型) 、DD(定义双字型)等确定。 4试叙述汇编语言源程序的上机过程。 答:分四步进行 编辑、汇编、 连接、 调试。 编辑:用编辑程序(例如 EDIT.COM)建立扩展名为.ASM 的汇编语言源程序文件。 汇编:用汇编程序(例如 MASM.EXE)将汇编语言源程序文件汇编成目标程序文件,其扩展名 为.OBJ。如果在汇编过程中出现语法错误,根据错误信息提示(如错误位置、错误类型、错误说明) , 用编辑软件重新调入源程序文件进行修改,直至没有出现语法错误,再进行连接程序。 连接:用连接程序(例如 LINK.EXE)把目标程序文件转化成可执行文件,其扩展名为.EXE。 调试:用调试程(例如 DEBUG.EXE)序对可执行文件进行调试,直到无错误为止。 此时的可执行文件在 DOS 命令下直接执行。 5已知数据段 DATA 从存储器 02000H 单元开始,DATA 段的定义如下: DATA SEGMENT VAR1 DB 2 DUP(0,1,?) VAR2 DW 50 DUP(?) VAR3 DB 10 DUP(0,1,2 DUP(3) ,4) DATA ENDS 试求出三个变量经 SEG、OFFSET、TYPE、LENGTH、SIZE 运算的结果。 答:运算结果如下表所示: 回送符 变量 SEG OFFSET TYPE LENGTH
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025安置点太阳能光伏发电系统施工合同
- 城市防洪工程视屏课件
- 肠痉挛护理查房
- 口腔科常用药物临床应用规范
- 腰痛病刮痧治疗
- 成人窒息护理要点解析
- 车辆抵押借款合同书
- 2025质押借款合同范本模板
- 2025标准版家具买卖合同范本
- 2025网络安全公司劳动合同
- 90后养生消费趋势洞察课件
- 铁塔智能设备接入指导
- DB44-T 2179-2019枇杷育苗技术规程-(高清现行)
- “三重一大”三张表格
- 巡线无人机技术规格书2019320
- 导截流验收报告汇编
- 旅游经济运行与调控课件
- 高考语文文言文阅读常考古代实词总结
- 核电厂放射性液态流出物排放的主要技术要求
- NBT10364-2019 综合机械化放顶煤工作面瓦斯涌出量预测方法_(高清最新)
- (完整word版)重庆市建设工程竣工验收报告、竣工验收意见书
评论
0/150
提交评论