微机基础学习知识原理与接口技术顾晖习题集参考材料.规范标准答案.doc
微机原理与接口技术 答案目录第1章 习题答案1第2章 习题答案2第3章 习题答案4第4章 习题答案7第5章 习题答案19第6章 习题答案28第7章 习题答案29第8章 习题答案29第9章 习题答案32第10章 习题答案37第11章 习题答案39第1章 习题答案1.计算机硬件的基本组成部分有哪些?简述各部分的功能答:计算机硬件的基本组成部分有:运算器、控制器、存储器、输入设备和输出设备五大组成部分;运算器功能:完成各种算术运算或逻辑运算;控制器功能:发出各种控制信息,使计算机各部件协调工作;存储器功能:存储程序和数据;输入设备:将程序和数据输入的部件;输出设备:将结果数据输出的部件。2.简述微型计算机系统的组成。4分答:以微型计算机为核心,配以鼠标、键盘等外围设备、电源、接口电路,以及控制计算机工作的软件构成微型计算机系统。3.简述总线控制逻辑的任务。答:主板与外部设备之间的数据传输必须通过系统总线,所以系统总线包含的信号线必须满足下列各种输入/输出操作的需要: 访问分布于主板之外的存储器; 访问I/O接口; 适应外部中断方式; 适应存储器直接与外部设备交换信息。总线控制逻辑的任务就是产生和接受这些操作所需要的信号。4.简述冯诺依曼的“程序存储和程序控制”原理。答:计算机有运算器、控制器、存储器、输入设备和输出设备五大部分组成,计算机内部采用二进制数据的格式表示数据和指令。程序将事先保存在内存储器中,计算机在工作时,不需要操作人员干预,自动逐条取出指令并执行。5.简述微型计算机系统的启动过程。4分答:CPU首先执行主板上BIOS中的自检程序;执行引导装入程序,依次搜寻硬盘、光盘等;读出引导记录,装入引导程序;由引导程序将操作系统装入内存;执行操作系统。6. BIOS是什么?简述系统BIOS代码完成的工作。答:BIOS是Basic Input Output System的缩写,指的是基本输入输出系统。它是一组固化到计算机ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。7.答:略。2第2章 习题答案1.答:为了区别所使用的数制,一般用以下两种书写格式表示: 用括号将数字括起,后面加数制区分,数制用下标的形式给出; 用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。例如:十六进制数56.78可以表示成(56.78)16或56.78H;十进制数56.78可以表示成(56.78)10或56.78D。2.答:123D采用十进制,0AFH采用十六进制,77Q采用八进制,1001110B采用二进制。3.答:字长为8位的二进制数原码表示的最大值:127,最小值:-127;补码表示的最大值:127,最小值:-128。字长为16位的二进制数原码表示的最大值:32767,最小值:-32767;补码表示的最大值:32767,最小值:-32768。4.把下列十进制数分别转换为二进制数和十六进制数。2分1)125 2)255 3)72 4)5090答:(1)125D=0111 1101B=7DH(2) 255D=1111 1111B=FFH(3)72D=0100 1000B=48H(4)5090D=0001 0011 1110 0010B=13E2H5.答:(1)1111 0000B=240D=F0H(2) 1000 0000 B =128D =80H(3)1111 1111 B =255 D =FFH(4)0101 0101B=85D=55H6.答:(1)FFH=255D=1111 1111B(2) ABCDH=43981D=1010 1011 1100 1101B(3) 123H=291D=0000 0001 0010 0011B(4) FFFFH=65535D=1111 1111 1111 1111B7.答:(1)8位时(16)原=0001 0000 ; (16)补=0001 0000;16位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000;(2) 8位时(-16)原=1001 0000 ; (-16)补=1111 0000;16位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000;(3) 8位时(+0)原=0000 0000; (+0)补=0000 0000;16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000;3(4) 8位时(-0)原=1000 0000 ; (-0)补=0000 0000;16位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000;(5) 8位时(127)原=0111 1111; (127)补=0111 1111;16位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111;(6) 8位时-128超过原码表示的范围; (-128)补=1000 0000;16位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000;(7) 8位时(121)原=0111 1001 ; (121)补=0111 1001;16位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001;(8) 8位时(-9)原=1000 1001 ; (-9)补=1111 0111;16位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111;8.实现下列转换 2分1)X原=10111110,求X补 2)X补=11110011,求-X补3)X补=10111110,求X原 4)X补=10111110,求X反答:(1) x补=1100 0010;(2)-x补=0000 1101;(3)x原=1100 0010;(4)x反=1011 1101。9.答:(1)AB;(2)AB10.答:(1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。11.完成下列8位二进制数的逻辑运算 1分1)1100110010101010 2)11001100101010103)1100110010101010 4)10101100101011005)10101100 10101100 6)10101100101011007)10101100答:(1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100;(5)0000 0000;(6)1010 1100;(7)=0101 0011。12.答:(1)30H=48,字符为0;(2)39H=57,字符为9;(3)42H=66,字符为B;(4)62H=98,字符为b;(5)20H=32,字符为空格;(6)7H=7,字符为报警符;13、答:十进制49123762压缩BCD码0100 1001B0001 0010 0011B0000 0111B0110 0010B非压缩BCD码0000 0100 0000 1001B0000 0001 0000 0010 0000 0011B0000 0111B0000 0110 0000 0010BASCII码3439H313233H37H3632H4第3章 习题答案1.(1)答:物理地址:物理地址(PA)是20位无符号二进制数,是CPU访问存储器的实际地址。每个存储单元对应一个物理地址。8086存储空间的物理地址范围是:00000HFFFFFH。逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。段地址:8086规定各逻辑段从节的整数边界开始,即段首地址二进制值的低4位是0000,把段首地址的高16位称为段基址或段地址。偏移地址:把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址EA)。段地址和偏移地址都是是16位无符号二进制数。(2)答:时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期,又称为T状态或T周期,时钟周期是微机系统工作的最小时间单元。总线周期:当CPU访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle)。总线周期是利用总线完成一次读/写所需要的时间。指令周期:执行一条指令所需要的时间称为指令周期(Instruction Cycle)。指令周期由1个或多个总线周期组成。解释下边名词:(3)最小模式、最大模式 1分答:最小模式:也称为单处理器模式,是指系统中只有一片8086微处理器,所连接的存储器容量不大、片子不多,所要连接的I/O端口也不多,系统的控制总线就直接由CPU的控制线供给,从而使得系统中的总线控制电路减到最少。最小模式适用于较小规模的系统。最大模式:相对于最小模式而言,适用于中、大型规模的系统。系统中有多个微处理器,其中一个是主处理器8086,其他的处理器称为协处理器,承担某方面专门的工作。需要增加一片8288来对8086CPU发出的控制信号进行变换和组合,以得到对存储器或I/O端口的读/写信号和对锁存器、总线收发器的控制信号。2.答:EU:负责指令的执行,即从总线接口部件BIU的指令队列取指令,指令执行后向BIU送回运算结果,同时把运算结果的状态特征保存到标志寄存器中。BIU:负责CPU与存储器、I/O设备之间的数据传送。BIU完成以下操作:取指令送给指令队列、配合执行部件从指定的内存单元或者外设端口中取数据、将数据传送给执行部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。8086的BIU和EU在很多时候可以并行工作,使得取指令、指令译码和执行指令这些操作构成操作流水线。 当指令队列中有两个空字节,且EU没有访问存储器和I/O接口的要求时,BIU会自动把指令取到指令队列中。 当EU准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过程中,如果需要访问存储器或者I/O设备,那么EU会向BIU发出访问总线的请求,以完成访问存储器或者I/O接口的操作。如果此时BIU正好处于空闲状态,那么,会立即响应EU的总线请求;但如果BIU正在将某个指令字节取到指令队列中,那么,BIU将首先完成这个取指令操作,然后再去响应EU发出的访问总线的请求。 当指令队列已满,而且EU又没有总线访问时,BIU便进入空闲状态。5 在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接着的那条指令了,而BIU 往指令队列装入指令时,总是按顺序进行的。在这种情况下,指令队列中已经装入的指令就没有用了,会被自动消除。随后,BIU 会往指令队列中装入另一个程序段中的指令。3.答:地址信号是CPU 发送给内存或I/O 设备的,所以地址线是单向的;数据信号可以从CPU 发送给内存或I/O 设备,也可以从内存或I/O 设备发送给CPU,故而数据线是双向的。4.答:8086CPU 中有14 个寄存器。它们是:4 个16 位的通用寄存器:AX、BX、CX、DX 和8 个8 位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指针和变址寄存器SP、BP、 SI、DI;4 个16 位的段寄存器CS、DS、SS 和ES;标志寄存器FR;指令指针寄存器IP。功能略。5.将十六进制数5678H和以下各数相加,试求叫法运算的结果及进算后标志寄存器中6个状态标志的值,用十六进制数表示运算结果。 2分1)7834H 2)1234H 3)8765H答:(1)加法运算的结果为:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1;(2)加法运算的结果为:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0;(3)加法运算的结果为:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。6.8086CPU可寻址的存储器地址范围是多少?可寻址的I/O端口地址范围是多少?2分答:8086CPU 可寻址的存储器地址范围是00000HFFFFFH;可寻址的I/O 端口地址范围是0000HFFFFH。7.答:由于8086CPU 提供20 位地址,但8086 中可用来存放地址的寄存器,如IP、SP、BX、SI 等都是16 位的,只能直接寻址64KB。为了寻址1MB 存储空间,8086CPU 采用了典型的存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段的容量小于或等于64KB。分段后,对存储器的寻址操作不再直接用20 位的物理地址,而是采用段地址加段内偏移地址的二级寻址方式。8.答:将AH的内容送存储单元的操作过程中:M / IO =1,WR = 0,RD =1,DT / R =1;将I/O 端口的内容送AL的操作过程中:M / IO = 0,WR =1,RD = 0,DT / R = 0。9.答:BHE A0 有效的数据引脚 操 作0 0AD15AD0(一个总线周期同时访问奇体和偶体,从奇地址单元读/写字数据的高8 位,从偶地址单元读/写字数据的低8 位)从偶地址读/写一个字61 0 AD7AD0从偶地址读/写一个字节0 1 AD15AD8从奇地址读/写一个字节0 11 0AD15AD8(第一个总线周期从奇字数据的低8位)AD7AD0(第二个总线周期从偶地址单元读/写字数据的高8 位)从奇地址读/写一个字10.简述8086系统复位后各寄存器的状态。 2分答:8086 系统复位后,指令指针(IP)为0000H;CS 寄存器为FFFFH,其他寄存器为0000H;指令队列清空。11. 简述8086系统中为什么一定要有地址锁存器?需要所存哪些信息? 2分答:8086 的A19/S6A16/S3 和AD15AD0 是复用信号,需要地址锁存器将地址信息保存起来,为外接存储器或外设提供地址信息。需要锁存的信号是:地址信号及BHE 信号。12.8086CPU基本的总线周期包括几个时钟周期? 1分答:8086CPU 一个基本的总线周期包含4 个时钟周期:T1、T2、T3 和T4 。在T1 状态,M/ IO有效,指示CPU 访问的是存储器还是外设,之后CPU 往多路复用总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。在T1 状态,CPU 还必须在ALE 引脚上输出一个正脉冲作为地址锁存信号。BHE信号也在T1 状态送出,它用来表示数据传送的字宽。在T2 状态,CPU 从总线上撤销地址,使总线的低16 位浮空,置成高阻状态,为传输数据作准备。总线的最高4 位(A1916)用来输出本总线周期的状态信息。读信号RD或写信号WR在T2 状态变为有效,指示CPU 将进行哪种操作(读或写)。在T3 状态,多路总线的高4 位继续提供状态信息,而多路总线的低16 位上出现由CPU读出的数据或者CPU 从存储器或端口写入的数据。在T4 状态和前一个状态的交界处,CPU 对数据总线进行采样,获得数据,总线周期结束。13.什么情况下需要插入TW周期?应该插入多少个TW取决于什么因素? 2分答:在有些情况下,外设或存储器速度较慢,不能及时地配合CPU 传送数据。这时,外设或存储器会通过“READY”信号线在T3 状态启动之前向CPU 发一个“数据未准备好”信号,于是CPU 会在T3 之后插入1 个或多个附加的时钟周期TW。取决与外设或存储器速度。14.答:两种操作时序的不同之处发生在T1 和T2 状态。 在T1状态,读周期:DT/R应输出低电平;写周期:DT/R应输出高电平。 在T2 状态,读周期:RD有效,而WR无效,AD15AD0 为高阻态;写周期:RD变为无效,而写信号WR变为有效,AD15AD0 在地址撤销之后立即送出要写入存储器或外设端口的数据。715.答:在最小模式下,读信号RD、ALE 和DT/R、DEN等信号直接由CPU 给出;在最大模式下,总线控制器8288 根据2 1 S ,S 和0 S 状态信号产生读信号MRDC和IORC,ALE 和DT/R、DEN 也是由8288 发出的,而且DEN 信号的极性与CPU 在最小模式下发出的DEN信号正好相反。8第4章 习题答案1.什么叫寻址方式?8086CPU支持哪几种寻址方式? 2分答:指令中关于如何求出操作数有效地址的方法称为寻址方式。8086CPU支持多种寻址方式,根据操作数的类型及来源大致分为3类:数据寻址、转移地址寻址和I/O寻址。2.答:8086汇编指令可以采用7种基本的数据寻址方式:立即寻址;寄存器寻址;直接寻址;寄存器间接寻址;寄存器相对寻址;基址变址寻址;相对基址变址寻址。与存储器寻址方式(后5种)相比,寄存器寻址方式最快。3.内存寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段寄存器指出段地址,指令中应该如何表示? 2分答:如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。8086系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中利用前缀指明段超越。例如:MOV ES:1225H,AX4.在8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,请计算它们的物理地址是多少? 2分1)MOV BX,12 2)MOV BX,12 3)MOV ES:SI,AX 4)MOV VAR,8 5)MOV BXSI,AX 6)MOV 6BPSI,AL 7)MOV 100H,DX 8)MOV 6BX,CX 9)MOV VAR+5,AX答:(1)寄存器寻址方式(2)寄存器间接寻址方式,PA=10300H(3)寄存器间接寻址方式,PA=20200H(4)直接寻址方式,PA=10060H(5)基址变址寻址方式,PA=10500H(6)相对基址变址寻址方式,PA=12300H(7)直接寻址方式,PA=11000H(8)_寄存器相对寻址方式,PA=10306H(9)直接寻址方式,PA=10065H5.判断指令对错。如果是错误的,请说明原因答。 2分1)XCHG CS,AX 2)MOV BX,1000H 3)XCHG BX,IP 4)PUSH CS 5)POP CS 6)IN BX,DX 7)MOV BYTEBX,1000 8)MOV CS,1000H 9)MOV BX,OFFSET VARSI 10)MOV AX,SIDI 11)MOV COUNTBXSI,ES:AX 6.试述以下指令的区别。 2分1)MOV AX,3000H 与 MOV AX,3000H2)MOV AX,MEM 与 MOV AX,OFFSET MEM3)MOV AX,MEM 与 LEA AX,MEM4)JMP SHORT L1 与 JMP NEAR PTR L15)CMP DX,CX 与 SUB DX,CX6)MOV BPSI,CL 与 MOV DS:BPSI,CL答:(1)源操作数的寻址方式不同。MOV AX,3000H指令的源操作数采用的是立即数寻址方式,MOV AX,3000H指令的源操作数采用的是直接寻址方式。(2)指令执行后,AX的值不同。MOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而MOV AX,OFFSET MEM指令执行后,AX得到的是MEM单元的地址。(3)指令不同。MOV AX,MEMMOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而LEA AX,MEM指令执行后,AX得到的是MEM单元的地址。(4)转移的类型不同。JMP SHORT L1指令实现的是段内转移,而JMP NEAR PTR L1指令实现的是段间转移。(5)指令的执行结果不同。CMP DX,CX指令执行后,DX的值不变,而SUB DX,CX指令执行后,DX的值是两寄存器值的差。(6)操作数所在段不同。MOV BPSI,CL指令访问的是堆栈段的存储单元,而MOV DS:BPSI,CL指令访问的是数据段的存储单元。7.答:(1)MOV BYTE PTR BP,200指令执行后,(58200H)=200H(2)MOV WORD PTR BX,2000指令执行后,(22400H)=2000H8.答:当前栈顶地址是:FE00H:2010H;执行PUSH BX指令后,栈顶地址变为:FE00H:200EH,栈顶2字节内容是:3457H。9.答:(1)(DX)=3C62H,CF=1(2)(DX)=03C6H,CF=0(3)(DX)=18A0H,CF=1(4)(DX)=2BC6H,CF=0(5)(DX)=18B7H,CF=1(6)(DX)=BCC5H,CF=010.答:(AX)CFZFOFSFPF(1)134EH00001(2)0821H00001(3)F142H10011(4)0A6910011(5)F596-(6)0A690000111.设AX和BX是符号数,CX和DX是无符号数,若转移目标指令的标号是NEXT,请分别为下列各项确定CMP和条件转移指令。 5分1)CX值超过DX转移 2)AX值未超过BX转移3)DX为0转移 4)CX值等于小于DX转移答:(1) CMP CX,DXJA NEXT(2)CMP AX,BXJNA NEXT(3)CMP DX,0JZ NEXT(4)CMP CX,DXJBE NEXT12.阅读分析下列指令序列ADD AX,BXJNO L1JNC L2SUB AX,BXJNC L3JNO L4JMP L5若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转向何处(L1-L5中的哪一个)?1)AX=14C6H, BX=80DCH2)AX=0B568H,BX=54B7H3)AX=42C8H, BX=608DH4)AX=0D023H,BX=9FD0H5)AX=9FD0H, BX=0D023H答:(1) 程序转向L1。(2) 程序转向L1。(3) 程序转向L2。(4) 程序转向L5。(5) 程序转向L5。13.答:因为普通运算指令执行的是二进制数的运算,而BCD码是十进制数,所以,需要对运算结果进行十进制调整。在做BCD码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作BCD码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。14.答:MOV Cl,310SHR bx,cl15.答:(略)16.答:17.答:DATA SEGMENTCOUNT=100HORG 1000HD_DATA DB COUNT DUP(?)ORG 2170HS_DATA DB COUNT/5 DUP(1,2,3,4,5)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOV DS,AXMOV ES,AXLEA SI,S_DATALEA DI,D_DATAMOV CX,COUNTREP MOVSBMOV AL,1MOV CX,COUNTLEA DI,D_DATAAGAIN:CMP BYTE PTR DI,ALJNZ NEXTMOV BYTE PTR DI, NEXT:INC DILOOP AGAINEXIT: MOV AH,4CHINT 21HCODE ENDSEND START1118. 答:19. 答:CODE SEGMENTASSUME CS:CODESTART:MOV AX,5678HMOV DX,1234HNOT AXNOT DXADD AX,1ADC DX,0EXIT:MOV AH,4CHINT 21HCODE ENDSEND START;本程序未考虑溢出的情况。DATA SEGMENTA1 DW 5050HA2 DW ? ;存A1的反码A3 DW ? ;存A1的补码DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AX,A1NOT AXMOV A2,AXINC AXMOV A3,AXEXIT:MOV AH,4CHINT 21HCODE ENDSEND START1220. 答:21. 答:DATA SEGMENT ;AT 5000HORG 3481HDAT DB 12HDB ?,?,?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV AL,DATNEG ALMOV DAT+1,ALMOV AL,DATXOR AL,00001111BMOV DAT+2,ALMOV AL,DATOR AL,11110000BMOV DAT+3,ALEXIT:MOV AH,4CHINT 21HCODE ENDSEND STARTCOUNT=1000DATA SEGMENTORG 1000HDAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200)ORG 2000HMINDAT DB ?DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,DATMOV CX,COUNTDEC CXMOV AL,SINEXT: INC SICMP AL,SIJLE ISMINMOV AL,SIISMIN:LOOP NEXTMOV MINDAT,ALEXIT:MOV AH,4CHINT 21HCODE ENDSEND START1322. 答:DATA SEGMENTSTRING1 DB hELLO!COUNT1=$-STRING1STRING2 DB hEL1O!COUNT2=$-STRING2IM DB MATCH$NM DB NOT MATCH$DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,STRING1LEA DI,STRING2MOV CX,COUNT1MOV BX,COUNT2CMP CX,BXJNZ DISPNOTMATCHNEXT:MOV AL,SIMOV AH,DICMP AL,AHJNZ DISPNOTMATCHINC SIINC DILOOP NEXTISMATCH:MOV DX,OFFSET IMMOV AH,9INT 21HJMP EXITDISPNOTMATCH:MOV DX,OFFSET NMMOV AH,9INT 21HEXIT:MOV AH,4CHINT 21HCODE ENDSEND START1423. 答:24. 答:DSEG SEGMENTDATA DB 5,6,7,8DW ?DATA2 DB 1,10,100,20DSEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV DX,0MOV CX,4LEA SI,DATALEA DI,DATA2NEXT:MOV AL,DIMOV BL,SICALL DOMULADD DX,AXINC DIINC SILOOP NEXTMOV WORD PTR DATA+4,DXEXIT:MOV AH,4CHINT 21HDOMUL PROCMUL BLRETDOMUL ENDPCODE ENDSEND STARTMOV CX,100MOV AX,SEG LISTMOV DS,AXMOV AX,SEG BLKMOV ES,AXLEA SI,LISTADD SI,CXLEA DI,BLKADD DI,CXSTDREP MOVSB1525. 答:JMP SHORT LAB指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目标的偏移地址=(IP)+位移量。所以,转移目标的物理地址=(CS)16+(IP)+位移量。(1)转移目标的物理地址=(CS)16+0158H(2)转移目标的物理地址=(CS)16+0182H(3)转移目标的物理地址=(CS)16+017AH(4)转移目标的物理地址=(CS)16+01E2H26. 答:DSEG SEGMENTBUFFER DW 8DB 12345678DSEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV CX,BUFFERSAR CX,1LEA SI,BUFFERMOV DI,SIADD DI,2AGAIN:ADD SI,2MOV AL,SIAND AL,0FHSAL BYTE PTR SI+1,1SAL BYTE PTR SI+1,1SAL BYTE PTR SI+1,1SAL BYTE PTR SI+1,1OR AL,BYTE PTR SI+1MOV DI,ALINC DILOOP AGAINEXIT:MOV AH,4CHINT 21HCODE ENDSEND STARTDSEG SEGMENTORG 10HDAT DB 10DB ?DSEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV AL,DATMOV BL,ALSAL BL,1ADD AL,BLMOV CL,2SAL BL,CLADD AL,BLMOV DAT+1,ALEXIT:MOV AH,4CHINT 21HCODE ENDSEND START1627. 答:28. 答:29. 答:DSEG SEGMENTORG 10HDAT DB 10H,20HDB ?,?DSEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXMOV AL,DATMOV AH,DAT+1MOV CL,3SAR AX,CLMOV DAT+2,ALMOV DAT+3,AHEXIT:MOV AH,4CHINT 21HCODE ENDSEND STARTDSEG SEGMENTBLOCK DW 8 DUP (10H,20H,-3,-9)DSEG ENDSCODE SEGMENTASSUME CS:CODE,DS:DSEGSTART:MOV AX,DSEGMOV DS,AXLEA SI,BLOCKMOV CX,32AGAIN:MOV AX,SICMP AX,0JNS NEXTNEG AXMOV SI,AXNEXT:INC SIINC SILOOP AGAINEXIT:MOV AH,4CHINT 21HCODE ENDSEND START17DSEG SEGMENTORG 3030HDAT DW 1234H,-1234H
收藏
- 资源描述:
-
\\
微机原理与接口技术 答案
目录
第1章 习题答案 1
第2章 习题答案 2
第3章 习题答案 4
第4章 习题答案 7
第5章 习题答案 19
第6章 习题答案 28
第7章 习题答案 29
第8章 习题答案 29
第9章 习题答案 32
第10章 习题答案 37
第11章 习题答案 39
第1章 习题答案
1.计算机硬件的基本组成部分有哪些?简述各部分的功能
答:
计算机硬件的基本组成部分有:运算器、控制器、存储器、输入设备和输出设备五大组成部分;
运算器功能:完成各种算术运算或逻辑运算;
控制器功能:发出各种控制信息,使计算机各部件协调工作;
存储器功能:存储程序和数据;
输入设备:将程序和数据输入的部件;
输出设备:将结果数据输出的部件。
2.简述微型计算机系统的组成。4分
答:
以微型计算机为核心,配以鼠标、键盘等外围设备、电源、接口电路,以及控制计算机工作的软件构成微型计算机系统。
3.简述总线控制逻辑的任务。
答:
主板与外部设备之间的数据传输必须通过系统总线,所以系统总线包含的信号线必须满足下列各种输入/输出操作的需要:① 访问分布于主板之外的存储器;② 访问I/O接口;③ 适应外部中断方式;④ 适应存储器直接与外部设备交换信息。总线控制逻辑的任务就是产生和接受这些操作所需要的信号。
4.简述冯诺依曼的“程序存储和程序控制”原理。
答:
计算机有运算器、控制器、存储器、输入设备和输出设备五大部分组成,计算机内部采用二进制数据的格式表示数据和指令。程序将事先保存在内存储器中,计算机在工作时,不需要操作人员干预,自动逐条取出指令并执行。
5.简述微型计算机系统的启动过程。4分
答:
CPU首先执行主板上BIOS中的自检程序;执行引导装入程序,依次搜寻硬盘、光盘等;读出引导记录,装入引导程序;由引导程序将操作系统装入内存;执行操作系统。
6. BIOS是什么?简述系统BIOS代码完成的工作。
答:
BIOS是Basic Input Output System的缩写,指的是基本输入输出系统"。它是一组固化到计算机ROM芯片上的程序,保存着计算机最重要的基本输入输出的程序、系统设置信息、开机后自检程序和系统自启动程序。
7.答:略。
2
第2章 习题答案
1.答:
为了区别所使用的数制,一般用以下两种书写格式表示:
① 用括号将数字括起,后面加数制区分,数制用下标的形式给出;
② 用后缀区分,二进制数、十进制数、八进制数、十六进制数的后缀分别为字母B(或b)、D(或d)、O(或o)或Q(或q)、H(或h)。
例如:十六进制数56.78可以表示成(56.78)16或56.78H;
十进制数56.78可以表示成(56.78)10或56.78D。
2.答:
123D采用十进制,0AFH采用十六进制,77Q采用八进制,1001110B采用二进制。
3.答:
字长为8位的二进制数原码表示的最大值:127,最小值:-127;补码表示的最大值:127,最小值:-128。
字长为16位的二进制数原码表示的最大值:32767,最小值:-32767;补码表示的最大值:32767,最小值:-32768。
4.把下列十进制数分别转换为二进制数和十六进制数。2分
1)125 2)255 3)72 4)5090
答:
(1)125D=0111 1101B=7DH
(2) 255D=1111 1111B=FFH
(3)72D=0100 1000B=48H
(4)5090D=0001 0011 1110 0010B=13E2H
5.答:
(1)1111 0000B=240D=F0H
(2) 1000 0000 B =128D =80H
(3)1111 1111 B =255 D =FFH
(4)0101 0101B=85D=55H
6.答:
(1)FFH=255D=1111 1111B
(2) ABCDH=43981D=1010 1011 1100 1101B
(3) 123H=291D=0000 0001 0010 0011B
(4) FFFFH=65535D=1111 1111 1111 1111B
7.答:
(1)8位时(16)原=0001 0000 ; (16)补=0001 0000;
16位时(16)原=0000 0000 0001 0000 ; (16)补=0000 0000 0001 0000;
(2) 8位时(-16)原=1001 0000 ; (-16)补=1111 0000;
16位时(-16)原=1000 0000 0001 0000 ; (-16)补=1111 1111 1111 0000;
(3) 8位时(+0)原=0000 0000; (+0)补=0000 0000;
16位时(+0)原=0000 0000 0000 0000; (+0)补=0000 0000 0000 0000;
3
(4) 8位时(-0)原=1000 0000 ; (-0)补=0000 0000;
16位时(-0)原=1000 0000 0000 0000; (-0)补=0000 0000 0000 0000;
(5) 8位时(127)原=0111 1111; (127)补=0111 1111;
16位时(127)原=0000 0000 0111 1111; (127)补=0000 0000 0111 1111;
(6) 8位时-128超过原码表示的范围; (-128)补=1000 0000;
16位时(-128)原=1000 0000 1000 0000; (-128)补=1111 1111 1000 0000;
(7) 8位时(121)原=0111 1001 ; (121)补=0111 1001;
16位时(121)原=0000 0000 0111 1001; (121)补=0000 0000 0111 1001;
(8) 8位时(-9)原=1000 1001 ; (-9)补=1111 0111;
16位时(-9)原=1000 0000 0000 1001; (-9)补=1111 1111 1111 0111;
8.实现下列转换 2分
1)[X]原=10111110,求[X]补 2)[X]补=11110011,求[-X]补
3)[X]补=10111110,求[X]原 4)[X]补=10111110,求[X]反
答:
(1) [x]补=1100 0010;(2)[-x]补=0000 1101;(3)[x]原=1100 0010;(4)[x]反=1011 1101。
9.答:
(1)A>B;(2)A<B
10.答:
(1)溢出;(2)13H;(3)溢出;(4)EDH;(5)EDH。
11.完成下列8位二进制数的逻辑运算 1分
1)11001100∧10101010 2)11001100∨10101010
3)1100110010101010 4)10101100∧10101100
5)10101100 10101100 6)10101100∨10101100
7)~10101100
答:
(1)1000 1000;(2)1110 1110;(3)0110 0110;(4)1010 1100;
(5)0000 0000;(6)1010 1100;(7)=0101 0011。
12.答:
(1)30H=48,字符为‘0’;(2)39H=57,字符为‘9’;(3)42H=66,字符为‘B’;
(4)62H=98,字符为‘b’;(5)20H=32,字符为空格;(6)7H=7,字符为报警符;
13、答:
十进制
49
123
7
62
压缩BCD码
0100 1001B
0001 0010 0011B
0000 0111B
0110 0010B
非压缩BCD码
0000 0100 0000 1001B
0000 0001 0000 0010 0000 0011B
0000 0111B
0000 0110 0000 0010B
ASCII码
3439H
313233H
37H
3632H
4
第3章 习题答案
1.(1)答:
物理地址:物理地址(PA)是20位无符号二进制数,是CPU访问存储器的实际地址。每个存储单元对应一个物理地址。8086存储空间的物理地址范围是:00000H~FFFFFH。
逻辑地址:采用分段结构的存储器中,把通过段地址和偏移地址来表示的存储单元的地址称为逻辑地址,记为:段地址:偏移地址。
段地址:8086规定各逻辑段从节的整数边界开始,即段首地址二进制值的低4位是0000,把段首地址的高16位称为段基址或段地址。
偏移地址:把某一存储单元相对于段地址的段内偏移量称为偏移地址(也称有效地址EA)。段地址和偏移地址都是是16位无符号二进制数。
(2)答:
时钟周期:计算机的“时钟”是由振荡源产生的、幅度和周期不变的节拍脉冲,每个脉冲周期称为时钟周期,又称为T状态或T周期,时钟周期是微机系统工作的最小时间单元。
总线周期:当CPU访问存储器或输入/输出端口时,需要通过总线进行读或写操作,这个过程称为总线周期(Bus Cycle)。总线周期是利用总线完成一次读/写所需要的时间。
指令周期:执行一条指令所需要的时间称为指令周期(Instruction Cycle)。指令周期由1个或多个总线周期组成。
解释下边名词:(3)最小模式、最大模式 1分
答:
最小模式:也称为单处理器模式,是指系统中只有一片8086微处理器,所连接的存储器容量不大、片子不多,所要连接的I/O端口也不多,系统的控制总线就直接由CPU的控制线供给,从而使得系统中的总线控制电路减到最少。最小模式适用于较小规模的系统。
最大模式:相对于最小模式而言,适用于中、大型规模的系统。系统中有多个微处理器,其中一个是主处理器8086,其他的处理器称为协处理器,承担某方面专门的工作。需要增加一片8288来对8086CPU发出的控制信号进行变换和组合,以得到对存储器或I/O端口的读/写信号和对锁存器、总线收发器的控制信号。
2.答:
EU:负责指令的执行,即从总线接口部件BIU的指令队列取指令,指令执行后向BIU送回运算结果,同时把运算结果的状态特征保存到标志寄存器中。
BIU:负责CPU与存储器、I/O设备之间的数据传送。BIU完成以下操作:取指令送给指令队列、配合执行部件从指定的内存单元或者外设端口中取数据、将数据传送给执行部件或者把执行部件的操作结果传送到指定的内存单元或外设端口中。
8086的BIU和EU在很多时候可以并行工作,使得取指令、指令译码和执行指令这些操作构成操作流水线。
① 当指令队列中有两个空字节,且EU没有访问存储器和I/O接口的要求时,BIU会自动把指令取到指令队列中。
② 当EU准备执行一条指令时,它会从指令队列前部取出指令执行。在执行指令的过程中,如果需要访问存储器或者I/O设备,那么EU会向BIU发出访问总线的请求,以完成访问存储器或者I/O接口的操作。如果此时BIU正好处于空闲状态,那么,会立即响应EU的总线请求;但如果BIU正在将某个指令字节取到指令队列中,那么,BIU将首先完成这个取指令操作,然后再去响应EU发出的访问总线的请求。
③ 当指令队列已满,而且EU又没有总线访问时,BIU便进入空闲状态。
5
④ 在执行转移指令、调用指令和返回指令时,下面要执行的指令就不是在程序中紧接
着的那条指令了,而BIU 往指令队列装入指令时,总是按顺序进行的。在这种情况下,指
令队列中已经装入的指令就没有用了,会被自动消除。随后,BIU 会往指令队列中装入另一
个程序段中的指令。
3.答:
地址信号是CPU 发送给内存或I/O 设备的,所以地址线是单向的;
数据信号可以从CPU 发送给内存或I/O 设备,也可以从内存或I/O 设备发送给CPU,
故而数据线是双向的。
4.答:
8086CPU 中有14 个寄存器。它们是:4 个16 位的通用寄存器:AX、BX、CX、DX 和
8 个8 位的通用寄存器:AH、AL、BH、BL、CH、CL、DH、DL;指针和变址寄存器SP、
BP、 SI、DI;4 个16 位的段寄存器CS、DS、SS 和ES;标志寄存器FR;指令指针寄存器
IP。
功能略。
5.将十六进制数5678H和以下各数相加,试求叫法运算的结果及进算后标志寄存器中6个状态标志的值,用十六进制数表示运算结果。 2分
1)7834H 2)1234H 3)8765H
答:
(1)加法运算的结果为:CEACH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=1;
(2)加法运算的结果为:68ACH;CF=0,PF=1,AF=0,ZF=0,SF=0,OF=0;
(3)加法运算的结果为:DDDDH;CF=0,PF=1,AF=0,ZF=0,SF=1,OF=0。
6.8086CPU可寻址的存储器地址范围是多少?可寻址的I/O端口地址范围是多少?2分
答:
8086CPU 可寻址的存储器地址范围是00000H~FFFFFH;
可寻址的I/O 端口地址范围是0000H~FFFFH。
7.答:
由于8086CPU 提供20 位地址,但8086 中可用来存放地址的寄存器,如IP、SP、BX、
SI 等都是16 位的,只能直接寻址64KB。为了寻址1MB 存储空间,8086CPU 采用了典型的
存储器分段技术,即将整个存储器空间分为许多逻辑段,每个逻辑段的容量小于或等于64KB。
分段后,对存储器的寻址操作不再直接用20 位的物理地址,而是采用段地址加段内偏移地
址的二级寻址方式。
8.答:
将AH的内容送存储单元的操作过程中:M / IO =1,WR = 0,RD =1,DT / R =1;
将I/O 端口的内容送AL的操作过程中:M / IO = 0,WR =1,RD = 0,DT / R = 0。
9.答:
BHE A0 有效的数据引脚 操 作
0 0
AD15~AD0(一个总线周期同时访问奇体和偶
体,从奇地址单元读/写字数据的高8 位,从偶地
址单元读/写字数据的低8 位)
从偶地址读/写一个
字
6
1 0 AD7~AD0
从偶地址读/写一个
字节
0 1 AD15~AD8
从奇地址读/写一个
字节
0 1
1 0
AD15~AD8(第一个总线周期从奇字数据的低8
位)
AD7~AD0(第二个总线周期从偶地址单元读/写
字数据的高8 位)
从奇地址读/写一个
字
10.简述8086系统复位后各寄存器的状态。 2分
答:
8086 系统复位后,指令指针(IP)为0000H;CS 寄存器为FFFFH,其他寄存器为0000H;
指令队列清空。
11. 简述8086系统中为什么一定要有地址锁存器?需要所存哪些信息? 2分
答:
8086 的A19/S6~A16/S3 和AD15~AD0 是复用信号,需要地址锁存器将地址信息保存
起来,为外接存储器或外设提供地址信息。
需要锁存的信号是:地址信号及BHE 信号。
12.8086CPU基本的总线周期包括几个时钟周期? 1分
答:
8086CPU 一个基本的总线周期包含4 个时钟周期:T1、T2、T3 和T4 。
在T1 状态,M/ IO有效,指示CPU 访问的是存储器还是外设,之后CPU 往多路复用
总线上发出地址信息,以指出要寻址的存储单元或外设端口的地址。在T1 状态,CPU 还必
须在ALE 引脚上输出一个正脉冲作为地址锁存信号。BHE信号也在T1 状态送出,它用来
表示数据传送的字宽。
在T2 状态,CPU 从总线上撤销地址,使总线的低16 位浮空,置成高阻状态,为传输
数据作准备。总线的最高4 位(A19~A16)用来输出本总线周期的状态信息。读信号RD或
写信号WR在T2 状态变为有效,指示CPU 将进行哪种操作(读或写)。
在T3 状态,多路总线的高4 位继续提供状态信息,而多路总线的低16 位上出现由CPU
读出的数据或者CPU 从存储器或端口写入的数据。
在T4 状态和前一个状态的交界处,CPU 对数据总线进行采样,获得数据,总线周期结
束。
13.什么情况下需要插入TW周期?应该插入多少个TW取决于什么因素? 2分
答:
在有些情况下,外设或存储器速度较慢,不能及时地配合CPU 传送数据。这时,外设
或存储器会通过“READY”信号线在T3 状态启动之前向CPU 发一个“数据未准备好”信
号,于是CPU 会在T3 之后插入1 个或多个附加的时钟周期TW。取决与外设或存储器速度。
14.答:
两种操作时序的不同之处发生在T1 和T2 状态。
① 在T1状态,读周期:DT/R应输出低电平;写周期:DT/R应输出高电平。
② 在T2 状态,读周期:RD有效,而WR无效,AD15~AD0 为高阻态;写周期:RD
变为无效,而写信号WR变为有效,AD15~AD0 在地址撤销之后立即送出要写入存储器或
外设端口的数据。
7
15.答:
在最小模式下,读信号RD、ALE 和DT/R、DEN等信号直接由CPU 给出;
在最大模式下,总线控制器8288 根据
2 1 S ,S 和
0 S 状态信号产生读信号MRDC和IORC,
ALE 和DT/R、DEN 也是由8288 发出的,而且DEN 信号的极性与CPU 在最小模式下发
出的DEN信号正好相反。
8
第4章 习题答案
1.什么叫寻址方式?8086CPU支持哪几种寻址方式? 2分
答:
指令中关于如何求出操作数有效地址的方法称为寻址方式。
8086CPU支持多种寻址方式,根据操作数的类型及来源大致分为3类:数据寻址、转移地址寻址和I/O寻址。
2.答:
8086汇编指令可以采用7种基本的数据寻址方式:①立即寻址;②寄存器寻址;③直接寻址;④寄存器间接寻址;⑤寄存器相对寻址;⑥基址变址寻址;⑦相对基址变址寻址。
与存储器寻址方式(后5种)相比,寄存器寻址方式最快。
3.内存寻址方式中,一般只指出操作数的偏移地址,那么,段地址如何确定?如果要用某个段寄存器指出段地址,指令中应该如何表示? 2分
答:
如果指令中没有用前缀说明操作数存放在哪个段,则操作数默认存放在数据段。
8086系统允许操作数存放在代码段、堆栈段或附加段。此时,就需要在指令中利用前缀指明段超越。例如:
MOV ES:[1225H],AX
4.在8086系统中,设DS=1000H,ES=2000H,SS=1200H,BX=0300H,SI=0200H,BP=0100H,VAR的偏移量为0600H,请指出下列指令的目标操作数的寻址方式,若目标操作数为存储器操作数,请计算它们的物理地址是多少? 2分
1)MOV BX,12 2)MOV [BX],12 3)MOV ES:[SI],AX 4)MOV VAR,8
5)MOV [BX][SI],AX 6)MOV 6[BP][SI],AL 7)MOV [100H],DX 8)MOV 6[BX],CX 9)MOV VAR+5,AX
答:
(1)寄存器寻址方式
(2)寄存器间接寻址方式,PA=10300H
(3)寄存器间接寻址方式,PA=20200H
(4)直接寻址方式,PA=10060H
(5)基址变址寻址方式,PA=10500H
(6)相对基址变址寻址方式,PA=12300H
(7)直接寻址方式,PA=11000H
(8)__________寄存器相对寻址方式,PA=10306H
(9)直接寻址方式,PA=10065H
5.判断指令对错。如果是错误的,请说明原因答。 2分
1)XCHG CS,AX
2)MOV [BX],[1000H]
3)XCHG BX,IP
4)PUSH CS √
5)POP CS
6)IN BX,DX √
7)MOV BYTE[BX],1000
8)MOV CS,[1000H]
9)MOV BX,OFFSET VAR[SI] √
10)MOV AX,[SI][DI]
11)MOV COUNT[BX][SI],ES:AX
6.试述以下指令的区别。 2分
1)MOV AX,3000H 与 MOV AX,[3000H]
2)MOV AX,MEM 与 MOV AX,OFFSET MEM
3)MOV AX,MEM 与 LEA AX,MEM
4)JMP SHORT L1 与 JMP NEAR PTR L1
5)CMP DX,CX 与 SUB DX,CX
6)MOV [BP][SI],CL 与 MOV DS:[BP][SI],CL
答:
(1)源操作数的寻址方式不同。MOV AX,3000H指令的源操作数采用的是立即数寻址方式,MOV AX,[3000H]指令的源操作数采用的是直接寻址方式。
(2)指令执行后,AX的值不同。MOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而MOV AX,OFFSET MEM指令执行后,AX得到的是MEM单元的地址。
(3)指令不同。MOV AX,MEMMOV AX,MEM指令执行后,AX得到的是MEM单元的内容,而LEA AX,MEM指令执行后,AX得到的是MEM单元的地址。
(4)转移的类型不同。JMP SHORT L1指令实现的是段内转移,而JMP NEAR PTR L1指令实现的是段间转移。
(5)指令的执行结果不同。CMP DX,CX指令执行后,DX的值不变,而SUB DX,CX指令执行后,DX的值是两寄存器值的差。
(6)操作数所在段不同。MOV [BP][SI],CL指令访问的是堆栈段的存储单元,而MOV DS:[BP][SI],CL指令访问的是数据段的存储单元。
7.答:
(1)MOV BYTE PTR [BP],200指令执行后,(58200H)=200H
(2)MOV WORD PTR [BX],2000指令执行后,(22400H)=2000H
8.答:
当前栈顶地址是:FE00H:2010H;
执行PUSH BX指令后,栈顶地址变为:FE00H:200EH,栈顶2字节内容是:3457H。
9.答:
(1)(DX)=3C62H,CF=1
(2)(DX)=03C6H,CF=0
(3)(DX)=18A0H,CF=1
(4)(DX)=2BC6H,CF=0
(5)(DX)=18B7H,CF=1
(6)(DX)=BCC5H,CF=0
10.答:
(AX)
CF
ZF
OF
SF
PF
(1)
134EH
0
0
0
0
1
(2)
0821H
0
0
0
0
1
(3)
F142H
1
0
0
1
1
(4)
0A69
1
0
0
1
1
(5)
F596
-
-
-
-
-
(6)
0A69
0
0
0
0
1
11.设AX和BX是符号数,CX和DX是无符号数,若转移目标指令的标号是NEXT,请分别为下列各项确定CMP和条件转移指令。 5分
1)CX值超过DX转移 2)AX值未超过BX转移
3)DX为0转移 4)CX值等于小于DX转移
答:
(1) CMP CX,DX
JA NEXT
(2)CMP AX,BX
JNA NEXT
(3)CMP DX,0
JZ NEXT
(4)CMP CX,DX
JBE NEXT
12.阅读分析下列指令序列
ADD AX,BX
JNO L1
JNC L2
SUB AX,BX
JNC L3
JNO L4
JMP L5
若AX和BX的初值分别为以下5种情况,则执行该指令序列后,程序将分别转向何处(L1-L5中的哪一个)?
1)AX=14C6H, BX=80DCH
2)AX=0B568H,BX=54B7H
3)AX=42C8H, BX=608DH
4)AX=0D023H,BX=9FD0H
5)AX=9FD0H, BX=0D023H
答:
(1) 程序转向L1。
(2) 程序转向L1。
(3) 程序转向L2。
(4) 程序转向L5。
(5) 程序转向L5。
13.答:
因为普通运算指令执行的是二进制数的运算,而BCD码是十进制数,所以,需要对运算结果进行十进制调整。
在做BCD码的加、减和乘法运算时,十进制调整指令放在运算指令之后;而作BCD码的除法运算时,在运算指令之前用十进制调整指令对被除数进行调整。
14.答:
MOV Cl,3
10
SHR bx,cl
15.答:(略)
16.答:
17.答:
DATA SEGMENT
COUNT=100H
ORG 1000H
D_DATA DB COUNT DUP(?)
ORG 2170H
S_DATA DB COUNT/5 DUP(1,2,3,4,5)
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV ES,AX
LEA SI,S_DATA
LEA DI,D_DATA
MOV CX,COUNT
REP MOVSB
MOV AL,1
MOV CX,COUNT
LEA DI,D_DATA
AGAIN:
CMP BYTE PTR [DI],AL
JNZ NEXT
MOV BYTE PTR [DI],
NEXT:
INC DI
LOOP AGAIN
EXIT: MOV AH,4CH
INT 21H
CODE ENDS
END START
11
18. 答:
19. 答:
CODE SEGMENT
ASSUME CS:CODE
START:
MOV AX,5678H
MOV DX,1234H
NOT AX
NOT DX
ADD AX,1
ADC DX,0
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
;本程序未考虑溢出的情况。
DATA SEGMENT
A1 DW 5050H
A2 DW ? ;存A1的反码
A3 DW ? ;存A1的补码
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AX,A1
NOT AX
MOV A2,AX
INC AX
MOV A3,AX
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
12
20. 答:
21. 答:
DATA SEGMENT ;AT 5000H
ORG 3481H
DAT DB 12H
DB ?,?,?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
MOV AL,DAT
NEG AL
MOV DAT+1,AL
MOV AL,DAT
XOR AL,00001111B
MOV DAT+2,AL
MOV AL,DAT
OR AL,11110000B
MOV DAT+3,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
COUNT=1000
DATA SEGMENT
ORG 1000H
DAT DB 10 DUP (12H,-5,-3,0,-128,56H,98H,4,128,200)
ORG 2000H
MINDAT DB ?
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,DAT
MOV CX,COUNT
DEC CX
MOV AL,[SI]
NEXT: INC SI
CMP AL,[SI]
JLE ISMIN
MOV AL,[SI]
ISMIN:
LOOP NEXT
MOV MINDAT,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
13
22. 答:
DATA SEGMENT
STRING1 DB hELLO!
COUNT1=$-STRING1
STRING2 DB hEL1O!
COUNT2=$-STRING2
IM DB MATCH$
NM DB NOT MATCH$
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA
START:
MOV AX,DATA
MOV DS,AX
LEA SI,STRING1
LEA DI,STRING2
MOV CX,COUNT1
MOV BX,COUNT2
CMP CX,BX
JNZ DISPNOTMATCH
NEXT:
MOV AL,[SI]
MOV AH,[DI]
CMP AL,AH
JNZ DISPNOTMATCH
INC SI
INC DI
LOOP NEXT
ISMATCH:
MOV DX,OFFSET IM
MOV AH,9
INT 21H
JMP EXIT
DISPNOTMATCH:
MOV DX,OFFSET NM
MOV AH,9
INT 21H
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
14
23. 答:
24. 答:
DSEG SEGMENT
DATA DB 5,6,7,8
DW ?
DATA2 DB 1,10,100,20
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV DX,0
MOV CX,4
LEA SI,DATA
LEA DI,DATA2
NEXT:
MOV AL,[DI]
MOV BL,[SI]
CALL DOMUL
ADD DX,AX
INC DI
INC SI
LOOP NEXT
MOV WORD PTR DATA+4,DX
EXIT:
MOV AH,4CH
INT 21H
DOMUL PROC
MUL BL
RET
DOMUL ENDP
CODE ENDS
END START
MOV CX,100
MOV AX,SEG LIST
MOV DS,AX
MOV AX,SEG BLK
MOV ES,AX
LEA SI,LIST
ADD SI,CX
LEA DI,BLK
ADD DI,CX
STD
REP MOVSB
15
25. 答:
JMP SHORT LAB指令是一条双字节指令。这条指令取出后,(IP)=0102H,转移目标的偏移地址=(IP)+位移量。所以,转移目标的物理地址=(CS)╳16+(IP)+位移量。
(1)转移目标的物理地址=(CS)╳16+0158H
(2)转移目标的物理地址=(CS)╳16+0182H
(3)转移目标的物理地址=(CS)╳16+017AH
(4)转移目标的物理地址=(CS)╳16+01E2H
26. 答:
DSEG SEGMENT
BUFFER DW 8
DB 12345678
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV CX,BUFFER
SAR CX,1
LEA SI,BUFFER
MOV DI,SI
ADD DI,2
AGAIN:
ADD SI,2
MOV AL,[SI]
AND AL,0FH
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
SAL BYTE PTR [SI+1],1
OR AL,BYTE PTR [SI+1]
MOV [DI],AL
INC DI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
DSEG SEGMENT
ORG 10H
DAT DB 10
DB ?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AL,DAT
MOV BL,AL
SAL BL,1
ADD AL,BL
MOV CL,2
SAL BL,CL
ADD AL,BL
MOV DAT+1,AL
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
16
27. 答:
28. 答:
29. 答:
DSEG SEGMENT
ORG 10H
DAT DB 10H,20H
DB ?,?
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
MOV AL,DAT
MOV AH,DAT+1
MOV CL,3
SAR AX,CL
MOV DAT+2,AL
MOV DAT+3,AH
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
DSEG SEGMENT
BLOCK DW 8 DUP (10H,20H,-3,-9)
DSEG ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DSEG
START:
MOV AX,DSEG
MOV DS,AX
LEA SI,BLOCK
MOV CX,32
AGAIN:
MOV AX,[SI]
CMP AX,0
JNS NEXT
NEG AX
MOV [SI],AX
NEXT:
INC SI
INC SI
LOOP AGAIN
EXIT:
MOV AH,4CH
INT 21H
CODE ENDS
END START
17
DSEG SEGMENT
ORG 3030H
DAT DW 1234H,-1234H
展开阅读全文