当前位置:文档之家› 8255问答题

8255问答题

1、(5分)下图中8255A工作在方式0下,请写出方式控制字,请画出图标明端口的输入/输出?2、(5分)试编写8255A初始化化程序段。

要求端口A工作在方式1输入方式;端口B工作在方式0输出方式;端口C的高4位配合端口A工作;低4位为输入线,8255A的口地址占用0D8H~0DFH,CPU为8086.(如果是5分题还要加上方式1下控制信号的作用)解:MOV AL , 0B1HOUT 0DEH , AL3、(5分)下面是8255A初始化程序,根据指令(1)说出8255A的工作状态。

(2)后两条指令的作用(8255A的地址是60H~63H)MOV AL , 0B0HOUT 63H , ALMOV AL , 09HOUT 63H , AL解:(1)8255A的A口工作于方式1输出方式,B口工作于方式0输出方式,C口工作于方式0输出方式。

(2)后两条指令作用设置PC4=14、(5分)编制程序使B口和C口工作在方式0输出方式,并使PB5和PC5输出低电平,而其它状态位不变。

设8255A的口地址为8CH~8FH,CPU为8088。

MOV AL , 80HOUT 8EH , ALIN AL, 81HAND AL, 11011111BOUT 8DH , ALMOV AL , 0AHOUT 8EH , AL5、(5分)设8255A芯片的端口地址为300H~303H,要求A组与B组工作于方式0。

其中:端口A是输入口,端口B是输出口,端口C的高4位为输出口,低4位为输入口,试编制初始化程序。

解:MOV DX , 303HMOV AL , 91HOUT DX , AL6、(5分)设8255的接口地址范围为03F8H~03FBH,A组B组均工作在方式0,A口作为数据输出口,C口低4位作为控制信号输入口,其它端口未使用,编写初始化程序。

解:MOV DX , 03FBHMOV AL , 81HOUT DX , AL7、(5分)若把一个十六进制数82装入8255A 的控制寄存器后,端口A 、端口B 、端口C 操作方式,输入/输出配置是什么?8、8255A 的方式选择字和置位/复位字应写到哪个端口?8255A 怎样区分这2个控制字? 答:8255A 有两类控制字:第一类为方式选择字,用于定义各端口的工作方式;第二类置位/复位控制字,实现对C 口的某一位进行置位/复位操作。

都写到控制端口,通过D7对2者进行区别。

D7=0,表示置位/复位控制字;D7=1,表示方式选择字。

9、端口A 的操作方式2,端口B 的操作方式0(输入),控制字以及端口状态10、端口A 的操作方式2,端口B 的操作方式1(输出)11、8255各端口可以工作在几种工作方式下?当端口A 工作在方式2时,端口B 和C 工作在什么方式下?答:8255各端口均可工作在方式0和方式1,而A 端口还可以工作在方式2下。

当A 端口工作在方式2下,端口B 可以工作在方式0或方式1,端口C 剩余端口只能工作在方式0。

12、下图中,把PPI 14的端口A 设置为输出端口,而将端口B 和端口C 设置为输入端口,且将三个端口设置为操作方式0,试编写一个程序段,使其拥有端口B 和端口C 的数据输入功能,计算出C-B ,计算结果在端口A 上输出。

解:MOV AL , 0BHOUT 3EH , ALIN AL , 36HMOV BL , ALIN AL , 3AHSUB AL , BLOUT 32H , AL13、(指令填空或功能说明)000D 7D 6D 5D 4D 3D 2D 1D 001011微机A用于发送数据的程序段MOV AX,0300HMOV ES,AXMOV BX,0MOV CX,3FFHMOV DX,303HMOV AL,10100000BOUT DX,ALMOV AL,00001001BOUT DX,ALMOV DX , 0300HMOV AL , ES:[BX]OUT DX , ALINC BXDEC CXLOOP0:MOV DX , 0302HLOOP1:IN AL , DXAND AL , 08HJZ LOOP1MOV DX , 0300HMOV AL , ES:[BX]OUT DX , ALINC BXDEC CXJNZ LOOP0微机B接收数据的程序段:MOV AX ,0400HMOV ES,AXMOV BX,0MOV CX , 3FFHMOV DX,303HMOV AL,10011000BOUT DX,ALMOV DX,302HOUT DX,ALLOOP0:MOV DX , 0302HLOOP1:IN AL , DXAND AL , 10HJNZ LOOP1MOV DX , 0300HIN AL , DXMOV ES:[BX] , ALMOV DX,303HMOV AL , 0OUT DX , ALNOPNOPMOV AL , 01HOUT DX , ALINC BXDEC CXJNZ LOOP014、8088CPU与8255A构成打印机接口,其电路原理图如下图,要求编写程序实现采用查询方法判断打印机状态,在打印机不忙(BUSY=0),将内存DA TA中的10个字符送到打印机打印,并向打印机发送一个脉冲(STB),通知打印机数据已送出。

