《《微机原理与接口技术(第2)》习题答案.pdf》由会员分享,可在线阅读,更多相关《《微机原理与接口技术(第2)》习题答案.pdf(43页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、习题11.什么是汇编语言,汇编程序,和机器语言?答:机器语言是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合。汇编语言是面向及其的程序设计语言。在汇编语言中,用助记符代替操作码,用地址符号或标号代替地址码。这种用符号代替机器语言的二进制码,就把机器语言编程了汇编语言。使用汇编语言编写的程序,机器不能直接识别,要由一种程序将汇编语言翻译成机器语言,这种起翻译作用的程序叫汇编程序。2.微型计算机系统有哪些特点?具有这些特点的根本原因是什么?答:微型计算机的特点:功能强,可靠性高,价格低廉,适应性强、系统设计灵活,周期短、见效快,体积小、重量轻、耗电省,维护方便。这些特点是由于微型计算
2、机广泛采用了集成度相当高的器件和部件,建立在微细加工工艺基础之上。3.微型计算机系统由哪些功能部件组成?试说明“存储程序控制”的概念。答:微型计算机系统的硬件主要由运算器、控制器、存储器、输入设备和输出设备组成。“存储程序控制”的概念可简要地概括为以下几点:计 算 机(指硬件)应由运算器、存储器、控制器和输入/输出设备五大基本部件组成。在计算机内部采用二进制来表示程序和数据。将编好的程序和原始数据事先存入存储器中,然后再启动计算机工作,使计算机在不需要人工干预的情况下,自动、高速的从存储器中取出指令加以执行,这就是存储程序的基本含义。五大部件以运算器为中心进行组织。4.请说明微型计算机系统的工
3、作过程。答:微型计算机的基本工作过程是执行程序的过程,也就是CPU自动从程序存放的第1个存储单元起,逐步取出指令、分析指令,并根据指令规定的操作类型和操作对象,执行指令规定的相关操作。如此重复,周而复始,直至执行完程序的所有指令,从而实现程序的基本功能。5.试说明微处理器字长的意义。答:微型机的字长是指由微处理器内部一次可以并行处理二进制代码的位数。它决定着计算机内部寄存器、ALU和数据总线的位数,反映了一台计算机的计算精度,直接影响着机器的硬件规模和造价。计算机的字长越大,其性能越优越。在完成同样精度的运算时,字长较长的微处理器比字长较短的微处理器运算速度快。6.微机系统中采用的总线结构有几
4、种类型?各有什么特点?答:微机主板常用总线有系统总线、I/O总线、I SA总线、I P CI总线、A GP总线、I E E E 1 3 94总线、U S B总线等类型。7.将下列十进制数转换成二进制数、八进制数、十六进制数。(4.75)1 0=(0 1 0 0.1 1)2=(4.6)8=(4.0 )6(2.2 5)1 0=(1 0.0 1)2=(2.2)8=(2.8)1 6(1.875)i o=(1.1 1 1)2=(1.7)8=(1.E)1 68.将下列二进制数转换成十进制数。(1 0 1 1.0 1 1)2=(H.6)i o(1 1 0 1.0 1 0 1 1)2=(1 3.58)i o(
5、1 1 1.0 0 1)2=(7.2)i o9.将下列十进制数转换成8421BCD码。2 0 0 6=(0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0)BCD 1 2 3.456=(0 0 0 1 0 0 1 0 0 0 1 1.0 1 0 0 0 1 0 1 0 1 1 0)B C D10.求下列带符号十进制数的8 位基2码补码。+1 2 7补=0 1 1 1 1 1 1 1 口 补=1 1 1 1 1 1 1 1-1 2 8补=1 0 0 0 0 0 0 0+1 补=0 0 0 0 0 0 0 111.求下列带符号十进制数的16位基2码补码。+655补=0 0 0 0 0
6、0 1 0 1 0 0 0 1 1 1 1-1 补=1 1 1 1 1 1 1 1 H i ll 1 1 0-3 2 1 2 =1 1 1 1 0 1 1 1 0 1 0 1 1 1 0 0+1 0 0 =0 0 0 0 0 0 0 0 0 1 1 0 0 1 0 0习 题21.8086 CPU在内部结构上由哪几部分组成?各部分的功能是什么?答:8086 CPU内部由两大独立功能部件构成,分别是执行部件和总线接口部件。执行部件负责进行所有指令的解释和执行,同时管理有关的寄存器。总线接口部件是CPU在存储器和I/O设备之间的接口部件,负责对全部引脚的操作。2.简 述8086 CPU的寄存器组织。
7、答:8086 CPU内部共有14个16位寄存器,按用途可分为数据寄存器,段寄存器,地址指针与变址寄存器和控制寄存器。数据寄存器包括累加器,基址寄存器,计数器,和数据寄存器。段寄存器用来存放各分段的逻辑段基值,并指示当前正在使用的4个逻辑段。地址指针与变址寄存器一般用来存放主存地址的段内偏移地址,用于参与地址运算。控制寄存器包括指令寄存器和标识寄存器。3.试 述8086 CPU标志寄存器各位的含义与作用。答:标志寄存器是16位的寄存器,但实际上8086只用到9位,其中的6位是状态标识位,3位是控制标识位。状态标志位分别是CF,PF,AF,ZF,S F,和OF;控制标志位包括DF,IF,TFoCF
8、:进位标志位。算数运算指令执行后,若运算结果的最高位产生进位或借位,则C F=1,否则CF=0。PF:奇偶标志位。反应计算结果中1的个数是偶数还是奇数。若运算结果的低8位中含有偶数个1,则PF=1;否则PF=0.AF:辅助进位标志。算数运算指令执行后,若运算结果的低4位 向 高4位产生进位或借位,则AF=1;否则AF=0.ZF:零标志位。若指令运算结果为0,则ZF=1;否则ZF=0。SF:符号标志位。它与运算结果最高位相同。OF:溢出标志位。当补码运算有溢出时,OF=1;否 则OF=0。DF:方向标志位。用于串操作指令,指令字符串处理时的方向。IF:中断允许标志位。用来控制8086是否允许接收
9、外部中断请求。TF:单步标志位。它是为调试程序而设定的陷阱控制位。4.8086 CPU状态标志和控制标志有何不同?程序中是怎样利用这两类标识的?8086的状态标志和控制标识分别有哪些?答:状态标志位反应了当前运算和操作结果的状态条件,可作为程序控制转移与否的依据。它们分别是CF,PF,AF,ZF,S F,和OF。控制标志位用来 控 制CPU的操作,由指令进行置位和复位,控制标志位包括DF,IF,TFo5.将 1001 1100 和 1110 0101 相加后,标识寄存器中 CF,PF,AF,ZF,SF,OF各为何值?答:CF=1,PF=1,AF=1,ZF=0,SF=1,OF=06.什么是存储器
10、的物理地址和逻辑地址?在8086系统中,如何由逻辑地址计算物理地址?答:逻辑地址是思维性的表示,由段地址和偏移地址联合表示的地址类型叫逻辑地址。物理地址是真实存在的唯一地址,指的是存储器中各个单元的单元号。在8086系统中,物理地址=段地址X10H+偏移地址7.段寄存器CS=1200H,指令指针寄存器IP=4000H,此时,指令的物理地址为多少?指向这一地址的CS指 和IP值是唯一的吗?答:此指令的物理地址=1200Hxl0H+4000H=16000H并且指向这一物理地址 的CS值 和IP值并不是唯一的。8.在 8086 系统中,逻辑地址 FFFF:0001,00A2:37F 和 B800:1
11、73F 的物理地址分别是多少?答:逻辑地址FFFF:000100A2:3TFB800:173F物理地址FFFF1H00D9FHB973FH9.在 8086系统中,从物理地址388H开始顺序存放下列3 个双字节的数据651AH,D761H 和 007BH,请问物理地址 388H,389H,38AH,38BH,38CH和 38DH 6 个单元中分别是什么数据?答:(388H)=1AH,(389H)=65H,(38AH)=61H,(38BH)=DTH,(38CH)=7BH,(38DH)=00H10.8086微处理器有哪几种工作模式?各有什么特点?答:8086微处理器有最大和最小工作模式。在最小模式下
12、:8086 CPU直接产生全部总线控制信号(DT/R,DEN,ALE,M/IO)和命令输出信号(RD,WR,INTA)并提出请求访问总线的逻辑信号HOLD,HLDAo在最大工作模式下,必须配置8288总线控制器,并且根据8086提供的状态信号S2,SI,S 0,输出读写控制命令,可以提供灵活多变的系统配置,以实现最佳的系统性能。11.简述 8086 引脚信号中 M/IO,DT/R,RD,WR,ALE,DEN 和 BHE 的作用。答:M/IO:输出信号,高电平时,表示CPU与存储器之间数据传输;低电平时,表示CPU与I/O设备之间数据传输。DT/R:控制其数据传输方向的信号。DT/R=1时,进行
13、数据发送;DT/R=0时,进行数据接收。RD:CPU的读信号,RD=0时,表示8086为存储口或I/O端口读操作。WR:CPU的写信号,WR=0时,表示8086为存储口或I/O端口写操作。ALE:地址存锁信号,在 T1能时刻有效。DEN:数据选通信号,当DEN有效时,表示允许传输。BHE:数据总线允许信号,与A0组合使用,表示是否访问奇地址字节。12.简述8086读总线周期和写总线周期和引脚上的信号动尖态变化过程。8086的读周期时序和写周期时序的区别有哪些?答:在 8086读周期内,有关总线信号的变化如下:M/后:在整个读周期保持有效,当进行存储器读操作时,M/石为高电平;当进行I/O 端口
14、读操作时,M/方为低电平。AWS6 A/S 3:在 期间,输 出 CPU要读取的存储单元或I/O 端口的地址高4 位。T2期间输出状态信息S6-S3。痂/S7:在 T1期间,输 出 BHE有效信号(痂 为 低 电 平),表示高8 位数据总线上的信息可以使用,航信号通常作为奇地址存储体的体选信号(偶地址存储体的体选信号是最低地址位A。)。T2T4期间输出高电平。A D.AD0:在 期间,输 出 CPU要读取的存储单元或I/O 端口的地址A1 5-A0O T2期间为高阻态,T3 T4期间,存储单元或I/O 端口将数据送上数据总线。CPU从 AD5 AD。上接收数据。ALE:在 T1期间地址锁存有效
15、信号,为一正脉冲,系统中的地址锁存器正是利用该脉冲的下降沿来锁存A19/S6-A16/S3,AD15 AD。中 的 20位地址信息以及BHE。而:T2期间输出低电平送到被选中的存储器或I/O 接口,注意,只有被地址信号选中的存储单元或I/O 端口,才会被RD 信号从中读出数据(数据送上数据总线A D1 5-A D0)ODT/元:在整个总线周期内保持低电平,表示本总线周期为读周期,在接有数据总线收发器的系统中,用来控制数据传输方向。丽:在 12期间输出有效低电平,表示数据有效,在接有数据总线收发器的系统中,用来实现数据的选通。总线写操作的时序与读操作时序相似,其不同处在于:A DB AD。:在
16、T2 T4期间送上欲输出的的数据,而无高阻态。而:从 T2 T 4,而引脚输出有效低电平,该信号送到所有的存储器和I/O 接口。注意,只有被地址信号选中的存储单元或I/O 端口才会被标信号写入数据。DT/元:在整个总线周期内保持高电平,表示本总线周期为写周期,在接有数据总线收发器的系统中,用来控制数据传输方向。习题31.假 定(DS)=2000H,(ES)=21 OOH,(SS)=1500H,(SI)=00A0H,(BX)=01 OOH,(BP)=0010H,数据变量VAL的偏移地址为0050H,请指出下列指令原操作数是什么寻址方式,其物理地址是多少?(1)MOVAX,0ABH(2)MOVAX
17、,|100H(3)MOVAX,VAL(4)MOVBX,SI(5)MOVAL,VALfBX(6)MOVCL,BXISI|(7)MOVVALSI,BX(8)MOVBPSI,100答:(1)立即数寻址,无物理地址(2)直接寻址,物理地址=2000Hxl0H+100H=20100H(3)直接寻址,物理地址=2000Hxl0H+0050H=20050H(4)寄存器间接寻址,物理地址=2000Hxl0H+00A0=200A0H(5)相 对 寄 存 器 寻 址,物 理 地 址=2000Hx 10H+(0050+0100H)=20150H(6)基 址 加 变 寻 址,物 理 地 址=2000Hxl0H+(01
18、00H+00A0H)=201A0H(7)寄存器寻址,无物理地址(8)立即数寻址,无物理地址2.已 知(SS)=0FFA0H,(SP)=00B 0H,先执行两条把 8057H 和 OF79H 分别进栈的PUSH指令,再执行一条POP指令,试画出堆栈区和S P内容变化的过程示意图。答:“8057H”进栈,则S P自动从00B0H指向00B2H,“0F79H”进栈,则SP自动从00B2H指向00B4H;执行一条POP指令,“0F79H”被弹出栈,SP从00B4H指向00B2H。图略。3.设有关寄存器及存储单元的内容如下:(DS)=2000H,(BX)=0100H,(AX)=1200H,(SI)=00
19、02H,(20100H)=12H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H.试说明下列各条指令单独执行后相关寄存器或存储单元的内容。(1)MOV AX,1800H(2)MOV AX,BX(3)MOV BX,1200H(4)MOV DX,1100BX(5)MOV BXSI,AL(6)MOV AX,1100BXSI答:(l)(AX)=1800H(2)(AX尸0100H(3)(BX)=4C2AH(4)(DX)=4C2AH(5)(20102H)=56H(6)(A
20、X)=65B7H4.写出实现下列计算的指令序列。(1)Z=W+(X+Z)(2)Z=W-(X+6)-(R+9)答:(l)MOV AX,ZADDAX,XADDAX,WMOVZ,AX(2)MOVAX,WADDX,6SUBAX,XADDR,9SUBAX,RMOVZ,AX5.若在数据段中从字节变量TABLE相应的单元开始存放了 0 15的平方值,试写出包含XLAT指令的指令序列查找N(0 1 5)中的某个平方数。答:LEA BX,TABLEMOV AL,CLXLAT6.写出实现下列计算的指令序列。(1)Z=(W*X)/(R+6)(2)Z=(W-X)/5*Y)*2答:MOV AX,WIMUL XADDR,
21、6IDIVRMOVZ,AX(2)MOVAX,WSUBAX,XMOVBL,5IDIVBLCBWIMULYMOVBX,2IMULBXMOVZ,AX7.假定(DX)=1100100110111001B,CL=3,C F=1,试确定下列各条指令单独执行后D X的值。(1)SHR DX,1(2)SHL DL,1(3)SAL DH,1(4)SAR DX,CL(5)ROR DX,CL(6)ROL DL,CL(7)RCR DL,1(8)RCL DX,CL答:(l)(DX)=0110 0100 1101 1100B(2)(DX)=1100 1001 0111 0010B(3)(DX)=1001 0010 101
22、1 1001B(4)(DX)=1111 1001 0011 0111B(5)(DX)=0011 1001 0011 011 IB(6)(DX)=0100 1101 1100 1110B(7)(DX)=11100100 1101 1100B(8)(DX)=1001 0011 0111 001 IB8.已知程序段如下:MOV AX,1234HMOV CL,4ROL AX,CLDEC AXMOV CX,4MUL CXINT 20H试问:(D每条指令执行后,A X寄存器的内容是什么?(2)每条指令执行后,CF,SF及 Z F 的值分别是什么?(3)程序运行结束后,A X 及D X 寄存器的值为多少?答
23、:MOV AX,1234H(AX)=1234H,CF=0,SF=O,ZF=0MOVROLCL,4AX,CL(AX)=2341H,CF=1,SF=O,ZF=0DECAX(AX)=2340H,CF=l,SF=O,ZF=OMOVMULLCX,4e x(AX)=8D00H,CF=0,SF=1,ZF=0INT结束后20H,(DX)=0000H,(AX)=8000H试分析下列程序段:ADD AX,BXJNC L2SUB AX,BXJNC L3JMP SHORTL5如果 AX,B X 的内容给定如下:AX BX(1)14C6H 80DCH(2)B568H 54B7H问该程序在上述情况下执行后,程序转向何处。
24、答:(1)转 到 L 2处(2)转 到 L 3处习题4i.下列语句在存储器中分别为变量分配多少字节空间?并画出存储空间的分配图。VARI DB 10,2VAR2 DW 5 DUP(?),0VAR3 DB HOW ARE YOU?3 DUP(1,2)VAR4 DD-1,1,0答:字节空间:V A R I:2;V A R 2:1 2;V A R 3:1 3;V A R 4:8 o存储空间的分配图:QJAu nu Au nud.nJnn Jn JQ Ju1DDDDdnn JJ nJ QJ1.IL0 A 。2 0。00 00 00 00 00-00 00 00 00 00 00 48 4F .H 05
25、7 2。41 52 45 20 59 4F-55 3F 24 F F F F F F F F 01 I I A R E V 00?$00。0朋 朋 00 00 00 00-00 00 0。00 的。0 册 .B 8 D 3 13 8 E D 8 B 4 4 C C D-2 1 C 0 75 03 E 9 7 B F F 5 E .L.!.u.A2.假定VARI和 VAR2为字变量,LAB为标号,试指出下列指令的错误之处。(1)ADD VARI,VAR2(3)JMP LABCX(5)MOV 1000H,100(2)SUB AL,VARI(4)JNZ VARI(6)SHL AL,4答:(1)在算术
26、运算指令中,两个操作数不能同时为存储器寻址方式(2)AL为字节,VAR1为字变量,字长不相等;(3)错误1:寄存器相对寻址方式,只能使用基址或变址寄存器,不能使用CX寄存器。错误2:汇编格式错误,无法判段是段内转移还是段间转移。(4)转向地址应为标号,不能是变量;(5)目的操作数的类型不确定;(6)SHL指令中,当所移位数超过1 时,必须用CL取代所移位数。3.对于下面的符号定义,指出下列指令的错误。Al DB?A2 DB 10KI EQU 1024(1)MOVK1,AX(2)MOV Al,AX(3)CMP Al,A2(4)KI EQU 2048答:(1)K1为常量,不能用MOV指令赋值;(2
27、)A1为字节,A X 为字变量,类型不一致;(3)A1和 A2同为存储器寻址方式,不符合语法规则;(4)K1重新赋值前,必须用PURGE释放。4.数据定义语句如下所示:FIRST DB 90H,5FH,6EH,69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)FORTH DB 4 DUP(?)自FIRST单元开始存放的是一个四字节的十六进制数(低位字节在前),要求:编一段程序将这个数左移两位后存放到自SECOND开始的单元,右移两位后存放到自THIRD开始的单元,求补后放到FORTH开始的单元。(注意保留移出部分)答:DATA SEGMENTFIRST DB 90H,
28、5FH,6EH,69HSECOND DB 5 DUP(?)THIRD DB 5 DUP(?)FORTH DB 4 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA SI,FIRSTLEA DI,SECONDMOV CX,2CLC;左移2 位MOV AX,WORD PTR;AX=5F90H为低十六位数据INC SIINC SIDX,WORD PTR;DX=696EH为高十六位数据PUSHPUSH;保存原有的高十六位数据;保存原有的低十六位数据DX,CL;将高位数据不带进位循环左移两位,即高
29、2 位数据在D L 的低 2位DL,03H;让口1 中仅保存移出的高2 位数据MOV DI+4,DL;将移出的高2 位数据放入SECOND中的最高单元中ROL AX,CL;将低位数据不带进位循环左移两位,即 A X 的高2 位在A L 的低 2 位AND AL,03H;让 A L 中仅保存移出的A X 高 2 位数据MOV BL,AL;将 A L 中的数据放入B L 中保存POP AX;弹出原有的低十六位数据POP DX;弹出原有的高十六位数据SHL DX,CL;将高位数据算术逻辑左移2 位SHL AX,CL;将低位数据算术逻辑左移2 位OR DL,BL;将 A X 中移出的高2 位数据放入D
30、 X 的低2 位MOV WORD PTR DI,AXMOV WORD PTR DI+2,DX;右移2 位LEA SI,FIRSTLEA DI,THIRDMOV CX,2CLCMOV AX,WORD PTR SI;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR SI;DX=696EH 为高十六位数据PUSH DX;保存原有的高十六位数据PUSH AX;保存原有的低十六位数据ROR AX,CL;将低位数据不带进位循环右移两位,即低2 位数据在AH的高2 位AND AH,0C0H;让 A H 中仅保存移出的低2 位数据PUSH CXMOV CX,6SHR AH
31、,CLPOP CXMOV DI,AH;将移出的低2 位数据放入THIRD中的最低单元中ROR DX,CL;将低位数据不带进位循环左移两位,即 A X 的高2 位在A L 的低 2 位MOV WORD PTR DI+l,AXANDDH,OCOH;让口11 中仅保存移出的D X 低 2 位数据MOVBL,DH:将 D H 中的数据放入B L 中保存POPAX;弹出原有的低十六位数据POPDX;弹出原有的高十六位数据SHRDX,CL;将高位数据算术逻辑左移2 位SHRAX,CL;将低位数据算术逻辑左移2 位ORAH,BL;将 D X 中移出的低2 位数据放入A X 的高2 位MOV WORD PTR
32、 DI+3,DX;求补LEA SI,FIRSTLEA DI,FORTHMOV AX,WORD PTR SI;AX=5F90H 为低十六位数据INC SIINC SIMOV DX,WORD PTR SI;DX=696EH为高十六位数据XOR AX,OFFFFH;将低十六位取反XOR DX,OFFFFH;将高十六位按位取反CLCADD AX,01H;低位加1,即可为原数的求补ADC DX,0;高位加低位加法时的进位MOV WORD PTR DI,AXMOV WORD PTR DI+2,DXMOV AH,4CHINT21HCODE ENDSEND START试编程序将内存从40000H到 4BFFF
33、H的每个单元中均写入55H,并再逐个单元读出比较,看写入的与读出的是否一致。若全对,则将AL置 7EH;只要有错,则将AL置 81H。答:DATA SEGMENTDAI DB 55HCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,4000HMOV DS,AXMOV CX,0C000HMOVBX,0000HMOVAH,55HNEXT1:MOVbyte ptrBX,AHINCBXLOOPNEXT1MOVBX,0000HMOVCX,0C000HMOVAL,81HNEXT2:MOVAH,BXCMPAH,55HJNZEXITINCBXLOOPNEXT2MOV
34、AL,7EHEXIT:MOVAH,4CHINT 21HCODEENDSENDSTART6.在当前数据段4000H开始的128个单元中存放一组数据,试编程序将它们顺序搬移到AOOOH开始的顺序128个单元中,并将两个数据块逐个单元进行比较;若有错将BL置 00H;全对则将BL置 FFH,试编程序。答:DATA SEGMENTORG 400HDAI DB 128 DUP(?)ORG 0A00HDA2 DB 128 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,ES:DATASTART:MOV AX,DATAMOVDS,AXLEASI,DA1LE
35、ADI,DA2MOVCX,128AGAIN:MOVAL,SIINCSIINCDILOOP AGAINLEASI,DAILEADI,DA2MOVCX,128NEXT:MOVAL,SIMOVBL,DICMPAL,BLJNZERRORINC!SIINC DIMOVBL,0FFHLOOPNEXTJMPEXITERROR:MOVBL,OOHEXIT:MOVAH,4CHINT21HCODEENDSENDSTART7.设变量单元A、B、C存放有3个数,若3个数都不为零,则求3个数的和,存放在D中;若有一个为零,则将其余两个也清零,试编写程序。答:DATA SEGMENTA DB?B DB?C DB?DATA
36、ENDSCODESEGMENTASSUME CS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXCMPA,OOHJNZLP1MOVB,0MOVC,0JMPLP4LP1:CMPB,00HJNZLP2MOVA,0MOVC,0JMPLP4LP2:CMPC,00HJNZLP3MOVA,0MOVB,0JMPLP4LP3:MOVAL,AADDAL,BADDAL,CMOVAH,4CHLP4:1NT 21HCODEENDENDSSTART8.有一个100个字节的数据表,表内元素已按从大到小的顺序排列好,现给定一元素,试编程序在表内查找,若表内已有此元素,则结束;否则,按顺序将此元素插
37、入表中适当的位置,并修改表长。答:DATA SEGMENTBUFF DB 100 DUP(?)DAI DB(?)LENGTH DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOVMOVMOVMOVMOVFINDO:CMPJZINCLOOPMOVMOVAX,DATADS,AXSI,0AL,DA1CX,100BUFFSI,ALEXITSIFINDODI,99SI,0COMPARE:CMPJGMOVMOVDECCMPJNLJMPINSERT:MOVMOVEXIT:MOVBUFFDI,ALINSERTBL,BUFFDIBUFFDI+1,BLD
38、IDI,SICOMPAREEXITBUFFDI+1,ALLENGTH,101AH,4CHINT 21HCODE ENDSEND START9.内存中以FIRST和 SECOND开始的单元中分别存放着两个16位组合的十进制(BCD码)数,低位在前。编程序求这两个数的组合的十进制和,并存到以THIRD开始的单元。答:DATA SEGMENTFIRST DD 34341212HSECOND DD 78785656HTHIRD DB?,?,?,?DATA ENDSCODE SEGMENTLOOP AGAINASSUMECS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXL
39、EA SI,FIRSTLEA DI,SECONDLEA BX,THIRDMOV CX,4CLCAGAIN:MOV AL,BYTE PTRSIMOV DL,BYTE PTRDIADC AL,DLDAAMOV BYTE PTRBX,ALINC SIINC DIINC BXJC AAMOV BYTE PTRBX,0JMP EXITAA:MOV BYTE PTRBX,1EXIT:MOV AH,4CHINT21HCODE ENDSEND START10.编写一段程序,接收从键盘输入的10个数,输入回车符表示结束,然后将这些数加密后存于BUFF缓冲区中。加密表如下:输入数字:0,1,2,3,4,5,6,7
40、,8,9;密码数字:7,5,9,1,3,6,8,0,2,4o答:DATA SEGMENTM1TAB DB 7591368024,CONT EQU S-MITABBUFF DB 10DUP(?),YUANWEN DB 10DUP(?),DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATAANDSTART:MOVAX,DATAMOVDS,AXMOVSI,0MOVCX,CONTINPUT:MOVAH,1INT21HCMPAL,13JZ EXITAL,OFHMOV YUANWENSI,ALINC SILOOP INPUTEXIT:LEABX,MITABMOV CX,S
41、IMOV SI,0JIAMI:MOV AL,YUANWENSIXLAT MITABMOV BUFFSI,ALINC SILOOP JIAM1MOV AH,4CHINT 21HCODE ENDSEND START1 1.试编程序,统计由4 0 0 0 0 H 开始的1 6 K 个单元中所存放的字符“数,并将结果存放在D X 中。答:DATA SEGMENTDAI DB ABUFF DB 4000H DUP(?)DATA ENDSCODE SEGMENT”的个ASSUMECS:CODE,DS:DATASTART:MOVAX,4000HMOVDS,AXMOVBX,0MOVCX,4000HFIND:M
42、OVAL,BXMOV BL,DAICMP AL,BLJNZ NEXTINC DXNEXT:INC SILOOP FINDMOV AH,4CHINT 21HCODE ENDSEND START12.在当前数据段(D S),偏移地址为DATAB开始的顺序80个单元中,存放着某班80个同学某门考试成绩。按如下要求编写程序:(1)编写程序统计2 9 0 分;80分 89分;70分 79分;60分 69分,V60分的人数各为多少,并将结果放在同一数据段、偏移地址为BTRX开始的顺序单元中。(2)试编程序,求该班这门课的平均成绩为多少,并放在该数据段的AVER单元中。答:DATA SEGMENTBUFF
43、DW 80 DUP(?)DA9DB 0DA8DB 0DA7DB 0DA6DB 0DA5DB 0AVER DB 0DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,80COMPARE:MOV BX,0CMPBUFFBX,90JB LP8INCDA9JMPNEXTLP8:CMPBUFFBX,80JBLP7INCDA8JMPNEXTLP7:CMPBUFFBX,70JBLP6INCDA7JMPNEXTLP6:CMPBUFFBX,60JBLP5INCDA6JMPNEXTLP5:INCDA5JMPNEXT
44、NEXT:INCBXLOOP(COMPAREMOVCX,80XORAX,AXMOVBX,00SUM:ADDAX,BUFFBXINCBXLOOP,LP1MOVCL,80DIVCLMOV AVER,ALMOV AH,4CHINT 21HCODE ENDSEND START13.编写一个子程序,对 AL中的数据进行偶校验,并将经过校验的结果放回AL中。答:RETJIOUPROCPUSHCXPUSHBXXORAH,AHPUSHAXMOVCL,7LOOP1:SARAL,1ADCAH,0LOOPLOOP1MOVAL,AHXORAH,AHMOVBL,2DIVBLMOVBL,AHPOPAXRORBL,1ORA
45、L,BLPOPBXPOPCXJIOU ENDP1 4.利用上题的子程序,对80000H开始的256个单元的数据加上偶校验,试编程序。CODE SEGMENTASSUMECS:CODESTART:MOVAX,8000HMOVDS,AXMOVsi,0MOVCX,256LP:MOVAL,SICALLJIOUMOVSI,ALINCSILOOPLPMOVAH,4CHINT21HJIOUPROCPUSH CXPUSH BXXOR AH,AHPUSH AXMOV CL,7LOOP1:SAR AL,1ADC 1 H,0LOOPLOOP1MOVAL,AHXORAH,AHMOVBL,2DIVBLMOVBL,AHP
46、OPAXRORBL,1OR AL,BLPOP BXPOP CXRETJIOU ENDPCODE ENDSEND START习题51.试述DRAM的工作特点;与SRAM相比有什么长处和不足之处;说明它的使用场合。答:DRAM,动态随机存取存储器,需要不断的刷新,才能保存数据。而且是行列地址复用的,许多都有页模式。SRAM,静态的随机存取存储器,加电情况下,不需要刷新,数据不会丢失,而且一般不是行列地址复用的。与 SRAM相比,DRAM价格便宜、速度慢、容量大,主要用来做主存储器,存储程序和数据;而 SRAM主要用在Cache等对速度要求高的情况。2.试述DRAM刷新过程和正常读/写过程的区别。答
47、:刷新是以行为单位进行,且刷新过程中不能进行读写操作。3.设有一个具有20位地址和32位字长的存储器,问:(1)该存储器能存储多少个字节的信息?(2)如果存储器由512K*8位SRAM芯片组成,需要多少片?(3)需要多少位作芯片选择?答:(1)该存储器能存储4MB的信息。(2)需要8 片512K*8位的芯片。(3)需要1位做芯片选择。4.对于8Kx8位RAM组成的存储器系统,若某组的起始地址为08000H,则其末地址为多少?答:末地址为9FFF.5.在8088最大方式系统总线上扩充设计4K字节的SRAM存储器电路。SRAM芯片选用Intel 2 1 1 4,起始地址从0000H。试画出此存储器
48、电路与系统总线的连接图。答:系统容量为4K*8bit,芯片容量为lK*4bit,所以一共需要8 片芯片连接图如下:6.在 8088系统总线上扩充设计8K的字节的SRAM存储器电路。SRAM芯片选用Intel 6264,起始地址从04000H开始,译码器电路74LS138.(1)计算此RAM存储区的最高地址是多少。(2)画出此存储器电路与系统总线的连接图。答:(1)最高地址是05FFFH。(2)7.在 8086最小方式系统总线上扩充设计16K字节的SRAM存储器电路,SRAM芯片选用Intel 6264,起始地址从04000H开始,译码器电路采用74LS138.(1)计算此RAM存储区域的最高地
49、址是多少(2)画出此存储器与总线的连接图。答:(l)07FFFH(2)习题6i.什么是接口?接口的功能是什么?答:位于主机与外设之间,用来协助完成数据传送和控制任务的逻辑电路称为接口电路,接口电路对输入/输出过程起缓冲和联络作用。接口的功能是有,数据缓冲功能,联络功能,寻址功能,预处理功能,中断管理功能。2.计算机对I/O端口编址时通常采用哪两种方法?在 8086系统中,用哪种方法进行编址?答:I/O端口和存储器统一编址;I/O端口单独编址。8086系统采用I/O端口单独编址方式。3.C P U 和输入/输出设备之间传送的信息有哪几类?答:数据信息,控制信息,与状态信息。4.简 述 C P U
50、 与外设进行数据交换的几种常用方式.答:程序控制方式:特点是依靠程序的控制来实现主机和外设的数据传送,可分为无条件传送方式和查询方式.中断控制方式:每次输入和输出一个数据,CPU都要检查外设的状态。直接存储器存取控制方式:cpu不参加数据传送,而 是 由DMA控制器来实现内存与外设,外设与外设之间的直接传递。通道方式:可以实现对外围设备的统一管理和外围设备与内存之间的数据传送。外围处理机方式:由PPU独立于主机工作,减少了 CPU控制外设的负担。5.无条件传送方式适用哪些场合?查询方式原理怎样?主要用在什么场合?答:无条件传送适用于简单的输入/输出设备,CPU可以随时读取或接受状态。这些信号变