微机系统实验报告_第1页
微机系统实验报告_第2页
微机系统实验报告_第3页
微机系统实验报告_第4页
微机系统实验报告_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、32位微机系统与应用实验指南西安电子科技大学实验报告课程名称微机系统实验成绩实验学时6评语: 指导教师: 年 月 日实验一 汇编语言编程实验1 实验目的(1) 掌握汇编语言的编程方法(2) 掌握DOS功能调用的使用方法(3) 掌握汇编语言程序的调试运行过程2 实验内容(1) 将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。(2) 在屏幕上显示自己的学号姓名信息。(3) 循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。(4) 自主设计输入显示信息,完成编程与调试,演示实验结果。3 实验结果任务一

2、4 程序流程图 5 程序代码任务一 DATA SEGMENT NUMBER DB 03101214 SONG YUAN YUAN,0AH,0DH,$string1 DB 0AH,0DH, input q/Q to exit ,0AH,0DH,0AH,0DH,NUMBER AND NAME:,$string2 DB 0AH,0DH,Input: $RESULT DB 0AH,0DH,ASCII is :$SD DB DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET strin

3、g1 MOV AH,09H INT 21H MOV DX,OFFSET NUMBER INT 21HC1: MOV DX,OFFSET string2 MOV AH,09H INT 21H MOV AH,01H INT 21H CMP AL,Q JZ EXIT CMP AL,q JZ EXIT MOV SD,AL MOV DX ,OFFSET RESULT MOV AH,09H INT 21H MOV SI,OFFSET SD MOV AL,DS:SI AND AL,0F0H MOV CL,4 SHR AL,CL CMP AL,0AH JB C2 ADD AL,07HC2: ADD AL,30

4、H MOV DL,AL MOV AH,02H INT 21H MOV AL,DS:SI AND AL,0FH CMP AL,0AH JB C3 ADD AL,07HC3: ADD AL,30H MOV DL,AL MOV AH,02H INT 21H loop C1EXIT: MOV AX,4C00H INT 21HCODE ENDS END START 实验二 数码转换实验.1 实验目的(1) 掌握不同进制数及编码相互转换的程序设计方法。(2) 掌握运算类指令编程及调试方法。(3) 掌握循环程序的设计方法。2. 实验内容及说明(1) 重复从键盘输入不超过5位的十进制数,按回车键结束输入;(2

5、) 将该十进制数转换成二进制数;结果以16进制数的形式显示在屏幕上;(3) 如果输入非数字字符,则报告出错信息,重新输入;(4) 直到输入“Q”或q时程序运行结束。键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。 任务二 流程图任务二 ;PAGE60,132;本实验将输入的ASCII码转换为二进制,要求输入位数小于5DDATASEGMENTMESDB0AH,0DH,The ascii code of decimal code are: $MSG1 DB 0AH,0DH,exit,input: q/Q ,0AH,0DH,0AH,0DH,$MSG2 DB 0AH,0DH,0AH

6、,0DH,Input: $MSG3 DB 0AH,0DH,input error,0AH,0DH,$BUFDB30H,30H,30H,31H,35HDB10H DUP(0)NDW0DDATAENDSCODE SEGMENTASSUME CS:CODE,DS:DDATASTART:MOVAX,DDATAMOVDS,AXMOVES,AXMOV DI,OFFSET BUFCLCMOV DX,OFFSET MSG1 MOV AH,09H INT 21H A1: MOVAH,1;接收键盘输入INT21HINCNSTOSB;将输入数据存放在BUF缓冲区中CMP AL,QJZ EXITCMP AL,qJZ

