A组B组1D6D5D4D3D2D1D0C口低4位,1:输入,0:输出B口,1:输入,0:输出方式选择:0:方式0,1:方式1C口高4位,1:输入,0:输出A口,1:输入,0:输出方式选择:00:方式0,01:方式1,1×:方式2
、位设置控制字 0D6D5D4D3D2D1D0无关1:置位,0:复位位01234567D300001111D200110011D10101010121
2
九、 假设系统扩展一片8255A供用户使用,其A、B、C和控制口地址依次为9000H、9001H、9002H、9003H,请设计一个用8255A 与打印机接口的电路连接图(只须画出打印机与8255A的连接部分)并给出8255A初始化程序段和输出打印程序段及相应注释。 8255A方式控制字格式: 1 D6 D5 D4 D3 D2 D1 D0
C口下半部 1 输入 特征位
0 输出
B口选择 1 输入 0 0 方式0 A组方式 0 输出 0 1 方式1 B组方式 0 方式0 1 ×方式2
1 方式1
C口上半部 1 输入 1 输入 A口选择
0 输出 0 输出
8255的通道C置复位控制字定义如下: 0 X X X D3 D2 D1 D0 D7=0—C通道置复位标志位,D6D5D4—无效,D3D2D1—通道C的位选择,D0=1/0—C口置/复位控制。
方式1输出,端口C状态字:
D7 D6 D5 D4 D3 D2 D1 INTEA I/O I/O INTRA INTEB OBFB OBFA
打印机接口的信号与时序:
DATA0~7
STROBE BUSY ACK
D0 INTRB
22
微机原理习题参考答案
一、 选择填空题
1、A 2、A 3、B 4、D 5、C 6、B 7、A 8、C 9、B 10、B 11、C 12、B 13、B 14、A 15、A 16、D 17、B 18、C 19、D 20、C 21、A 22、C 23、C 24、B 25、A 26、D 27、C 28、C 29、A 30、A 31C 32C
33、C 34、B 35、B 36、C 37、C 38、B 39、C 40、B 41、C 42、D 43、B 44、C 45、B 46、D 47、B 48、D 49、C 50、D 51、 B 52、B 53、C 54、 C 55、B 56、A 57、C 58、C 59、B 60、C 61、A 62、C 63、A 64、D 65、A 66、D 67、C 68、C 69、A 70、C 71、A 72、C 73、C 74、C 75、D 76、A 77、A 78、B 79、B 80、A 81、C 82、C 83、B 84、D 85、A 86、C
二、 判断改错题
1、× 类型号由8259提供==》类型号为2 2、× 可以是字节或字操作==》只能是字操作 3、× 需要两个8286==》三个 8282 4、√
5、× X的反码是11110111==》X的反码是00001000 6、× F07FFH ==》F0FFFH
7、× IF=1 ==》一条指令结束(或 NMI ==> INTR) 8、√
9、× DEN ==》 ALE 10、× DF ==》TF
11、×,8253的方式控制中,有一项计数锁存操作,计数锁存是为了方便读取计数值,并不影响对计数器的计数工作。 12、√
13、×,一个指令周期由1个或若干个总线周期组成。 14、√
15、× HLDA ==》 INTR 16、√
17、× 软硬中断==》可屏蔽中断 18、× 控制总线==》数据总线
三、填空题
1.64K 2. 查询 3. SP 4. F0FFFH 5. 高阻 6. 3 7. 2 8. 32 9. 64 10. 相对基址变址 11、add al,[bx+di] 12、sub ax,ax 13、8E9F0H 14、0FFFF H 15、2个 16、当前CS 、IP的值
四、分析题 1、AX=805BH,BX=0C0FBH,CF=0
2、依次存放FCH、FEH、FFH 3、小写字母转换成大写字母 4、AX=CDEFH,BX=ABCDH 5、
23
6、该子程序实现AL←AH×10+AL,AH←0。
7、 and dx,7 Sub dx,7 jz next mov ax,1 jmp done
next: mov ax,-1 done: ?
8、 ① mov cx,50 ② inc si 五、
(1) 进位标志。若运算结果的最高位产生一个进位或借位,则CF=1,否则CF=0。
(2) 溢出标志。若在算术运算中带符号数的运算结果,当字节运算时大于+127或小于-128;字运算时大于+32767或小于-32768,则OF=1,否则OF=0。
(3) 辅助进位标志。若在字节操作时,由低半字节向高半字节有进位或借位;或在字操作时,由低位字节向高位字节有进位或借位,则AF=1,否则AF=0。 (4) 零标志。若运算结果为0,则ZF=1,否则ZF=0。
(5) 方向标志。若用指令置DF=1,则串操作指令就为自动减量指令,也就是从高地址向低地址处理串;若DF=0,则串操作指令就为自动增量指令,也就是从低地址向高地址处理串。 六、
(1) 程序功能:将字符串STR(长度20字节)中所有’&’用’$’代替。 LEA BX , STR ;置地址指针
MOV CX , 20 ;置计数器初值 LP : CMP [BX] , ‘&’ ;取字符与’&’比较 JNZ NEXT ;不是’&’转NEXT
MOV [BX] , ‘$’ ;是’&’则用’$’替换 NEXT : INC BX ;地址加1
LOOP LP ;CX-1不为0继续 HLT (2)从STRIN单元开始有一字符串,程序求以’*’作为结束标志字符串的长度,存入COUNT
单元。
24
七、
1)PC口应设为输入方式。
2)8255的PC口地址为212H和216H。
3)检查按键,若同时按下S1和S0键,则退出程序,否则将读入开关状态所对应的数
字量从PA口送出显示。
4)将程序第8行改为:
KEYIN : MOV DX , 211H 5)将程序第12行改为: CMP AL , 7FH
6)在程序的第14、15行之间加一条 NOT AL 指令。 八、
工作方式控制字是对8255A的三个端口的工作方式及功能进行说明,即进行初始化,写在程序的开头,控制字的最高位D7=1。按位置位/复位控制字只对C口某一位(不能同时对几位)输出高电平(置位)或低电平(复位)进行控制(对输入无作用),控制字的最高位D7=0。 PC2置位程序段:
MOV DX , 303H MOV AL , 05H OUT DX , AL
九 的
解答:8255A 与打印机接口的电路连接图 ;用8255A方式0与打印机接口 ;8255A的初始化
打印机 8255A mov dx,9003h ;控制端口地址:9003H
mov al,10000001B ;方式控制字:91H out dx,al ;A端口方式0输出,C端口上输出、下输入 DATA0~7 PA0~PA7 mov al,00001111B;端口C的复位置位控制字,
使PC7=1
PC7 STROBE out dx,al
BUSY PC2 ;打印子程序:查询 printc proc push ax push dx
prn: mov dx,9002h ;读取端口C
in al,dx ;查询打印机状态 and al,04h ;PC2=BUSY=0?
jnz prn ;PC2=1,打印机忙,则循环等待
mov dx,9000h ;PC2=0,打印机不忙,则输出数据 mov al,ah
out dx,al ;将打印数据从端口A输出 mov dx,9003h ;从PC7送出控制低脉冲 mov al,00001110B ;置STROBE*=0 out dx,al
nop ;产生一定宽度的低电平 nop
mov al,00001111B ;置=1
25
printc
out dx,al ;最终,STROBE*产生低脉冲信号 pop dx pop ax ret endp
26