微机原理课后习题答案 下载本文

3.16 口02E0H的BIT2和BIT5同时为1,表示端口02E7H有一个字节型数据准备好可以

用以输入,当CPU从该端口读入数据后,02E0端口的BIT2和BIT5就不再同时为1;

只有当02E7H端口的数据再次准备好时,它们才会再次同时为1,据此编写从02E7H端口输入32个数据然后存入A1000H单元开始的区域。

MOV AX,0A000H MOV DS,AX MOV SI,1000H; 设置存储区地址 MOV CL,20H; 输入数据个数 BEGIN:MOV DX,0E20H IN AL,DX TEST AL,0010 0100B; 测试状态位 BIT5、BIT2 JZ BEGIN; 不同时为1继续测试 MOV DX,02E7H IN AL,DX; 输入数据 MOV [SI],AL; 存到指定区域 INC SI; 移动地址指针 LOOP BEGIN; 循环

HLT

3.17 在内存40000H开始的16K的单元中存放着一组数据,将其顺序搬移到起始地址为A0000H的区域。

解:利用字符串操作指令 MOVSB,16K即16*1024=3FFFH。

MOV MOV MOV MOV MOV MOV MOV

AX,4000H DS,AX AX,A000H ES,AX SI,0 DI,0 CX,3FFFH

CLD

REPMOVSB HLT

3.18 上题的基础上,将两个区域的数据逐个进行比较,若有错将BL置0,全对将BL置

FFH。

MOV MOV

AX,4000H DS,AX

MOV MOV MOV MOV MOV AX,A000H ES,AX SI,0 DI,0

CX,03FFH

CLD AAB: CMPSB JNZ LOOP AAB MOV

STOP BL,0FFH

JMP EX1 STOP: MOV BL,0; EX1: NOP

HLT

3.19 统计由40000H单元开始的16K个单元中所存字符‘A’的个数,统计结果存放在DX寄存器中。 MOV AX,4000H MOV DS,AX MOV SI,0; MOV CX,3FFFH; 数据个数 MOV DX,0;统计结果寄存器清零 XOR DX,DX CLD AAB: LODSB CMP AL,‘A’; 比较 JZ AAC;字符为‘A’转计数 LOOP AAB; 循环 JMP STOP; 处理完毕转结束 AAC: INC DX; 统计结果加1 DEC CX; 循环次数减1 JCXNZ AAB; CX<>0继续 STOP: HLT

3.20 编写对AL中的数据进行“偶校验”的一个过程,并将校验结果放入AL寄存器。

PJY

PROC NEAR PUSH AX PUSH BX PUSH CX PUSH DX

MOV AL,DAT AND AL,AL JNP PJY1

3.21

MOV AL,00H; 表示为偶

JMP EXIT

PJY1: MOV AL,FFH; 表示为奇 EXIT: POP DX PJY

POP CX POP BX POP AX RET ENDP DAT DB ?

对80000H开始的256个单元的数据加上偶校验。

ORG 100h

MOV AX,8000H MOV DS,AX

MOV SI,0

MOV CX,100H CLD

LODSB;(MOV AL,[SI] ;INC SI) TEST AL,AL JNP PAR1

JMP STOP OR AL,80H; MOV [SI-1],AL DEC CX JNZ PAR0 HLT

PAR0:

LOOP PAR0 PAR1: STOP:

4-1 某以8088为CPU的微型计算机内存RAM区为00000H ~3FFFFH,若采用6264、62256、

2164或21256各需要多片芯片? 解答: 8088 内存单元为8 bit,所以,从00000H 到3FFFFH,共需要214个byte,共214*8bit,也就是共占用16K byte空间。由于各种芯片的数据总线根数不同,所以在连接时要特别注意芯片的位数; 对于如下芯片:

6264 有8根数据线,13根地址线,故其容量为 213*8bit,即8Kbyte, 所以需要2片; 62256 有8根数据线,15根地址线,故其容量为 215*8bit,即32 Kbyte, 所以仅需要1片;尽管题目要求只需要16K的空间,但在使用62256时不得不使用1片。

2164 有8根数据线,12根地址线,故其容量为 212*8bit,即4Kbyte, 所以需要4片; 21256 有1根数据线,10根地址线(实际为20根,分两组),但由于仅有一根数据线,要构成八位的存储器至少需要8片,但总容量为8*256Bit,远远超过题目的要求。

4.2 利用全地址译码将6264接在8088的系统总线上,其所占的地址范围为BE000H~BFFFFH,试画出连接图。

解答:6264有13根地址线,连接时接到系统总线的低13位,即A0~A12, 其他7根地址线A19~A13的 地址译码输入应该为:1011 111 B,故而有如下的连接:

4.3

试利用6264 芯片,在8088系统总线上实现0000H~03FFFH的内存区域,试画出电路连接图。