7、EXITCMP AL,39HJA ERRORCMPAL,13JNEA1MOVCX,NDECCXMOV BX,000AHMOV SI,OFFSET BUFMOVAH,0MOVDX,0LODSBCMPCX,1JEA3SUB AL,30H;将BUF中数据转换为二十进制数DECCXA2:IMUL BXMOVDX,AXLODSBMOVAH,0A3:SUB AL,30HADDAX,DXLOOP A2MOV SI,AXMOVDX,OFFSET MESMOVAH,09HINT21HINCSI;显示高字节CALLSHOWDECSI;显示低字节CALLSHOWMOVDX,OFFSET MSG2MOVAH,09HI

8、NT21HMOV AX ,0stosb MOV AX ,0MOV CX ,0MOV BX ,0MOV DX,0MOV DI,OFFSET BUFCLCMOV N,0 LOOP A1 EXIT:MOVAX,4C00HINT21HERROR:MOVDX,OFFSET MSG3MOVAH,09HINT21HMOVDX,OFFSET MSG2MOVAH,09HINT21HJMP A1SHOWPROCNEARMOVAL,DS:SIANDAL,0F0H;取高4位MOVCL,4SHRAL,CLCMPAL,0AH;是否是A以上的数JBC2ADDAL,07HC2:ADDAL,30HMOVDL,AL;show c

9、haracter MOVAH,02HINT21HMOVAL,DS:SIANDAL,0FH;取低4位CMPAL,0AHJBC3ADD AL,07HC3:ADDAL,30HMOVDL,AL;show character MOVAH,02HINT21HRETSHOWENDPCODE ENDS END START 实验三 基本IO口扩展实验.1 实验目的了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。2实验内容74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。其引脚图如下:74LS273是一种带清除

10、功能的8D触发器, 1D8D为数据输入端,1Q8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。其引脚图如下:本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。具体实验内容如下:(1) 当开关Yi为低电平时对应的发光二极管点亮,Yi为高电平时对应的发光二极管灭。(2) 当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。(3) 当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。(4) 自主设计控制及显示模式,完成编程调试,演示实验结果。 3 实验原理图图3-2-1 74LS244与74LS273扩展I/O口原理图实验连

11、线图:图3-2-2 扩展I/O口连线图4 代码MY_STACKSEGMENTPARA STACK DB100 DUP(?)MY_STACKENDSMY_DATA SEGMENTPARA DATAIO_9054base_address DB 4 DUP(0);PCI卡9054芯片I/O基地址暂存空间IO_base_address DB 4 DUP(0);PCI卡I/O基地址暂存空间pcicardnotfindDB 0DH,0AH,pci card not find or address/interrupt error !,0DH,0AH,$GOODDB 0DH,0AH,The Program i

12、s Executing !,0DH,0AH,$LS244 DW 00000H LS273 DW 00020HRADB?LBDB ?DELAY_SETEQU 0FFFH;延时常数MY_DATA ENDsMY_CODE SEGMENT PARA CODEMY_PROCPROCFARASSUME CS:MY_CODE,DS:MY_DATA,SS:MY_STACKMAIN:.386;386模式编译MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALLFINDPCI;自动查找PCI卡资源及IO口基址MOVCX,word ptr IO_base_ad

13、dress ADDLS244,CX;PCI卡IO基址+偏移 ADDLS273,CX ;自己的程序 MOVRA,7FH MOVLB,0FEH READ1:MOVDX,LS244;读取开关状态INAL,DXCMP AL,0FFHJZ A1CMP AL,00HJZ A2NOTAL;取反MOVDX,LS273OUTDX,AL;送LED显示CALL DELAYCALLBREAKJMP READ1A1: MOV AL,0FEHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FDHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV

14、AL,0FBHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0F7HMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0EFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0DFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0BFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,07FHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKJMP READ1A

15、2: MOV AL,7FHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0BFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0DFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0EFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0F7HMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FBHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV

16、AL,0FDHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FEHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKJMP READ1MY_PROCENDpBREAK PROC NEAR;按任意键退出PUSHFPUSHAXPUSHDX MOV AH,06H MOV DL,0FFH INT 21H JE RETURNMOV AX,4C00H INT 21HRETURN:POPDXPOPAXPOPFRETBREAK ENDPDELAY PROC NEAR;延时程序PUSHFPUSHDXPUSHCXMOV DX,DELAY_SE

17、TD1: MOV CX,-1D2: DEC CX JNZ D2 DECDX JNZD1 POPCX POPDX POPF RETDELAY ENDp;FUNCTION CODEIO_port_addreEQU 0CF8H;32位配置地址端口IO_port_dataEQU0CFCH;32位配置数据端口IO_PLX_IDEQU200810B5H;PCI卡设备及厂商IDBADR0=10H;基地址寄存器0BADR1=14H;基地址寄存器1BADR2=18H;基地址寄存器2BADR3=1CH;基地址寄存器3FINDPCI PROCNEAR;查找PCI卡资源并显示PUSHADPUSHFDMOVEBX,08

18、0000000HFINDPCI_next:ADDEBX,100HCMP EBX,081000000HJNZ findpci_continueMOV DX,offset pcicardnotfind;显示未找到PCI卡提示信息MOV AH,09HINT 21HMOV AH,4CHINT 21H;退出findpci_continue:MOV DX,IO_port_addreMOV EAX,EBXOUT DX,EAX;写地址口MOV DX,IO_port_dataIN EAX,DX;读数据口CMP EAX,IO_PLX_IDJNZ findpci_next;检查是否发现PCI卡MOV DX,IO_p

19、ort_addreMOV EAX,EBX ADD EAX,BADR1OUT DX,EAX;写地址口MOV DX,IO_port_dataIN EAX,DX;读数据口MOV dword ptr IO_9054base_address,EAXAND EAX,1JZ findPCI_nex;检查是否为i/o基址信息MOV EAX,dword ptr IO_9054base_addressAND EAX,0fffffffeh MOV dword ptr IO_9054base_address,EAX;去除i/o指示位并保存MOV DX,IO_port_addreMOV EAX,EBXADD EAX,B

20、ADR2OUT DX,EAX;写地址口MOV DX,IO_port_dataIN EAX,DX;读数据口MOV dword ptr IO_base_address,EAXAND EAX,1JZ findPCI_next;检查是否为i/o基址信息MOV EAX,dword ptr IO_base_addressAND EAX,0fffffffehMOV dword ptr IO_base_address,EAX;去除i/o指示位并保存MOV DX,offset good;显示开始执行程序信息MOV AH,09HINT 21HPOPfdPOPadRETfindPCIENDPMY_CODE ENDS

21、END MAIN5 实验结果: 发光二极管Qi从右至左轮流点亮 实验四 可编程并行接口8255实验.1 实验目的了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。.2 实验内容(1) 流水灯实验:利用8255的A口、B口循环点亮发光二极管。(2) 交通灯实验:利用8255的A口模拟交通信号灯。(3) I/O输入输出实验:利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。(4) 通过开关控制交通红绿灯的亮灭。(5) 通过开关控制流水灯的循环方向和循环方式。3 流水灯实验原理图图6-3-6 流水灯实验4 代码MY_STACKSEGMENTPARA STACK

22、 DB100 DUP(?)MY_STACKENDSMY_DATA SEGMENTPARA DATAIO_9054base_address DB 4 DUP(0);PCI卡9054芯片I/O基地址暂存空间IO_base_address DB 4 DUP(0);PCI卡I/O基地址暂存空间pcicardnotfindDB 0DH,0AH,pci card not find or address/interrupt error !,0DH,0AH,$GOODDB 0DH,0AH,The Program is Executing !,0DH,0AH,$;LS244 DW 00000H LS273 DW

23、 00020HLS8255 DW 00000HLS8255W DW 00003HRADB?LBDB ?DELAY_SETEQU 0FFFH;延时常数MY_DATA ENDsMY_CODE SEGMENT PARA CODEMY_PROCPROCFARASSUME CS:MY_CODE,DS:MY_DATA,SS:MY_STACKMAIN:.386;386模式编译MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALLFINDPCI;自动查找PCI卡资源及IO口基址MOVCX,word ptr IO_base_address ADDLS825

