1、课堂综合练习及参考答案课堂练习11. 写汇编程序片段,判断AL和BL寄存器的最高位,相同时转移到标号L001,否则继续(使用普通指令实现,不能改变AL和BL寄存器的值,且不能使用其它寄存器)。PUSH AXXOR AL, BLTEST AL, 80HPOP AXJZ L0012. 写汇编程序片段。寄存器AL存放的是温度(摄氏度,有符号数),将其转换为华氏度(华氏度 = 摄氏度1.8 + 32),取整数,结果存放在AX寄存器中。MOV BL, 9IMUL BL ; AL BL 商 AXMOV BX, 5XOR DX, DXIDIV BX ; DX:AX BX 商 AXADD AX, 323. 当
2、在主机中执行输入指令IN AL, DX时,ISA总线的控制总线中哪个信号有效? DX的值影响ISA总线的什么信号? ISA控制总线中的-IOR信号有效,DX的值输出到地址总线的低16位。4. PCI总线的仲裁机制的作用是什么?PCI信号中哪些信号与仲裁有关系? 总线仲裁机制是PCI主设备取得总线控制权的数字功能电路机制,PCI主设备通过REQ#信号提出向总线仲裁机制提出总线申请,仲裁机制通过GNT#信号应答主设备。5. PCI中那些信号是中断申请?在配置空间有哪些字段与中断有关? PCI总线的中断申请信号有4个,INTA#、INTB#、INTC#和INTD#。通过配置空间的Interrupt
3、Pin字段(偏移地址3DH)选择使用上述4个中断申请中的哪一个。通过配置空间的Interrupt Line字段(偏移地址3CH)确定所选中断对应系统中断的编号。6. 在TPC-386EX实验台初始化8253(基地址200H)的通道2,采用0方式、二进制计数、计数器初值1000,写出初始化汇编代码。TIMER = 200H MOV AL, 0B0H ; 定时器2 / 16位初值 / 0方式 / 二进制MOV DX, TIMER+3OUT DX, ALMOV AX, 1000DEC DXOUT DX, ALMOV AL, AHOUT DX, AL7. 针对TPC-386实验台,编写中断初始化程序。
4、要求:边沿触发,采用单片8259非缓冲方式,中断编号基数为16,普通全嵌套优先权方案,普通结束方式。中断信号从IR5引入。; - 8259初始化MOV AL, 00010011B ; ICW1OUT 20H, AL MOV AL, 00010000B ; ICW2OUT 21H, AL MOV AL, 00000101B ; ICW4OUT 21H, AL ; - 设置中断向量PUSH DSXOR AX, AXMOV DS, AXLEA AX, CS:IR5p ; 中断服务程序MOV DS:0054H, AXMOV AX, CSMOV DS:0056H, AXPOP DS ;-设置中断屏蔽寄存
5、器MOV AL, 0DFH ; OCW1OUT 21H, AL;-打开中断STI8. 在TPC-386EX实验台写一个使用SIR0中断的中断服务程序的框架(采用普通中断结束方式)。SIR0p PROC FAR PUSH ; 保护现场 CLI ; 关闭中断 MOV AL, 20H ; 中断结束 OUT 0A0H, AL POP ; 恢复现场 STI ; 开中断 IRET ; 从中断返回SIR0p ENDP课堂练习21. 简述PCI中断。包括中断产生、中断响应的过程。当PCI设备需要中断支持,就要在INTA#INTD#中选择一个中断申请线,在配置空间的Interrupt Pin (偏移地址3DH)
6、字段定义,并通过配置空间的Interrupt Line字段(偏移地址3CH)确定所选中断对应系统中断的编号。当中断产生,设备的中断申请送到中断控制器,中断控制器向CPU发送中断申请,CPU控制PCI总线进入中断响应周期,获取中断向量(图16.16)。CPU根据中断向量转入中断服务程序。2. 简述USB的帧和微帧的概念,以及协议中的实现。说明SOF令牌结构。USB协议通过帧(低速和全速模式)或微帧(高速模式)的定义,将时间分为1ms或125s的间隙,并通过帧或微帧同步全部USB设备。USB主机以广播方式向所有USB设备发送“帧标志”信息。全速模式下主机每1ms发送一个SOF包。低速模式下由Kee
7、p Alive状态信号替代SOF包。高速模式下每一个1ms帧分成了8个微帧。SOF格式:SyncPIDFrame No.帧序列号11位CRC5校验5位EOP3. 说明USB传输中的“事务”的概念,以及“事务”的构成要件。USB的事务(Transaction)为USB主机与设备端点之间的一次数据传输。事务是USB传输(Transfer)过程中的一个阶段(Stage)。为了实现一个USB事务,需要23个数据包(Package)的交换。每一个数据包被称为一个事务的相位(Phase)。构成事务的数据包通常依次为令牌包、数据包和联络包,实时传输的事务无联络包。4. 简要说明USB的4种传输模式的特点和性
8、能。USB的4种传输模式分别为控制传输、中断传输、批量传输和实时传输。可以根据USB设备的特点选择支持的传输模式。但USB设备必须支持控制传输。控制传输实现USB控制信息、配置信息的传输,同时也可以实现用户数据传输。中断传输可以保证传输延时,适合小批量、非周期性的数据传输。批量传输可以最大可能的利用传输带宽,适合突发性的、大批量数据传输。实时传输可以保证传输带宽,适合恒定流量、同时对错误不敏感的数据传输。4种USB传输的理论速度:传输类型控制传输批量传输中断传输实时传输高速最大速率(B/s)15,872K53,248K24,576K24,576K全速最大速率(B/s)832K1,216K64K
9、1,023K低速最大速率(B/s)24K不支持800不支持5. 在TPC-386EX实验箱实现延时脉冲输出。即当按钮按下后,延时25ms后从8255的PC0输出一个负脉冲,脉冲宽度不限。基本方法:将按钮连接至8255的一个输入端(PC7),在主程序检测该输入端的上跳沿,启动定时器,将定时器输出连接到系统中断(MIR5),在中断服务程序向PC0输出负脉冲。中断初始化:采用实验台系统中断MIR5,已经完成8259A初始化。剩下任务包括设置中断向量、设置中断屏蔽寄存器、打开中断。 ;-设置中断向量 PUSH DS ; 保存DS XOR AX, AX ; 0AX MOV DS, AX ; DS LEA
10、 AX, CS:MIR5p ; 中断服务入口地址偏移量AX MOV DS:00D4H, AX ; 00D4H MOV AX, CS ; 中断服务入口地址段值AX MOV DS:00D6H, AX ; 00D6H POP DS ; 恢复DS ;-设置中断屏蔽寄存器 IN AL, 21H ; 读取当前中断屏蔽寄存器 AND AL, 0DFH ; 将D5置为0 OUT 21H, AL ; 写回中断屏蔽寄存器 ;-打开中断 STI8255初始化:A组、B组均为0方式输入,PC0PC3输出,PC4PC7输入。(8255片选端连接地址200H)PPORT = 200HMOV AL, 10011010BOU
11、T PPORT+3, ALMOV AL, 1 ; 1PC0OUT PPORT+3, AL按钮按下检测:读取判断PC7press0: IN AL, PPORT+2 TEST AL, 80H JNZ press0press1: IN AL, PPORT+2 TEST AL, 80H JZ press18253初始化:通道2,0方式,输入1MHz,初始值25000。TIMER = 210HMOV AL, 10110000BOUT TIMER+3, ALMOV AX, 25000OUT TIMER+2, ALMOV AL, AHOUT TIMER+2, AL中断服务:输出向PC0输出负脉冲。IRQ5P
12、ro PROC FAR CLI PUSH AX MOV AL, 0 OUT TIMER+3, AL ; 可加入延时 MOV AL, 1 OUT PPORT+3, AL MOV AL, 20H OUT 20H, AL POP AX STI IRET IRQ5Pro ENDP6. 电话忙音的频率是450Hz,通断比是350:350ms。通过TPC-386EX实验台资源设计一个忙音信号发生器。方波实现方案之一:过定时中断控制PC0输出忙音。通过8253产生900Hz分频(通道1,3方式,1Mhz/900 ),定时器输出连接中断。在中断服务程序对一个变量(Tick)进行二次计数,实现350ms的计数值
13、是315,700ms一个周期,采用模630计数。计数值小于315时反向PC0。主程序:;-初始化定时器1为2方式 MOV DX, TIMER+3 MOV AL, 01110100B OUT DX, AL MOV DX, TIMER+1 MOV AX, 1111 ; 输入1MHz,输出900Hz OUT DX, AL MOV AL, AH OUT DX, AL ;-初始化8255,PA,PCH: 0输入,PB,PCL:0方式输出MOV AL, 10011000BMOV DX, PPORT+3 OUT DX, AL;-设置中断向量 PUSH DS XOR AX, AX MOV DS, AX LEA
14、 AX, CS:MIR5p MOV DS:00D4H, AX MOV AX, CS MOV DS:00D6H, AX POP DS ;-设置中断屏蔽寄存器 IN AL, 21H AND AL, 0DFH OUT 21H, AL STI ; 打开中断RTloop: JMP RTloop ; 死循环中断服务程序MIR5p PROC FAR PUSH AX ; 保存寄存器 PUSH DX CLI ; 关闭中断 INC tick .IF tick=630 MOV tick, 0 .ENDIF .IF tick 315 MOV AL, BYTE PTR tick AND AL, 1 MOV DX, PP
15、ORT+3 OUT DX, AL .ENDIF MOV AL, 20H ; OCW2:普通EOI命令 OUT 20H, AL STI ; 开放中断 POP DX ; 恢复寄存器 POP AX IRET ; 从中断服务返回 MIR5p ENDP7. 基于TPC-386EX实验台设计一个串行接口信号发生器。将拨动开关K0K7连接到8255的一个端口,每当8个拨动开关中任一个开关状态发生变化,就从串行接口发出当前K0K7的状态字节。串行接口参数是9600bps、8个数据位、1个停止位、无校验。画出流程图,并写出汇编代码。实现方案:8255_CS接200H。初始化8255,PB端口为0方式输入。连接K
16、0K7之PB0PB7;16550_CS接210H。初始化16550,9600/N/8/1;进入主程序,循环读取PB并存储,当PB发生变化进入发送流程;发送流程:检测直到发送保持寄存器空,将数据写到16550发送数据寄存器;发送后延时,以避免拨动开关抖动。 PPORT = 200HUART = 210HDATA SEGMENTkey BYTE 0DATA ENDS;-16550串口初始化 MOV DX, UART+3 ; 80HLCRMOV AL, 80HOUT DX, ALMOV DX, UART ; 12波特率因子锁存器MOV AL, 12 ; 9600bpsOUT DX, al MOV D
17、X, UART+1 MOV AL, 0 OUT DX, AL MOV DX, UART+3 ; 03LCRMOV AL, 03H ; 8位数据/1位停止位/无校验 OUT DX, AL MOV DX, UART+1 ; 0IERMOV AL, 0 ;关中断OUT DX, AL ;-初始化8255,PB为0方式输入MOV DX, PPORT+3MOV AL, 10001011BOUT DX, ALMOV DX, PPORT+1IN AL, DXMOV key, ALmloop: MOV DX, PPORT+1 ; 读取开关状态IN AL, DX.IF AL!=key MOV key, AL .R
18、EPEAT ; 检测知道THR空 MOV DX, UART+5 IN AL, DX AND AL, 20H .UNTIL AL!=0 MOV DX, UART ; 发送数据字节 MOV AL, key OUT DX, AL.ENDIFMOV CX, 50000 ; 循环延时.REPEAT.UNTILCXZJMP mloop课堂练习31. USB协议定义的IN和OUT令牌包的作用是什么?其包格式是什么样的?其中的各个字段的作用是什么?USB的IN和OUT令牌包是由主机发送到设备的。IN令牌的作用是要求指定设备发送指定端点的数据到主机,OUT令牌的作用是主机通知指定设备要发送数据到它的指定端点。I
19、N和OUT令牌的格式是一样的:SyncPIDADDRENDPCRC5EOP其中:Sync:同步字,8位,00000001;PID:信息包标志,8位,低4位是标志编码,高4位是低4位反码;ADDR:设备地址,7位; ENDP:端点地址,4位;CRC5:循环冗余校验码,5位; EOP:包结束标志信号。2. USB协议采用了什么差错控方法来保证传输的安全性?为了实现信息传输安全,信息包中采用CRC校验,接收方根据CRC信息验证信息的正确性。当接收方检测错误信息包,通过回送NAK握手包要求发送方重传;信息包的PID字段是USB信息包的最关键信息,采用重复冗余传输防止PID信息传输错误;数据包传输中顺序
20、使用DATA0、DATA1、DATA2,以避免包丢失。3. 在TPC-386EX实验台产生一个固定延时、任意脉宽的负脉冲信号。要求程序运行后指定信号输出端为1,按下按钮,待按钮释放开始延时10ms后输出端输出一个负脉冲,宽度不限。设计实现方案,并画出流程图。实现方案:采用定时器5方式,按钮输出接到GATE端,OUT即要求的输出信号。定时器输入接1MHz时钟,分频初值10000。TIMER = 200H ; 采用定时器2通道 MOV AL, 10111010B OUT TIMER+3, AL MOV AX, 10000 OUT TIMER+2, AL MOV AL, AH OUT TIMER+2
21、, ALFloop: JMP Floop4. 通过TPC-386EX实验台设计一个音频信号数字延时器的实现方案。要求采样频率为8K/s,延时时间50ms。(定时器控制的AD+FIFO存储+DA)实现方案:通过定时器产生8K/s的周期性中断(8253的2或3方式),在中断服务程序操作AD和DA变换;定义一个数据区,400字节,可以存储50ms的数字化音频数据。按照FIFO规则访问;中断服务中先读取AD数据,再启动AD的顺序操作。5. 在TPC-386EX实验台实现AD变换演示。将电位器分压值(0+5V)送AD变换器,将8255的一个端口的8位依次连接到8个发光二极管L0L7。AD变换器获得的值由
22、小到大分为8个等份,分别点亮L0、L1、L7。实现方案:初始化8255,将端口C设置为输出。利用端口C的8位输出连接L0L7;主程序循环AD变换(启动AD延时读取AD值);根据获得的AD变换数据的高3位,经过位移等操作变换成为针对端口C的置位/复位;0端口C(将全部发光二极管灭),置位命令端口C(点亮指定发光二极管)汇编程序代码:PPORT = 200HADCON = 210H begin: MOV DX, PPORT+3 MOV AL, 10000000B OUT DX, AL MOV AL, 0 ; PC输出0 DEC DX OUT DX, ALmloop: MOV DX, ADCON ;
23、 启动变换 OUT DX, AL MOV CX, 1000 ; 延时等待delay1: NOP LOOP delay1 MOV DX, ADCON+1 ; 读取结果 IN AL, DX SHR AL, 1 ; 右移4位 SHR AL, 1 SHR AL, 1 SHR AL, 1 AND AL, 0EH ; 高4位置0 OR AL, 1 ; 0 0 0 0 D7D6D5 1 MOV AH, AL MOV DX, PPORT+2 ; 向PC输出0 MOV AL, 0 OUT DX, AL INC DX ; 送置位/复位命令 MOV AL, AH OUT DX, AL JMP mloop6. 通过T
24、PC-386EX实验台设计一个按钮启动的方波信号发生器,程序运行后信号输出端无输出,通过按钮启动800Hz方波开始输出,再次按动按钮停止输出。设计电路连接并写出代码。设计方案:将按钮(PLUS1,正脉冲)连接到8255(PC7);使用一个定时器,3方式。输入(CLK2)连接1MHz,门控(GATE2)接+5V,输出(OUT2)即为要求的信号输出;主程序初始化定时器和8255后,循环检测按钮状态,当按钮按下,启动或停止8253分频输出。电路连接图:程序流程图:汇编程序代码(部分):TIMER = 200H ; 8254PPORT = 210H ; 8255;- 数据段 state BYTE 0;
25、- 代码段 MOV AL, 10011011B OUT PPORT+3, ALmloop: IN AL, PPORT+2 TEST AL, 80H JNZ mloop kpress: IN AL, PPORT+2 TEST AL, 80H JZ kpress INC state TEST state, 1 JZ fstop MOV AL, 10110110B OUT TIMER+3, AL MOV AX, 1250 OUT TIMER+2, AL MOV AL, AH OUT TIMER+2, AL JMP mloop fstop: MOV AL, 10110110B OUT TIMER+3, AL JMP mloop
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1