自考
4-18 编写能完成下列要求的程序:测试字节数据STATUS,若其中位1、3、5有一位是 “1”,程序就转至ROUT1;若有二位是“1”,就转向ROUT2;若三位都是“1”,就转向ROUT3;若这三位没有一位是“1”,就转向ROUT4。
【程序流程图】 开始 0 D5= ?
0 1 D3= ? 0 D3= ? 0 1 D1= ? 1 0
D1= ? 0 D1= ? 1 1 1 ROUT1 ROUT2 ROUT3 ROUT4
【解答】DATA SEGMENT
STATUS DB 0FFH ;要测试的字节数据 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX
MOV AL,STATUS ;取测试数据在AL中 TEST AL,20H ;D5=1?
JZ L1 ;D5=0,转L1 TEST AL,08H ;D5=1,D3=1? JZ L2 ;D5=1,D3=0,转L2 TEST AL,02H ;D5=D3=1,D1=1?
JZ ROUT2 ;D5=D3=1,D1=0,转ROUT2 JMP ROUT1 ;D5=D3=D1=1,转ROUT1 L1: TEST AL,08H ;D5=0,D3=1? JZ L3 ;D5=D3=0,转L3
L2: TEST AL,02H ;D5=0,D3=1,D1=1?或D5=1,D3=0,D1=? JZ ROUT3 ;D5=0,D3=1,D1=0,转ROUT3 JMP ROUT2 ;D5=0,D3=D1=1,转ROUT2 L3: TEST AL,02H ;D5=D3=0,D1=1?
JZ ROUT4 ;D5=D3=D1=0,转ROUT4 JMP ROUT3 ;D5=D3=0,D1=1,转ROUT3
;以下是程序转向的4路分支,为调试程序所需,在各分支中对应D5、D3、D1中有3个1、2个1、1个1及全为0,分别在屏幕输出3、2、1、0提示信息。
ROUT1: MOV DL,'3' MOV AH,2 INT 21H JMP TEXT ROUT2: MOV DL,'2' MOV AH,2 INT 21H JMP TEXT ROUT3: MOV DL,'1' MOV AH,2 INT 21H JMP TEXT ROUT4: MOV DL,'0'
第16页【本课后解答题共32页】
自考
MOV AH,2 INT 21H
TEXT: MOV AH,4CH INT 21H CODE ENDS
END START
4-19 STRING字符串中的最大长度为80个字符,字符串的结束用字符$表示。编写程序在该字符串中查找是否有空格符(ASCII码为20H),若有就将第一个空格在字符串中的位置(00~4FH)存入POST单元;若无空格则将-1存入POST。
【解答】DATA SEGMENT
POST DB ? DATA ENDS
EDATA SEGMENT
STRING DB 78 DUP(4), ' ' ,'$' EDATA ENDS
CODE SEGMENT
ASSUME CS:CODE,DS:DATA,ES:EDATA START: MOV AX,DATA MOV DS,AX
MOV AX,EDATA MOV ES,AX LEA DI,STRING MOV CX,80 MOV AL,'$' CLD
REPNZ SCASB ;查找'$'结束字符 MOV SI,OFFSET STRING
SUB DI,SI ;计算字符串的长度
MOV CX,DI ;将计算出的字符串长度送入计数器CX
PUSH CX ;CX入栈保存,是为了最后计算‘空格’符在字符串中的位置 MOV AL,20H ;在字符串中搜索20H(空格) LEA DI,STRING REPNE SCASB
JNZ L1 ;没搜索到转L1
POP BX ;搜索到了,计算该空格在字符串中的位置 SUB BX,CX DEC BX
MOV POST,BL ;将计算出的位置值存入POST单元 JMP TEXT
L1: MOV BYTE PTR POST,-1 ;没搜索到,将-1存入POST单元 TEXT: MOV AH,4CH NT 21H CODE ENDS
END START
4-20 BUFFER字节数组中存有一组无序列字节数据,列的长度表示在BUFFER的第一个字节中。KEY中为一个字节数据。编写程序在BUFFER中查找有无KEY,若有就结束,若没有就将KEY 加入到BUFFER中去,并修改列长度。
【解答】
DATA SEGMENT
BUFFER DB 0AH,100,200,190,10,34,56,78,8,1,2 KEY EQU 66 DATA ENDS
CODE SEGMENT
第17页【本课后解答题共32页】
自考
ASSUME CS:CODE,ES:DATA START: MOV AX,DATA
MOV ES,AX ;ES段的定义是SCASB指令需要的默认段 LEA DI,BUFFER ;数据缓冲区首地址存入DI 寄存器
MOV CL,ES:BUFFER;计数器用CX,计数初值在BUFFER的第一个字节中 MOV CH,0
LP: MOV AL,KEY ;要搜索的关键字存入AL寄存器 INC DI ;地址指针指向数据 CLD ;地址增量修正 REPNE SCASB ;搜索 JZ EXIT ;搜索到了结束
ADD DI,CX ;没搜索到,将KEY加入到BUFFER末尾单元中去 MOV ES:[DI],AL
INC BUFFER ;修改列长度(加1) EXIT: MOV AH,4CH INT 21H CODE ENDS
END START
4-21 如上题,但若有,就在BUFFER中删去该数据,且修改列长度,若无就结束。 【解答】DATA SEGMENT
BUFFER DB 0AH,100,200,190,10,34,56,78,8,1,2 KEY EQU 200 DATA ENDS
CODE SEGMENT
ASSUME CS:CODE,ES:DATA START: MOV AX,DATA MOV ES,AX LEA DI,BUFFER
MOV CL,ES:BUFFER MOV CH,0 LP: MOV AL,KEY INC DI CLD
REPNE SCASB
JNZ EXIT ;没有搜索到转结束
LP1: MOV AL,ES:[DI] ;搜索到了则删除该数据,并将后边所有数据前移 MOV ES:[DI-1],AL INC DI LOOP LP1
DEC BUFFER ;修改列长度(减1) EXIT: MOV AH,4CH INT 21H CODE ENDS
END START
4-22 用子程序结构编程计算 S=1!+2!+3!+……+8!
【解答】 CODE SEGMENT
ASSUME CS:CODE
START: MOV BX,0 ;BX为阶乘和,初值为0 MOV CX,0 ;CX为N值,初值为0 LP0: MOV AX,1 ;AX为N!值,初值为1 MOV DL,1 ;DL为乘数,初值为1 INC CX PUSH CX
CALL SUBA ;调用求阶乘子程序
ADD BX,AX ;阶乘求和1!+2!+…… +8! POP CX
第18页【本课后解答题共32页】
自考
CMP CX,8 ;8次循环结束否? JNZ LP0 ;N<8 继续 MOV AH,4CH ; N=8 结束 INT 21H
SUBA PROC ;求N!的子程序 SUB1: MUL DL INC DL LOOP SUB1 RET SUBA ENDP CODE ENDS
END START
第五章 存储器及其接口
5-1 解释题
(1) DRAM
【解答】 动态RAM存储器。 (2) EPROM
【解答】可擦除可编程的ROM存储器。 (3) 部分译码
【解答】CPU 的地址线没有全部参加地址译码,地址范围有重叠。这种片选控制方法称为部分地址译码。
(4) 全译码
【解答】CPU的所有地址线全部参加地址译码存储芯片中任意单元都有唯一确定的地址,这种片选控制方法称全地址译码。
(5) \对准好\的字
【解答】 是指8086CPU的规则存放字,即要访问的16位字的低8位字节存放在偶存储体中,只要一个总线周期就能完成对该字的访问。 (6) 偶存储体
【解答】8086系统中1M字节的存储器地址空间实际上分成两个512K字节的存储体, 由所有偶地址组成的存储体叫做偶存储体。
(7) 存储器芯片的存储容量
【解答】存储器芯片的容量一般是指存储器可以容纳的二进制信息量,用nK×m位来表示。 (8) 存储器芯片的存取时间
【解答】从启动一次存储器操作,到完成该操作所经历的时间。 (9) 字节编址
【解答】 即一个存储地址对应8位存储单元。 (10) 3:8译码器
【解答】 有3个“选择输入端”C、B、A,3个“使能输入端”G1、G2A、G2B,以及8个输出端Y0~Y7的译码器,常用于存储器的外部地址译码。
5-2 写出下列容量的RAM芯片片内的地址线和数据线的条数。
【解答】2K×8位 的芯片,片内的地址线有11条 4K×8位 的芯片,片内的地址线有12条 512K×4位 的芯片,片内的地址线有19条 64K×1位 的芯片,片内的地址线有16条
5-3 以6116为例,说明SRAM应该具有那些引脚,并说明各引脚的功能、特点。
【解答】6116是一种2K×8位的高速静态CMOS随机存储器芯片,它有24条引脚:
(1)11条片内地址线引脚A0~A10 分成7条行地址线、4条列地址线,用于进行X、Y双向地址译码,以选中2048个存储单元中的一个8位存储字。
(2)8条数据线引脚I/O1~I/O8 用于数据的读出和写入。
(3)电源线引脚 VCC和地线 GND 为芯片加入+5V工作电源、接地线。
(4)3条控制线 片选信号CE、写允许信号WE、输出允许信号OE ,这3个信号的组合控制6116芯片的工作方式为读出、写入、或是高阻态。
第19页【本课后解答题共32页】
自考
5-4 以2164为例,说明DRAM应该具有那些引脚,并说明各引脚的功能、特点。
【解答】2164是一种64K×1位的动态CMOS随机存储器芯片,它有16条引脚:
(1)芯片的地址线引脚8条A0~A7 2164片内要寻址64K个单元,需要16条地址线,为了减少封装引脚,地址线分成两部分——8位行地址和8位列地址,片内有地址锁存器,因此8条行地址线和8条列地址线分时复用A0~A7引脚,由行地址选通信号RAS和列地址选通信号CAS进行地址锁存控制。然后16位地址信号经译码选种64K个存储单元中的一个单元。
(2)数据线引脚2条 输入数据线DIN 、输出数据线DOUT 是分别独立的。
(3)读写控制信号引脚WE 当WE=高电平时,为读出,所选中单元的内容经输出三态缓冲器从DOUT 引脚读出;当WE=低电平时,为写入,DIN引脚上的内容经输入三态缓冲器对选中单元进行写入操作。
(4)行地址选通信号RAS和列地址选通信号CAS 对行地址和列地址进行锁存的选通控制信号,同时也起“片选”的作用,2164芯片没有专门的片选信号引脚。 (5)电源及地线引脚3条 VDD、VSS、GND。
5-5 以2732为例,说明EPROM应该具有那些引脚,各引脚在读出和编程时的工作有何区别?
【解答】2732是一种4K×8位的可擦除可改写的ROM存储器芯片,它有24条引脚: (1)12条地址线A11~A0, (2)8条数据线 O7~O0,
(3)2 条控制线 CE和OE,CE为芯片允许线,用来进行片选;OE为输出允许线,用来把输出数据送上数据线,只有这两条线同时有效时,才能从输出端得到读出的数据。
另外在编程方式时,OE引脚复用为VPP引脚,加21V电压。 (4)电源和地线 VCC、GND。
各引脚在读出和编程时的工作主要有下列区别:
在读出时,给出要读单元的地址,CE和OE同时为低电平,从O7~O0读出数据。
在编程时,给出要写单元的地址,CE 为低电平,OE/VPP引脚加21V高电压,从O7~O0输入要写的数据。
5-6 简要说明DRAM和SRAM的主要区别时什么?各有何优缺点?
【解答】DRAM和SRAM的存储原理不同,DRAM利用电容电荷存储的工作原理,由于MOS管栅极分布电容的电荷会随着电容器的漏电而逐渐消失,必须每隔一定的时间对存储的信息进行刷新,这就要求必须配置刷新电路;SRAM是利用触发器存储的工作原理,写入SRAM的信息不会丢失,不需要刷新。
SRAM集成度较低、容量较小、功耗较大、存取速度较快;DRAM集成度高、容量较大、功耗低、存取速度较慢。一般微机系统中的内存都采用DRAM。
5-7用下列芯片构成存储系统,各需要多少个RAM芯片?需要多少位地址作为片外地址译码?设系统为20位地址线,采用全地址译码方式。 【解答】
(1)512×4位RAM构成16KB的存储系统,需芯片64片,片内地址线9条,因此需要11位地址线作为外部地址译码。
(2)1024×1位RAM构成128KB的存储系统,需芯片1024片,片内地址线10条,因此需要10位地址线作为外部地址译码。
(3)2K×4位RAM构成64KB的存储系统,需芯片64片,片内地址线11条,因此需要9位地址线作为外部地址译码。
(4)64K×1位RAM构成256KB的存储系统,需芯片32片,片内地址线16条,因此需要4位地址线作为外部地址译码。
5-8 简要说明微机存储系统的层次结构。
【解答】在现代高性能的计算机系统中,对存储器既要求速度很快,又要求容量很大,同时价格又要合理,按照现在所能达到的技术水平,仅仅用一种技术组成单一的存储器是不可能满足上述要求的,只有采用层次结构,把几种存储技术结合起来,才能解决存储器高速度、大容量和合理成本三者的矛盾。
辅助存储器高速缓冲存主存储器 微机系统典型的层次结构是 CPU 寄存器 (磁盘) 储器Cache
5-9有一全译码电路如图5-24所示,试计算RAM芯片的地址范围。
第20页【本课后解答题共32页】
百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说综合文库自考《微型计算机原理及应用》课和习题答案(4)在线全文阅读。
相关推荐: