一、简答题
1、若I/O端口地址分别为60H和600H,分别写出向这两个端口写入命令字12H
的程序段。
2、设STRING1,STRING2分别是数据段和附加数据段中定义的字符串,长度为100
个字节。
START: MOV AX, DATA
MOV DS, AX
MOV ES, AX
CLD
LEA SI, STRING1
LEA DI, STRING2
MOV CX, 100
REPZ CMPSB
JNE NO
YES: MOV AL, 0FFH
JMP DISP
NO: MOV AL, 0
NEXT:。
说明该程序段完成什么功能?
在何种情况下,AL=0?
在何种情况下,AL=0FFH?
3、某数据段中存放了两个字数据:1234H和5678H,已知DS=1000H,数据存放
的偏移地址分别为2000H和3001H,试画图说明它们在存储器中的存放情况。
若要读取这两个字,分别需要几个总线周期?
4、在8086CPU内部,哪些寄存器可以和I/O端口打交道?若I/O端口地址分别
为30H和300H,分别写出向这两个端口写入命令字78H的程序段
5、在I/O接口电路中,按存放信息的类型,端口可分为哪几类?分别说出CPU
对这些端口实行读操作还是写操作?
6、根据要求,写出相应的汇编指令
(1)、清除以寄存器BX间接寻址的存储器字单元的内容
(2)、将AX的低字节置成全‘1’,高字节不变
(3)、将BX的高字节变反,低字节不变
(4)、将AL寄存器的高4位和低4位数据互换
(5)、将CX的高字节清0,低字节不变
7、假设8254的端口地址为80H~83H,现要求计数器0实现的功能为:在外部
端产生一个频率为200Hz的方波信号。
已知外部时钟频脉冲信号的作用下,OUT
=40KHz,采用BCD码计数,试完成其初始化编程。
率f
CLK
8、中断类型号为20H,假定其对应的中断处理程序段如下,写出设置其中断向量的程序段。
INTRP PROC NEAR
STI
CLI
IRET
INTRP ENDP
9、假设并行接口芯片8255A的端口地址基址为300H,芯片的A1A0和地址总线的A2A1相连。
若引脚PC0平时为高电平,要求从PC0输出一个宽度为0.5ms的负脉冲,试写出相应的程序段,0.5ms的时间可调用延时子程序DELAY获得(假设延时子程序已编好)。
上的外部计数时频率为1MHz,该通道的最大定时时间是多10、若加在8254 CLK
1
少?
11、某中断处理程序的入口地址为23456H,放置在中断向量表中的位置为00020H,问此中断向量号为多少?入口地址在中断向量表中如何放置?
12、利用8255A方式0下工作,令其在PB1,PB2引脚产生如图所示波形,试编写相应程序,电路连接设定的8255A各端口地址分别是60H,61H,62H,63H.
波形延时时间调用延时1毫秒(D1MS)子程序实现。
13、假定中断类型号20H对应的中断处理程序的入口地址为0800H:1000H,写出设置其中断向量的程序片段。
14、假定8254芯片通道1初始化编程时,设为先读/写低字节,后读/写高字节,试写出对通道1的当前计数值进行锁存并读出的程序段。
(8254的端口地址为40H、41H、42H、43H)。
15、设有100个字节数据(无符号数),存放在数据段中EA=2000H开始的存储区内。
以下程序应能从该数据区中找出最大的一个数并存入同一数据段EA=2100H 的单元中,请完成该程序(在括号内填入适当的语句)。
(5分)
MAX: MOV BX,_______
M0V AL,[BX]
M0V CX,________
LOOP1: INC BX
CMP AL,[BX]
_________________
MOV AL,[BX]
LOOP2: DEC CX
JNZ __________
M0V _________,AL
16、写出下列指令中源操作数和目标操作数的寻址方式
(1)MOV ARRAY,AX
(2) MOV AX,[1000H]
(3) CMP BYTE PTR[BX],12H
(4) ADD AX,[BX][SI]
17、若AX=5555H,BX=FF00H,下列程序段:(3分)
AND AX,BX
XOR AX,AX
NOT BX
执行后,AX=_____,BX=_____,CF=_____。
二、分析设计题
1、8255A的端口地址为80H~83H,若A口接8个开关K
7~K
,B口接8个指
示灯LED
7~LED
,当开关合上时,相应的指示灯熄灭,断开时指示灯亮。
要求:
(1)分别写出每个端口的地址,(2)编写实现这种功能的程序段,(3)完成译码电路的设计及相应控制线的连接。
(假定只使用其中的10根地址线A9~A0)
2、在8088系统中,定时/计数器8254的基址为60H,已知外部计数时钟频率为1MHz,欲使8254产生周期为1S的对称方波信号,说明如何实现。
要求:(1)写出各个端口的地址,(2)写出相应通道的初始化程序段,(3)画出实现的示意图。
3、8255A并行接口的PA口同A/D转换器相连接,PB口同7段LED显示器连接,PA、PB口都工作于方式0。
(1)根据下图所示,写出使7段显示器显示0,1的代码。
(2)编制一程序段,从PA口读取数据,如果数据大于等于128,则7段LED显示器显示“1”,否则显示“0”。
(已知PA口地址为60H,PB口地址为61H)
4、已知某PC微机系统的I/O接口电路框图如图5-1所示。
试完成:(1)、根据图中接线,写出825
5、8254各端口的地址。
(2)、编写8255和8254的初始化程序段。
其中,8254的OUT1端输出100HZ 方波,8255的A口为输出,B口和C口为输入。
(3)、为8255编写一个I/O控制子程序片段,其功能为:每调用一次,先检测PC0的状态,若PC0=0,则循环等待;若PC0=1,可以从PB口读取当前开关S 的状态(0~7),送A口的PA0~PA7输出,通过LED显示(要求:Si闭合,对应的LEDi亮, Si断开,对应的LEDi灭)出来。
编写一个8255 I/O控制子程序片段:
三、编程题
1、已知在数据段以BUFF为首地址的存储区存放了10个有符号字节数据,要求:把其中的负数去除后,将剩下的正数重新存放在以PLUS为首地址的数据区中。
(要求写出完整的程序)
2、假设某商店有9种商品,它们的价格分别为:90元,60元,70元,55元,48元,30元,83元,35元,65元。
价格存放在ARRAY数组中,现要将每种商品提价5元,编写一完整的源程序计算每种商品提价后的价格,将结果存到NEW数组中。
3、已知在以ARRAY为首地址的数据存储区存放了10个有符号字节数据,试统计其中正数、负数和零的个数,并把统计的结果分别存放在PLUS、MINU和ZERO 字节单元中(要求写出完整的程序)。
4、已知在以BUFF为首地址的存储区存放了10个有符号字节数据,求出其中的最大值并把最大值存放在MAX字节单元(要求写出完整的程序)。