解:DA TA SEGMENTTAB DB ’1234567890’DA TA ENDSCODE SEGMENTASSUME CS:CODE , DS:DA TASTART:MOV AX , DATAMOV DS , AXLEA BX , TABMOV CX , 10OUT 9BH , ALMOV AH , 0LP0:MOV AL , 0000 1111BOUT 9BH , ALLP1:IN AL , 9AHTEST AL , 0JNZ LP1MOV AL , [BX]OUT 98H , ALMOV AL , 0000 1110BOUT 9BH , ALINC BXLOOP LP0MOV AH , 4CHINT 21HCODE ENDSEND START15、下图为8088系统中有8255A实现开关控制LED灯亮灭的接口电路。

开关闭合,灯亮;A、B端口都工作在方式0。

试问:①8255A的口地址是多少?②编写程序实现功能,在所有开关打开时退出程序。

(写出源程序或填空或LED灯变为共阳级或开关打开则灯亮。

)CODE SEGMENTASSUME CS:CODESTART:MOV AL , 82HMOV DX , 313HOUT DX , ALLP:MOV DX , 311HIN AL , DXAND AL , 0FHJZ LP0MOV DX , 310HNOT ALOUT DX , ALJMP LPLP0:MOV DX , 310HNOT ALOUT DX , ALMOV AH , 4CHINT 21HCODE ENDSEND START16、如下图,8255A的PA口通过反相器后接至1位共阴极七段数码管的字型端,数码管的公共端接地。

PB口接4个开关。

如何编程实现读入开关状态,在数码管上显示相应的字符。

如输入1010,则数码管显示“A”。

设CPU为8088。

DA TA SEGMENTTAB DB 3FH,06H,5BH,4FHDB 66H,6DH,7DH,07HDB 7FH,6FH,77H,7CHDB 39H,56H,79H,71HDA TA ENDSCODE SEGMENTASSUME CS:CODE , DS:DA TASTART:MOV AX , DATAMOV DS , AXLEA BX , TABMOV AL , 82HMOV DX , 297H;为什么地址是297H,请从74LS138说明和8255方式控制字地址?OUT DX , ALLP:MOV DX , 295HIN AL , DXAND AL , 0FHXLATMOV DX , 294HNOT ALOUT DX , ALMOV AH , 0BHINT 21H ;读键盘状态CMP AL , 0JZ LP ;AL=0表示无键盘按下MOV AH , 4CHINT 21HCODE ENDSEND START;说明如果要显示“6”/“3”,PB3…PB0数值是什么,开关状态是什么,送到共阴极七段数码管的字型端数值是什么,PA7…PA0数值是什么?17、请说明8255方式1下A口/B口工作在输出/输入下,工作过程,引脚有效电平,输入输出方向?(给出引脚与C口连接情况)如果设置INTE A或INTE B如何设置?18、根据接口电路编制相应的程序,要求CPU为8088,用8255A构成3个LED发光管循环发亮,口地址为180H~183H,为什么地址是180H~183H,请从74LS138说明CODE SEGMENTASSUME CS:CODESTART:MOV AL , 80HMOV DX , 183HOUT DX , ALLP1: MOV AL , 0000 0001BLP2: MOV DX , 180HOUT DX , ALMOV CX , 8FFFHLP3: MOV AH , 0BHINT 21HCMP AL , 0JZ LP4LOOP LP3SHL AL , 1CMP AL , 0000 1000BJNZ LP2JMP LP1;请问LED灯显示是从上向下显示还是从下向上显示,如果改变显示方向,如何修改程序,哪些部分要替换掉,替换成什么?LP4: MOV AH , 4CHINT 21HCODE ENDSEND START18、•MOV DL , 0FCH ;读8255的A口地址•IN AL , DX ;读转换结果•INT 3 ;设置断点19、Stack segment stackDw 64 dup(?)Stack endsCode segmentAssume cs:codeStart: mov al , 82hout 63h , ala1: in al , 61hout 60h , aljmp a1code endsend start20、Stack segment stackDw 64 dup(?)Stack endsCode segmentAssume cs:codeStart: cliMov al , 086hout 63h , alMov al , 05hout 63h , alpush dsMov ax , 0000hMov ds , axMov ax , offset irq7 Add ax , 2000hMov si , 003chMov [si] , axMov ax , 0000hMov si , 003ehMov [si] , axpop dsin al , 21hand al , 7fhout 21h , ala1: stijmp a1irq7: in al , 61hout 60h , alin al , 20hout 20h , aliretcode endsend start。

相关主题