24、5,CX;PCI卡IO基址+偏移 ADDLS8255W,CX ;自己的程序 MOVRA,7FH MOVLB,0FEH READ1:MOVAX,80H;读取开关状态MOV DX,LS8255WOUT DX,AXMOV DX,LS8255MOV AL,0FEHOUTDX,ALCALL DELAYCALLBREAKMOV AL,0FDHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FBHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKMOV AL,0F7HMOV DX,LS8255OUTDX,ALCALL DELAYC

25、ALLBREAKMOV AL,0EFHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKMOV AL,0DFHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKMOV AL,0BFHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKMOV AL,07FHMOV DX,LS8255OUTDX,ALCALL DELAYCALLBREAKJMP READ1;NOTAL;取反;MOVDX,LS273;OUTDX,AL;送LED显示;CALL DELAY;CALLBREAK;JMPREAD1MY_PROCENDpB

26、REAK PROC NEAR;按任意键退出PUSHFPUSHAXPUSHDX MOV AH,06H MOV DL,0FFH INT 21H JE RETURNMOV AX,4C00H INT 21HRETURN:POPDXPOPAXPOPFRETBREAK ENDPDELAY PROC NEAR;延时程序PUSHFPUSHDXPUSHCXMOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CX JNZ D2 DECDX JNZD1 POPCX POPDX POPF RETDELAY ENDp;FUNCTION CODEIO_port_addreEQU 0CF8H;32位配

27、置地址端口IO_port_dataEQU0CFCH;32位配置数据端口IO_PLX_IDEQU200810B5H;PCI卡设备及厂商IDBADR0=10H;基地址寄存器0BADR1=14H;基地址寄存器1BADR2=18H;基地址寄存器2BADR3=1CH;基地址寄存器3FINDPCI PROCNEAR;查找PCI卡资源并显示PUSHADPUSHFDMOVEBX,080000000HFINDPCI_next:ADDEBX,100HCMP EBX,081000000HJNZ findpci_continueMOV DX,offset pcicardnotfind;显示未找到PCI卡提示信息MOV

28、 AH,09HINT 21HMOV AH,4CHINT 21H;退出findpci_continue:MOV DX,IO_port_addreMOV EAX,EBXOUT DX,EAX;写地址口MOV DX,IO_port_dataIN EAX,DX;读数据口CMP EAX,IO_PLX_IDJNZ findpci_next;检查是否发现PCI卡MOV DX,IO_port_addreMOV EAX,EBX ADD EAX,BADR1OUT DX,EAX;写地址口MOV DX,IO_port_dataIN EAX,DX;读数据口MOV dword ptr IO_9054base_address

29、,EAXAND EAX,1JZ findPCI_next;检查是否为i/o基址信息 MOV EAX,dword ptr IO_9054base_addressAND EAX,0fffffffeh MOV dword ptr IO_9054base_address,EAX;去除i/o指示位并保存MOV DX,IO_port_addreMOV EAX,EBXADD EAX,BADR2OUT DX,EAX;写地址口MOV DX,IO_port_dataIN EAX,DX;读数据口MOV dword ptr IO_base_address,EAXAND EAX,1JZ findPCI_next;检查是

30、否为i/o基址信息MOV EAX,dword ptr IO_base_addressAND EAX,0fffffffehMOV dword ptr IO_base_address,EAX;去除i/o指示位并保存MOV DX,offset good;显示开始执行程序信息MOV AH,09HINT 21HPOPfdPOPadRETfindPCIENDPRIGHT: MOV AL,0FEHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FDHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FBHMOVDX,LS2

31、73OUTDX,ALCALL DELAYCALLBREAKMOV AL,0F7HMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0EFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0DFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0BFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,07FHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKJMP READ1LEFT: MOV AL,7FHM

