




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
微机系统实验报告-PAGE3-西安电子科技大学实验报告课程名称微机系统实验成绩实验学时6评语:指导教师:年月日微机系统实验报告全文共24页,当前为第1页。微机系统实验报告全文共24页,当前为第1页。实验一汇编语言编程实验1实验目的掌握汇编语言的编程方法掌握DOS功能调用的使用方法掌握汇编语言程序的调试运行过程2实验内容(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。(2)在屏幕上显示自己的学号姓名信息。(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。(4)自主设计输入显示信息,完成编程与调试,演示实验结果。3实验结果任务一 4程序流程图微机系统实验报告全文共24页,当前为第2页。微机系统实验报告全文共24页,当前为第2页。5程序代码任务一DATASEGMENTNUMBERDB'03101214SONGYUANYUAN',0AH,0DH,'$'string1DB0AH,0DH,'inputq/Qtoexit',0AH,0DH,0AH,0DH,'NUMBERANDNAME:','$'string2DB0AH,0DH,'Input:$'RESULTDB0AH,0DH,'ASCIIis:$'SDDB''DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVDX,OFFSETstring1MOVAH,09HINT21HMOVDX,OFFSETNUMBERINT21HC1:MOVDX,OFFSETstring2MOVAH,09HINT21HMOVAH,01HINT21HCMPAL,'Q'JZEXITCMPAL,'q'JZEXITMOVSD,ALMOVDX,OFFSETRESULTMOVAH,09HINT21HMOVSI,OFFSETSDMOVAL,DS:[SI]ANDAL,0F0HMOVCL,4SHRAL,CLCMPAL,0AHJBC2ADDAL,07HC2:ADDAL,30HMOVDL,ALMOVAH,02HINT21HMOVAL,DS:[SI]ANDAL,0FHCMPAL,0AH微机系统实验报告全文共24页,当前为第3页。JBC3微机系统实验报告全文共24页,当前为第3页。ADDAL,07HC3:ADDAL,30HMOVDL,ALMOVAH,02HINT21HloopC1EXIT:MOVAX,4C00HINT21HCODEENDSENDSTART实验二数码转换实验.1实验目的掌握不同进制数及编码相互转换的程序设计方法。掌握运算类指令编程及调试方法。掌握循环程序的设计方法。2.实验内容及说明重复从键盘输入不超过5位的十进制数,按回车键结束输入;将该十进制数转换成二进制数;结果以16进制数的形式显示在屏幕上;如果输入非数字字符,则报告出错信息,重新输入;直到输入“Q”或‘q’时程序运行结束。键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。任务二微机系统实验报告全文共24页,当前为第4页。微机系统实验报告全文共24页,当前为第4页。流程图任务二; PAGE 60,132;本实验将输入的ASCII码转换为二进制,要求输入位数小于5DDATA SEGMENTMES DB 0AH,0DH,'Theasciicodeofdecimalcodeare:$'MSG1DB0AH,0DH,'exit,input:q/Q',0AH,0DH,0AH,0DH,'$'MSG2DB0AH,0DH,0AH,0DH,'Input:$'MSG3DB0AH,0DH,'inputerror',0AH,0DH,'$'BUF DB 30H,30H,30H,31H,35H DB 10HDUP(0)N DW 0DDATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DDATA START: MOV AX,DDATA MOV DS,AX MOV ES,AX MOV DI,OFFSETBUF CLC MOVDX,OFFSETMSG1 MOVAH,09H微机系统实验报告全文共24页,当前为第5页。 INT21H微机系统实验报告全文共24页,当前为第5页。 A1: MOV AH,1 ;接收键盘输入 INT 21H INC N STOSB ;将输入数据存放在BUF缓冲区中 CMPAL,'Q' JZEXIT CMPAL,'q' JZEXIT CMPAL,39H JAERROR CMP AL,13 JNE A1 MOV CX,N DEC CX MOV BX,000AH MOV SI,OFFSETBUF MOV AH,0 MOV DX,0 LODSB CMP CX,1 JE A3 SUB AL,30H ;将BUF中数据转换为二——十进制数 DEC CXA2: IMUL BX MOV DX,AX LODSB MOV AH,0A3: SUB AL,30H ADD AX,DX LOOP A2 MOV [SI],AX MOV DX,OFFSETMES MOV AH,09H INT 21H INC SI ;显示高字节 CALL SHOW DEC SI ;显示低字节 CALL SHOW MOV DX,OFFSETMSG2 MOV AH,09H INT 21H MOVAX,0 stosb MOVAX,0 MOVCX,0 MOVBX,0 MOVDX,0 MOV DI,OFFSETBUF CLC MOVN,0 LOOPA1 EXIT: MOV AX,4C00H INT 21HERROR: MOV DX,OFFSETMSG3 MOV AH,09H INT 21H MOV DX,OFFSETMSG2 MOV AH,09H INT 21H JMPA1SHOW PROC NEAR MOV AL,DS:[SI] AND AL,0F0H ;取高4位 MOV CL,4 SHR AL,CL CMP AL,0AH ;是否是A以上的数 JB C2 ADD AL,07H C2: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,02H INT 21H MOV AL,DS:[SI] AND AL,0FH ;取低4位 CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL ;showcharacter MOV AH,02H INT 21H RET SHOW ENDP CODE ENDS微机系统实验报告全文共24页,当前为第6页。 END START微机系统实验报告全文共24页,当前为第6页。实验三基本IO口扩展实验.1实验目的了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。2实验内容74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。其引脚图如下:74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。微机系统实验报告全文共24页,当前为第7页。其引脚图如下:微机系统实验报告全文共24页,当前为第7页。本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。具体实验内容如下:当开关Yi为低电平时对应的发光二极管点亮,Yi为高电平时对应的发光二极管灭。当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。自主设计控制及显示模式,完成编程调试,演示实验结果。微机系统实验报告全文共24页,当前为第8页。微机系统实验报告全文共24页,当前为第8页。3实验原理图图3-2-174LS244与74LS273扩展I/O口原理图实验连线图:图3-2-2扩展I/O口连线图微机系统实验报告全文共24页,当前为第9页。微机系统实验报告全文共24页,当前为第9页。4代码MY_STACK SEGMENT PARA'STACK' DB 100DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA'DATA'IO_9054base_addressDB4DUP(0) ;PCI卡9054芯片I/O基地址暂存空间IO_base_addressDB4DUP(0) ;PCI卡I/O基地址暂存空间pcicardnotfind DB0DH,0AH,'pcicardnotfindoraddress/interrupterror!!!',0DH,0AH,'$'GOOD DB0DH,0AH,'TheProgramisExecuting!',0DH,0AH,'$'LS244 DW 00000H LS273 DW 00020HRA DB ?LB DB ?DELAY_SET EQU 0FFFH ;延时常数MY_DATA ENDsMY_CODE SEGMENTPARA'CODE'MY_PROC PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK MAIN: .386 ;386模式编译 MOV AX,MY_DATA MOV DS,AX MOV ES,AX MOV AX,MY_STACK MOV SS,AX CALL FINDPCI ;自动查找PCI卡资源及IO口基址 MOV CX,wordptrIO_base_address ADD LS244,CX ;PCI卡IO基址+偏移 ADD LS273,CX ;自己的程序 MOV RA,7FH MOV LB,0FEH READ1: MOV DX,LS244 ;读取开关状态 IN AL,DX CMPAL,0FFH JZA1 CMPAL,00H JZA2 NOT AL ;取反 MOV DX,LS273 OUT DX,AL ;送LED显示 CALL DELAY CALL BREAK JMPREAD1A1:MOVAL,0FEH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FDH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FBH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0F7H MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0EFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0DFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0BFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,07FH MOV DX,LS273微机系统实验报告全文共24页,当前为第10页。 OUT DX,AL微机系统实验报告全文共24页,当前为第10页。 CALL DELAY CALL BREAK JMPREAD1 A2:MOVAL,7FH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0BFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0DFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0EFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0F7H MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FBH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FDH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FEH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK JMPREAD1MY_PROC ENDpBREAK PROC NEAR ;按任意键退出 PUSHF PUSH AX PUSH DX MOV AH,06H MOV DL,0FFH INT 21H JE RETURN MOV AX,4C00H INT 21HRETURN: POP DX POP AX POPF RETBREAK ENDPDELAY PROC NEAR ;延时程序 PUSHF PUSH DX PUSH CX MOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CX JNZ D2 DEC DX JNZ D1 POP CX POP DX POPF RETDELAY ENDp;FUNCTIONCODEIO_port_addre EQU0CF8H ;32位配置地址端口IO_port_data EQU 0CFCH ;32位配置数据端口IO_PLX_ID EQU 200810B5H ;PCI卡设备及厂商IDBADR0 = 10H ;基地址寄存器0BADR1 = 14H ;基地址寄存器1BADR2 = 18H ;基地址寄存器2BADR3 = 1CH ;基地址寄存器3FINDPCI PROC NEAR ;查找PCI卡资源并显示 PUSHAD微机系统实验报告全文共24页,当前为第11页。 PUSHFD微机系统实验报告全文共24页,当前为第11页。 MOV EBX,080000000HFINDPCI_next: ADD EBX,100H CMP EBX,081000000H JNZ findpci_continue MOV DX,offsetpcicardnotfind ;显示未找到PCI卡提示信息 MOV AH,09H INT 21H MOV AH,4CH INT 21H ;退出findpci_continue: MOV DX,IO_port_addre MOV EAX,EBX OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 CMP EAX,IO_PLX_ID JNZ findpci_next ;检查是否发现PCI卡 MOV DX,IO_port_addre MOV EAX,EBX ADD EAX,BADR1 OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 MOV dwordptrIO_9054base_address,EAX AND EAX,1 JZ findPCI_nex ;检查是否为i/o基址信息MOV EAX,dwordptrIO_9054base_address AND EAX,0fffffffeh MOV dwordptrIO_9054base_address,EAX ;去除i/o指示位并保存MOV DX,IO_port_addre MOV EAX,EBX ADD EAX,BADR2 OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 MOV dwordptrIO_base_address,EAX AND EAX,1 JZ findPCI_next ;检查是否为i/o基址信息MOV EAX,dwordptrIO_base_address AND EAX,0fffffffeh MOV dwordptrIO_base_address,EAX ;去除i/o指示位并保存 MOV DX,offsetgood ;显示开始执行程序信息 MOV AH,09H INT 21H POPfd POPad RETfindPCI ENDPMY_CODE ENDSEND MAIN 5实验结果:发光二极管Qi从右至左轮流点亮实验四可编程并行接口8255实验.1实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。.2实验内容流水灯实验:利用8255的A口、B口循环点亮发光二极管。交通灯实验:利用8255的A口模拟交通信号灯。I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。通过开关控制交通红绿灯的亮灭。微机系统实验报告全文共24页,当前为第12页。通过开关控制流水灯的循环方向和循环方式。微机系统实验报告全文共24页,当前为第12页。3流水灯实验原理图图6-3-6图6-3-6流水灯实验MY_STACK SEGMENT PARA'STACK' DB 100DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA'DATA'IO_9054base_addressDB4DUP(0) ;PCI卡9054芯片I/O基地址暂存空间IO_base_addressDB4DUP(0) ;PCI卡I/O基地址暂存空间pcicardnotfind DB0DH,0AH,'pcicardnotfindoraddress/interrupterror!!!',0DH,0AH,'$'GOOD DB0DH,0AH,'TheProgramisExecuting!',0DH,0AH,'$';LS244 DW 00000H LS273 DW 00020HLS8255DW00000HLS8255WDW00003HRA DB ?LB DB ?DELAY_SET EQU 0FFFH ;延时常数MY_DATA ENDsMY_CODE SEGMENTPARA'CODE'MY_PROC PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK MAIN: .386 ;386模式编译 MOV AX,MY_DATA MOV DS,AX MOV ES,AX MOV AX,MY_STACK MOV SS,AX CALL FINDPCI ;自动查找PCI卡资源及IO口基址 MOV CX,wordptrIO_base_address ADD LS8255,CX ;PCI卡IO基址+偏移 ADD LS8255W,CX ;自己的程序 MOV RA,7FH MOV LB,0FEH READ1: MOV AX,80H ;读取开关状态 MOVDX,LS8255W OUTDX,AX MOVDX,LS8255 MOVAL,0FEH OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FDH MOVDX,LS8255 OUT DX,AL CALL DELAY CALL BREAK微机系统实验报告全文共24页,当前为第13页。 MOVAL,0FBH微机系统实验报告全文共24页,当前为第13页。 MOVDX,LS8255 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0F7H MOVDX,LS8255 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0EFH MOVDX,LS8255 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0DFH MOVDX,LS8255 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0BFH MOVDX,LS8255 OUT DX,AL CALL DELAY CALL BREAK MOVAL,07FH MOVDX,LS8255 OUT DX,AL CALL DELAY CALL BREAK JMPREAD1 ;NOT AL ;取反 ;MOV DX,LS273 ;OUT DX,AL ;送LED显示 ;CALL DELAY ;CALL BREAK ;JMP READ1MY_PROC ENDpBREAK PROC NEAR ;按任意键退出 PUSHF PUSH AX PUSH DX MOV AH,06H MOV DL,0FFH INT 21H JE RETURN MOV AX,4C00H INT 21HRETURN: POP DX POP AX POPF RETBREAK ENDPDELAY PROC NEAR ;延时程序 PUSHF PUSH DX PUSH CX MOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CX JNZ D2 DEC DX JNZ D1 POP CX POP DX POPF RETDELAY ENDp;FUNCTIONCODEIO_port_addre EQU0CF8H ;32位配置地址端口IO_port_data EQU 0CFCH ;32位配置数据端口IO_PLX_ID EQU 200810B5H ;PCI卡设备及厂商IDBADR0 = 10H ;基地址寄存器0BADR1 = 14H ;基地址寄存器1BADR2 = 18H ;基地址寄存器2BADR3 = 1CH ;基地址寄存器3FINDPCI PROC NEAR ;查找PCI卡资源并显示 PUSHAD PUSHFD MOV EBX,080000000HFINDPCI_next: ADD EBX,100H CMP EBX,081000000H JNZ findpci_continue MOV DX,offsetpcicardnotfind ;显示未找到PCI卡提示信息 MOV AH,09H INT 21H微机系统实验报告全文共24页,当前为第14页。 MOV AH,4CH微机系统实验报告全文共24页,当前为第14页。 INT 21H ;退出findpci_continue: MOV DX,IO_port_addre MOV EAX,EBX OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 CMP EAX,IO_PLX_ID JNZ findpci_next ;检查是否发现PCI卡MOV DX,IO_port_addre MOV EAX,EBX ADD EAX,BADR1 OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 MOV dwordptrIO_9054base_address,EAX AND EAX,1 JZ findPCI_next ;检查是否为i/o基址信息 MOV EAX,dwordptrIO_9054base_address AND EAX,0fffffffeh MOV dwordptrIO_9054base_address,EAX ;去除i/o指示位并保存 MOV DX,IO_port_addre MOV EAX,EBX ADD EAX,BADR2 OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 MOV dwordptrIO_base_address,EAX AND EAX,1 JZ findPCI_next ;检查是否为i/o基址信息 MOV EAX,dwordptrIO_base_address AND EAX,0fffffffeh MOV dwordptrIO_base_address,EAX ;去除i/o指示位并保存 MOV DX,offsetgood ;显示开始执行程序信息 MOV AH,09H INT 21H POPfd POPad RETfindPCI ENDPRIGHT:MOVAL,0FEH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FDH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FBH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0F7H MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0EFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0DFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0BFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,07FH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK JMPREAD1 LEFT:MOVAL,7FH MOV DX,LS273 OUT DX,AL CALL DELAY微机系统实验报告全文共24页,当前为第15页。 CALL BREAK微机系统实验报告全文共24页,当前为第15页。 MOVAL,0BFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0DFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0EFH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0F7H MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FBH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FDH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK MOVAL,0FEH MOV DX,LS273 OUT DX,AL CALL DELAY CALL BREAK JMPREAD1 MY_CODE ENDS END MAIN 5实验结果:发光二极管Qi轮流点亮实验五可编程定时器/计数器8254(8253)实验.1实验目的(1)掌握8254定时/计数器的编程方法。(2)学习8254的几种工作方式。(3)了解计数器的硬件连接及时序关系。.2实验内容(1)将32Hz的晶振频率作为8254的时钟输入,利用定时器8254产生1Hz的方波,用发光二极管显示输出结果(发光二极管闪烁)。(2)开关控制结束程序执行,发光二极管熄灭。(3)开关控制发光二极管闪烁的速度(输出不同频率的方波)。图3-3-1可编程定时器/计数器8254管脚图3实验原理图图3-3-1可编程定时器/计数器8254管脚图微机系统实验报告全文共24页,当前为第16页。微机系统实验报告全文共24页,当前为第16页。4代码MY_STACK SEGMENT PARA'STACK' DB 100DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA'DATA'IO_9054base_addressDB4DUP(0) ;PCI卡9054芯片I/O基地址暂存空间IO_base_addressDB4DUP(0) ;PCI卡I/O基地址暂存空间pcicardnotfind DB0DH,0AH,'pcicardnotfindoraddress/interrupterror!!!',0DH,0AH,'$'GOOD DB0DH,0AH,'TheProgramisExecuting!',0DH,0AH,'$'D8254A DW 00000HD8254B DW00001HD8254CDW00010HMEMODW00003HLS273 DW 00020HRA DB ?LB DB ?DELAY_SET EQU 0FFFH ;延时常数MY_DATA ENDsMY_CODE SEGMENTPARA'CODE'MY_PROC PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK MAIN: .386 ;386模式编译 MOV AX,MY_DATA MOV DS,AX MOV ES,AX MOV AX,MY_STACK MOV SS,AX CALL FINDPCI ;自动查找PCI卡资源及IO口基址 MOV CX,wordptrIO_base_address ;-ADD LS244,CX ;PCI卡IO基址+偏移 ADD LS273,CX ADDD8254A,CX ADDMEMO,CX ;自己的程序 MOV RA,7FH MOV LB,0FEH READ1:MOVAL,17H MOVDX,MEMO OUTDX,AL ;送LED显示 MOVAL,32H MOVDX,D8254A OUTDX,AL CALL DELAY CALL BREAK ;JMP READ1MY_PROC ENDp BREAK PROC NEAR ;按任意键退出 PUSHF PUSH AX PUSH DX MOV AH,06H MOV DL,0FFH INT 21H JE RETURN MOV AX,4C00H INT 21HRETURN: POP DX POP AX POPF微机系统实验报告全文共24页,当前为第17页。 RET微机系统实验报告全文共24页,当前为第17页。BREAK ENDPDELAY PROC NEAR ;延时程序 PUSHF PUSH DX PUSH CX MOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CX JNZ D2 DEC DX JNZ D1 POP CX POP DX POPF RETDELAY ENDp;FUNCTIONCODEIO_port_addre EQU0CF8H ;32位配置地址端口IO_port_data EQU 0CFCH ;32位配置数据端口IO_PLX_ID EQU 200810B5H ;PCI卡设备及厂商IDBADR0 = 10H ;基地址寄存器0BADR1 = 14H ;基地址寄存器1BADR2 = 18H ;基地址寄存器2BADR3 = 1CH ;基地址寄存器3FINDPCI PROC NEAR ;查找PCI卡资源并显示 PUSHAD PUSHFD MOV EBX,080000000HFINDPCI_next: ADD EBX,100H CMP EBX,081000000H JNZ findpci_continue MOV DX,offsetpcicardnotfind ;显示未找到PCI卡提示信息 MOV AH,09H INT 21H MOV AH,4CH INT 21H ;退出findpci_continue: MOV DX,IO_port_addre MOV EAX,EBX OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 CMP EAX,IO_PLX_ID JNZ findpci_next ;检查是否发现PCI卡 MOV DX,IO_port_addre MOV EAX,EBX ADD EAX,BADR1 OUT DX,EAX ;写地址口 MOV DX,IO_port_data IN EAX,DX ;读数据口 MOV dwordptrIO_9054base_address,EAX AND EAX,1 JZ findPCI_next ;检查是否为i/o基址信息 MOV EAX,dwordptrIO_9054base_address AND EAX,0fffffffeh MOV dwordptrIO_9054base_address,EAX ;去除i/o指示位并保存 MOV DX,IO_port_addre MOV EAX,EBX ADD EAX,BADR2 OUT DX,EAX ;写地址口微机系统实验报告全文共24页,当前为第18页。 MOV DX,IO_port_data微机系统实验报告全文共24页,当前为第18页。 IN EAX,DX ;读数据口 MOV dwordptrIO_base_address,EAX AND EAX,1 JZ findPCI_next ;检查是否为i/o基址信息 MOV EAX,dwordptrIO_base_address AND EAX,0fffffffeh MOV dwordptrIO_base_address,EAX ;去除i/o指示位并保存 MOV DX,offsetgood ;显示开始执行程序信息 MOV AH,09H INT 21H POPfd POPad RETfindPCI ENDPMY_CODE ENDSEND MAIN 5实验结果L1以1HZ频率闪烁实验六16*16LED中文字幕移动实验.1实验目的熟悉并掌握系统中扩展键盘显示接口的方法。掌握键盘显示的工作原理和编程的方法.2实验内容(1)由键盘输入相应的数据在LED显示。在初始状态,没键按下时,最高位闪烁显示P,按一个键在LED上显示该键值(4个数码管同时显示一个值)。(2)修改程序,用一位数码管显示对应按下的键值,即‘0’—‘F’。 微机系统实验报告全文共24页,当前为第19页。实验原理图微机系统实验报告全文共24页,当前为第19页。代码MY_STACK SEGMENT PARA'STACK' DB 100DUP(?)MY_STACK ENDSMY_DATA SEGMENT PARA'DATA'IO_9054base_addressDB4DUP(0) ;PCI卡9054芯片I/O基地址暂存空间IO_base_addressDB4DUP(0) ;PCI卡I/O基地址暂存空间pcicardnotfind DB0DH,0AH,'pcicardnotfindoraddress/interrupterror!!!',0DH,0AH,'$'GOOD DB0DH,0AH,'TheProgramisExecuting!',0DH,0AH,'$'P8255_A DW 0000H P8255_B DW 0001HP8255_C DW 0002HP8255_MODE DW 0003HKVL DB 2DUP(?) ;击键次数备份,键值PT DB ? ;显示缓冲区指针DSBUF DB 4DUP(?) ;显示缓冲区KD DB ? ;数码管数据信号KH DB ? ;键盘行信号KL DB ? ;键盘列信号、数码管位选信号KVA DB ? ;键值备份 KVB DB ? ;在闪烁子程序中保存显示器原有的数据COUNT2 DB ? ;击键次数COUNT4 DB ? ;连续击键次数KTB DB 48H ;0 键码 DB 44H ;1 DB 34H ;2 DB 24H ;3 DB 42H ;4 DB 32H ;5 DB 22H ;6 DB 41H ;7 DB 31H ;8 DB 21H ;9 DB 11H ;A DB 12H ;B DB 14H ;C DB 18H ;D DB 28H ;E DB 38H ;F DB 00H ;10 SGTB DB 0C0H,0F9H,0A4H,0B0H,099H,92H,82H DB 0F8H,080H,90H,88H,83H,0C6H,0A1H DB 86H,8EH,0FFH,8CH,89H,8EH,0BFH,0F7H微机系统实验报告全文共24页,当前为第20页。MY_DATA ENDs微机系统实验报告全文共24页,当前为第20页。MY_CODE SEGMENTPARA'CODE'MY_PROC PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA, SS:MY_STACK START: .386 ;386模式编译 MOV AX,MY_DATA MOV DS,AX MOV ES,AX MOV AX,MY_STACK MOV SS,AX CALL FINDPCI ;自动查找PCI卡资源及IO口基址 MOV CX,wordptrIO_base_address ; MOV CX,0E800H ;直接加入(E800:本机PCI卡IO口基址) ADD P8255_A,CX ;PCI卡IO基址+偏移 ADD P8255_B,CX ADD P8255_C,CX ADD P8255_MODE,CX SSS: MOV DX,P8255_MODE MOV AL,81H ;写8255控制字A、B输出,C输入 OUT DX,AL START1: MOV BX,OFFSETDSBUF MOV PT,BL MOV DSBUF,15H ;_ MOVDSBUF+1,10H ;空格 MOVDSBUF+2,10H MOVDSBUF+3,10H;START2: CALL BLINK3 ;键盘扫描、显示子程序、光标闪动START3: CALL CHAG ;转数字键处理程序 JMP START2 ;转下一轮处理程序 MY_PROC ENDp CHAG PROC NEAR MOV BH,00H MOV BL,PT MOV AL,COUNT4 MOV[BX],AL ;键值送到显示缓冲区中 ;键值送到显示缓冲区中 CMP BX,OFFSET[DSBUF+3] JNZ CHAG2 mov BX,OFFSETDSBUF MOV PT,BLCHAG1: RET CHAG ENDp CHAG2: INC BL MOV PT,BL JMP CHAG1 BLINK PROC NEAR MOV CX,100H ;熄灭显示器时间常数 MOV BH,00H MOV BL,PT MOV Al,[BX] MOV KVB,AL ;保存原显示器数据 MOV AL,10H ;填入熄灭显示器的码 MOV [BX],ALBLINK1: CALL DSKS ;键盘扫描BLINK2: CMP COUNT4,10H JNZ BLINK6 ;键按下返回 LOOP BLINK1 ;没键按下继续循环 MOV AL,KVB MOV BL,PT MOV [BX],AL BLINK3: MOV CX,150H ;点亮显示器时间常数BLINK4: CALL DSKSBLINK5: CMP COUNT4,10H JNZ BLINK7 ;键按下返回 LOOP BLINK4 ;没键按下继续循环 JMP BLINKBLINK6: MOV AL,KVB ;恢复原显示器中的数据 MOV BL,PT MOV [BX],ALBLINK7: RET BLINK ENDp;;*****************************************************************************; /*键盘扫描处理程*/;***************************************************************************** ;DSKS PROC NEAR ;键盘扫描处理程序 PUSH CX CALL DSUP ;显示微机系统实验报告全文共24页,当前为第21页。 CALL KBS ;键盘扫描微机系统实验报告全文共24页,当前为第21页。 MOV AL,KVL+1 ;取上次按键键值 CMP KVA,AL ;与本次键值相比 MOV AL,KVL ;按键次数 MOV COUNT2,AL MOV AL,KVL MOV COUNT4,AL JZ DSKS1 MOV COUNT2,0FFH ;不相等,重新赋值 MOV COUNT4,0FFH DSKS1: DEC COUNT4 CMP COUNT4,0E0H ;为E0? JZ DSKS3 CMP COUNT4,0EH ;为0E? JZ DSKS3 CMP COUNT4,00H ;为00? JZ DSKS2 MOV COUNT4,10H ;赋值 DEC COUNT2 JMP DSKS4 DSKS2: MOV COUNT4,0FH ;按下键时间足够长则为连续击键DSKS3: MOV AL,COUNT4 MOV COUNT2,AL MOV AL,KVA MOV COUNT4,AL DSKS4: MOV AL,COUNT2 MOV KVL,AL MOV AL,KVA MOV KVL+1,AL ;备份键值 MOV AL,COUNT4 POP CX RET DSKS ENDp DSUP PROC NEAR PUSH CX MOV CX,01H ;显示器个数 MOV KL,01H ;选中的显示器 MOV BX,OFFSETDSBUF DSUP2: MOV AL,00H MOV DX,P8255_B ;关闭显示器 OUT DX,AL MOV AL,[BX] ;取显示缓冲区中的数据 PUSH BX MOV AH,00H MOV DI,AX MOV BX,OFFSETSGTB ;编码 MOV AX,[BX+DI] MOV AH,00H POP BX MOV DX,P8255_A ;送显示器显示 OUT DX,AL INC BX MOV AL,KL MOV DX,P8255_B ;送位选信号 OUT DX,AL SAL AL,1 MOV KL,AL ;下一位 PUSH CX MOV CX,-1 LOOP $ POP CX LOOP DSUP2 POP CX MOV AL,00H MOV DX,P8255_B ;关闭显示器 OUT DX,AL RETDSUP ENDpKBS PROC NEAR ;键盘扫描程序 MOV DX,P8255_A ;清显示器 MOV AL,0FFH OUT DX,AL MOV CX,04H ;送列数 MOV KL,0FEH ;扫描列初始值 KBS1: MOV AL,KL MOV DX,P8255_B ;逐列清零 OUT
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 肉鸡养殖合作合同协议
- 美妆产品置换合同协议
- 深圳购车补贴报销合同协议
- 游戏账号出售合同协议
- 渔业资源养护与捕捞合作合同
- 三方房屋租赁协议合同
- 2025年江苏省职业院校技能大赛高职组(烹饪)参考试题库及答案
- 《超高层建筑设计与构造》课件
- 淄博美景大揭秘
- 储能安全维护管理策略
- 产品思维到用户思维
- 华为成本控制 论文
- “九小”场所、沿街门店安全排查表
- GB/T 40822-2021道路车辆统一的诊断服务
- 仿生原理与创新设计课件
- 【自考练习题】大连理工大学概率论与数理统计真题汇总(附答案解析)
- 小儿吸痰法讲稿
- xx学校研学旅行活动告家长书
- (格式已排好)国家开放大学电大《计算机应用基础(专)》终结性考试大作业答案任务一
- 中秋节英文PPT
- 项目二:旅游电子商务概述(授课PPT)教学课件
评论
0/150
提交评论