1、2、编一程序把3000H-3009H中内容按从大到小排列;如果是有符号数怎么改写程序。硬件一 静态存储器扩展实验5. 改变实验程序,按非规则字写存储器,观察实验结果。SSTACK SEGMENT STACK DW 32 DUP(?)SSTACK ENDSCODE SEGMENTSTART PROC FAR ASSUME CS:CODE MOV AX, 8000H ; 存储器扩展空间段地址 MOV DS, AXAA0: MOV SI, 0000H ; 数据首地址 MOV CX, 0010H MOV AX, 0000HAA1: INC SI MOV SI, AX INC AX ;INC SI LO
2、OP AA1 MOV AX,4C00H INT 21H ;程序终止START ENDPCODE ENDS END START6. 改变实验程序,按字节方式写存储器,观察实验现象。 MOV SI, AX 7. 将实验程序改为死循环程序,分别按规则字与非规则字的方式写存储器。 JMP AA1硬件二 8259中断控制实验1.在中断中完成BCD码转换为二进制数。 将四个二位十进制数的BCD码存放于3500H起始的内存单元中,将转换的二进制数存入3510H起始的内存单元中,每次中断完成一个二位十进制数的BCD码转换。 实验步骤:将四个二位十进制数的BCD码存入3500H3507H中,即:先键入E3500
3、,然后输入01 02 03 04 05 06 07 08.运行程序,按一次单次脉冲开关KK1,查看3510内容,应为0ch。再按一次单次脉冲开关KK1,查看3511内容,应为22。继续发中断,依次查看3512,3513内容。.MODEL TINY IO8259_0 EQU 0260HIO8259_1 EQU 0261H .DATA BUFFER DB 8 DUP(?ReDisplayFlag DB 0.STACK 100 .CODE START: MOV AX,DATA MOV DS,AX ;初始化数据段 MOV ES,AX PUSH DS CALL WriIntver CLI POP DS初
4、始化主片8259 MOV DX,IO8259_0 MOV AL, 13H OUT DX, AL ;ICW1 MOV DX,IO8259_1 MOV AL, 08HICW2 MOV AL, 09HICW4 MOV AL, 0 ;OCW1 OUT DX, AL MOV SI, 3500H MOV DI, 3510H STI NOP JMP AA1 WriIntver PROC NEAR PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,MIR7 STOSW MOV AX,CS POP ES RET WriIntver ENDP MIR7:STI XOR AX
5、,AX MOV AL, SI ADD AL, AL MOV BL, AL ADD AL, BL ADD AL, SI MOV DI, AL INC DI MOV AL, 20H中断结束命令 IRET 2.在上述试验基础上,第五次中断结束中断,再按单次脉冲开关KK1将无法进入中断服务程序。.MODEL TINY IO8259_0 EQU 0260HIO8259_1 EQU 0261H .DATA BUFFER DB 8 DUP(?ReDisplayFlag DB 0counter DB 06H.STACK 100 .CODE START: MOV DS,AX MOV ES,AX PUSH DS
6、CALL WriIntver CLI POP DS ; MOV DX,IO8259_0 MOV AL, 13H OUT DX, AL ; MOV DX,IO8259_1 MOV AL, 08H MOV AL, 09H MOV AL, 0 ; OUT DX, AL MOV SI, 3500H MOV DI, 3510H STIAA1: JMP AA1 WriIntver PROC NEAR PUSH ES MOV AX,0 MOV ES,AX MOV DI,20H LEA AX,MIR7 STOSW MOV AX,CS POP ES RET WriIntver ENDP MIR7: DEC co
7、unter ;自减,5次 JNA AA3 ;(待测试) XOR AX,AX MOV AL, SI ADD AL, AL MOV BL, AL ADD AL, BL INC SI ADD AL, SI MOV DI, AL INC DI MOV AL, 20H IRET AA3: NOP JMP AA3 END START3:编写程序利用8254计数器0和计数器1分别作为8259IR6,IR7的中断请求信号;将8255PA0接到发光二极管D0,8255PA7接到发光二极管D1;使DO,D1闪动,D0每闪动10次D1闪动一次。4、利用中断实现8255实验一(基本输入输出实验)SAVE_AL DB
8、? MOV AX,DATA MOV DS,AX MOV ES,AX 初始化主片8255 MOV DX, 0273H MOV AL, 90H MOV CX,0 MOV DX, 0271H ;给B口送亮灯信号 MOV AL,SAVE_AL MOV DX, 0270H ;从A口读入控制灯的信号 IN AL, DX MOV SAVE_AL,AL CALL DELAY MOV AL, 20H ;zhongduan DELAY: PUSH CX ;延时 MOV CX, 0F000HAA2: PUSH AX POP AX LOOP AA2 POP CX RET 硬件三 8255并行接口实验1:执行程序后,使
9、发光二极管闪动。CODE MOV DX, 0273H MOV AL, 80H MOV BX, 0000H MOV DX, 0270H MOV AL, BH NOT BH MOV DX, 0271H MOV AL, BL NOT BL PUSH CX RET2:执行程序后,使发光二极管高八位和低八位亮灭相反。(X86文档) MOV BX, 00FFH1、例子程序中只展示了8155的输入输出和读写数据RAM的功能,8155还有定时器/计数器的功能,有兴趣读者可以自己编写程序,通过8155来实现定时,当作定时器用时,如何接线?2、若是要对PC口位操作,应该如何编写程序?3、如何使用8155实现键盘扫
10、描和LED显示?(星研文档)1、如何对8255的PC口进行位操作? MOV AL, 01H OUT DX, AL MOV AL, 05H MOV AL, 07H硬件四 8254定时/计数器应用实验将CLK0接到时钟源,使程序每隔一秒显示一次M。2: 编写程序使8254计数器0工作于方式0,OUT0接到发光二极管,使其闪动。(x86文档)1、8253还有其它五种工作方式,其它工作模式下,硬件如何设计?程序如何编写?2、使用8253,编写一个实时钟程序。 .MODEL TINY .STACK 100 MOV DX,0263H MOV AL,37H OUT DX,AL MOV DX,0260H MOV AL,53H OUT DX,AL MOV AL,19H MOV AL,77H MOV DX,0261H MOV AL,60H MOV AL,00H MOV AL,0B7H MOV DX,0262H JMP $ END START
copyright@ 2008-2023 冰点文库 网站版权所有
经营许可证编号:鄂ICP备19020893号-2