32、OVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0BFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0DFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0EFHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0F7HMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FBHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FDHMOVDX,L

33、S273OUTDX,ALCALL DELAYCALLBREAKMOV AL,0FEHMOVDX,LS273OUTDX,ALCALL DELAYCALLBREAKJMP READ1MY_CODE ENDSEND MAIN5 实验结果: 发光二极管Qi轮流点亮实验五 可编程定时器/计数器8254(8253)实验.1 实验目的(1)掌握8254定时/计数器的编程方法。(2)学习8254的几种工作方式。(3)了解计数器的硬件连接及时序关系。.2 实验内容(1)将32Hz的晶振频率作为8254 的时钟输入,利用定时器 8254 产生 1Hz 的方波,用发光二极管显示输出结果(发光二极管闪烁)。(2)开关

34、控制结束程序执行,发光二极管熄灭。(3)开关控制发光二极管闪烁的速度(输出不同频率的方波)。图3-3-1 可编程定时器/计数器8254管脚图3实验原理图4 代码MY_STACKSEGMENTPARA STACK DB100 DUP(?)MY_STACKENDSMY_DATA SEGMENTPARA DATAIO_9054base_address DB 4 DUP(0);PCI卡9054芯片I/O基地址暂存空间IO_base_address DB 4 DUP(0);PCI卡I/O基地址暂存空间pcicardnotfindDB 0DH,0AH,pci card not find or addres

35、s/interrupt error !,0DH,0AH,$GOODDB 0DH,0AH,The Program is Executing !,0DH,0AH,$D8254A DW 00000H D8254B DW 00001HD8254C DW 00010HMEMO DW 00003HLS273 DW 00020HRADB?LBDB ?DELAY_SETEQU 0FFFH;延时常数MY_DATA ENDsMY_CODE SEGMENT PARA CODEMY_PROCPROCFARASSUME CS:MY_CODE,DS:MY_DATA,SS:MY_STACKMAIN:.386;386模式编译

36、MOVAX,MY_DATAMOVDS,AXMOVES,AXMOVAX,MY_STACKMOVSS,AXCALLFINDPCI;自动查找PCI卡资源及IO口基址MOVCX,word ptr IO_base_address ;- ADDLS244,CX;PCI卡IO基址+偏移 ADDLS273,CX ADD D8254A,CX ADD MEMO,CX ;自己的程序 MOVRA,7FH MOVLB,0FEH READ1: MOV AL,17HMOV DX,MEMOOUT DX,AL;送LED显示MOV AL,32HMOV DX,D8254AOUT DX,ALCALL DELAYCALLBREAK ;

37、 JMPREAD1MY_PROCENDp BREAK PROC NEAR;按任意键退出PUSHFPUSHAXPUSHDX MOV AH,06H MOV DL,0FFH INT 21H JE RETURNMOV AX,4C00H INT 21HRETURN:POPDXPOPAXPOPFRETBREAK ENDPDELAY PROC NEAR;延时程序PUSHFPUSHDXPUSHCXMOV DX,DELAY_SETD1: MOV CX,-1D2: DEC CX JNZ D2 DECDX JNZD1 POPCX POPDX POPF RETDELAY ENDp;FUNCTION CODEIO_port_addreEQU 0CF8H;32位配置地址端口IO_port_dataEQU0CFCH;32位配置数据端口IO_PLX_IDEQU200810B5H;PCI卡设备及厂商IDBADR0=10H;基地址寄存器0BADR1=14H;基地址寄存器1BADR2=18H;基地址寄存器2BADR3=1CH;基地址寄存器3FINDPCI PROCNEAR;查找PCI卡资源并显示PUSHADPUSHFDMOVEBX,080000000HFINDPCI_next:ADDEBX,100HCMP EBX,081000000HJNZ findpci_continu

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论