微机系统实验报告Word格式.docx
《微机系统实验报告Word格式.docx》由会员分享,可在线阅读,更多相关《微机系统实验报告Word格式.docx(47页珍藏版)》请在冰豆网上搜索。
Input:
$'
RESULTDB0AH,0DH,'
ASCIIis:
SDDB'
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETstring1
MOVAH,09H
INT21H
MOVDX,OFFSETNUMBER
C1:
MOVDX,OFFSETstring2
MOVAH,01H
CMPAL,'
Q'
JZEXIT
q'
MOVSD,AL
MOVDX,OFFSETRESULT
MOVSI,OFFSETSD
MOVAL,DS:
[SI]
ANDAL,0F0H
MOVCL,4
SHRAL,CL
CMPAL,0AH
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL
MOVAH,02H
ANDAL,0FH
JBC3
C3:
loopC1
EXIT:
MOVAX,4C00H
CODEENDS
ENDSTART
实验二数码转换实验
.1实验目的
(1)掌握不同进制数及编码相互转换的程序设计方法。
(2)掌握运算类指令编程及调试方法。
(3)掌握循环程序的设计方法。
2.实验内容及说明
(1)重复从键盘输入不超过5位的十进制数,按回车键结束输入;
(2)将该十进制数转换成二进制数;
结果以16进制数的形式显示在屏幕上;
(3)如果输入非数字字符,则报告出错信息,重新输入;
(4)直到输入“Q”或‘q’时程序运行结束。
键盘输入一字符串,以空格结束,统计其中数字字符的个数,并在屏幕显示。
任务二
流程图
;
PAGE60,132
;
本实验将输入的ASCII码转换为二进制,要求输入位数小于5
DDATASEGMENT
MESDB0AH,0DH,'
Theasciicodeofdecimalcodeare:
MSG1DB0AH,0DH,'
exit,input:
q/Q'
MSG2DB0AH,0DH,0AH,0DH,'
MSG3DB0AH,0DH,'
inputerror'
BUFDB30H,30H,30H,31H,35H
DB10HDUP(0)
NDW0
DDATAENDS
CODESEGMENT
ASSUMECS:
DDATA
START:
MOVAX,DDATA
MOVDS,AX
MOVES,AX
MOVDI,OFFSETBUF
CLC
MOVDX,OFFSETMSG1
MOVAH,09H
INT21H
A1:
MOVAH,1;
接收键盘输入
INT21H
INCN
STOSB;
将输入数据存放在BUF缓冲区中
CMPAL,'
JZEXIT
CMPAL,39H
JAERROR
CMPAL,13
JNEA1
MOVCX,N
DECCX
MOVBX,000AH
MOVSI,OFFSETBUF
MOVAH,0
MOVDX,0
LODSB
CMPCX,1
JEA3
SUBAL,30H;
将BUF中数据转换为二——十进制数
A2:
IMULBX
MOVDX,AX
A3:
SUBAL,30H
ADDAX,DX
LOOPA2
MOV[SI],AX
MOVDX,OFFSETMES
MOVAH,09H
INCSI;
显示高字节
CALLSHOW
DECSI;
显示低字节
MOVDX,OFFSETMSG2
MOVAX,0
stosb
MOVCX,0
MOVBX,0
MOVDX,0
MOVN,0
LOOPA1
EXIT:
MOVAX,4C00H
ERROR:
MOVDX,OFFSETMSG3
JMPA1
SHOWPROCNEAR
MOVAL,DS:
ANDAL,0F0H;
取高4位
MOVCL,4
SHRAL,CL
CMPAL,0AH;
是否是A以上的数
JBC2
ADDAL,07H
ADDAL,30H
MOVDL,AL;
showcharacter
MOVAH,02H
ANDAL,0FH;
取低4位
CMPAL,0AH
JBC3
ADDAL,07H
ADDAL,30H
RET
SHOWENDP
CODEENDS
ENDSTART
实验三基本IO口扩展实验
了解TTL芯片扩展简单I/O口的方法,掌握数据输入输出程序编制的方法。
2实验内容
74LS244是一种三态输出的8总线缓冲驱动器,无锁存功能,当G为低电平时,Ai信号传送到Yi,当为高电平时,Yi处于禁止高阻状态。
其引脚图如下:
74LS273是一种带清除功能的8D触发器,1D~8D为数据输入端,1Q~8Q为数据输出端,正脉冲触发,低电平清除,常用作8位地址锁存器。
本实验要求用74LS244作为输入口,读取开关状态,并将此状态通过74LS273连接到发光二极管显示。
具体实验内容如下:
(1)当开关Yi为低电平时对应的发光二极管点亮,Yi为高电平时对应的发光二极管灭。
(2)当开关Yi全为高电平时,发光二极管Qi从左至右轮流点亮。
(3)当开关Yi全为低电平时,发光二极管Qi从右至左轮流点亮。
(4)自主设计控制及显示模式,完成编程调试,演示实验结果。
3实验原理图
图3-2-174LS244与74LS273扩展I/O口原理图
实验连线图:
图3-2-2扩展I/O口连线图
4代码
MY_STACKSEGMENTPARA'
STACK'
DB100DUP(?
)
MY_STACKENDS
MY_DATASEGMENTPARA'
DATA'
IO_9054base_addressDB4DUP(0);
PCI卡9054芯片I/O基地址暂存空间
IO_base_addressDB4DUP(0);
PCI卡I/O基地址暂存空间
pcicardnotfindDB0DH,0AH,'
pcicardnotfindoraddress/interrupterror!
!
0DH,0AH,'
GOODDB0DH,0AH,'
TheProgramisExecuting!
LS244DW00000H
LS273DW00020H
RADB?
LBDB?
DELAY_SETEQU0FFFH;
延时常数
MY_DATAENDs
MY_CODESEGMENTPARA'
CODE'
MY_PROCPROCFAR
ASSUMECS:
MY_CODE,DS:
MY_DATA,SS:
MY_STACK
MAIN:
.386;
386模式编译
MOVAX,MY_DATA
MOVAX,MY_STACK
MOVSS,AX
CALLFINDPCI;
自动查找PCI卡资源及IO口基址
MOVCX,wordptrIO_base_address
ADDLS244,CX;
PCI卡IO基址+偏移
ADDLS273,CX
;
自己的程序
MOVRA,7FH
MOVLB,0FEH
READ1:
MOVDX,LS244;
读取开关状态
INAL,DX
CMPAL,0FFH
JZA1
CMPAL,00H
JZA2
NOTAL;
取反
MOVDX,LS273
OUTDX,AL;
送LED显示
CALLDELAY
CALLBREAK
JMPREAD1
A1:
MOVAL,0FEH
OUTDX,AL
MOVAL,0FDH
MOVAL,0FBH
MOVAL,0F7H
MOVAL,0EFH
MOVAL,0DFH
MOVAL,0BFH
MOVAL,07FH
A2:
MOVAL,7FH
MOVAL,0FEH
MY_PROCENDp
BREAKPROCNEAR;
按任意键退出
PUSHF
PUSHAX
PUSHDX
MOVAH,06H
MOVDL,0FFH
JERETURN
MOVAX,4C00H
RETURN:
POPDX
POPAX
POPF
BREAKENDP
DELAYPROCNEAR;
延时程序
PUSHCX
MOVDX,DELAY_SET
D1:
MOVCX,-1
D2:
DECCX
JNZD2
DECDX
JNZD1
POPCX
POPDX
POPF
DELAYENDp
FUNCTIONCODE
IO_port_addreEQU0CF8H;
32位配置地址端口
IO_port_dataEQU0CFCH;
32位配置数据端口
IO_PLX_IDEQU200810B5H;
PCI卡设备及厂商ID
BADR0=10H;
基地址寄存器0
BADR1=14H;
基地址寄存器1
BADR2=18H;
基地址寄存器2
BADR3=1CH;
基地址寄存器3
FINDPCIPROCNEAR;
查找PCI卡资源并显示
PUSHAD
PUSHFD
MOVEBX,080000000H
FINDPCI_next:
ADDEBX,100H
CMPEBX,081000000H
JNZfindpci_continue
MOVDX,offsetpcicardnotfind;
显示未找到PCI卡提示信息
MOVAH,4CH
INT21H;
退出
findpci_continue:
MOVDX,IO_port_addre
MOVEAX,EBX
OUTDX,EAX;
写地址口
MOVDX,IO_port_data
INEAX,DX;
读数据口
CMPEAX,IO_PLX_ID
JNZfindpci_next;
检查是否发现PCI卡
ADDEAX,BADR1
OUTDX,EAX;
INEAX,DX;
MOVdwordptrIO_9054base_address,EAX
ANDEAX,1
JZfindPCI_nex;
检查是否为i/o基址信息MOVEAX,dwordptrIO_9054base_address
ANDEAX,0fffffffeh
MOVdwordptrIO_9054base_address,EAX;
去除i/o指示位并保存MOVDX,IO_port_addre
ADDEAX,BADR2
MOVdwordptrIO_base_address,EAX
JZfindPCI_next;
检查是否为i/o基址信息MOVEAX,dwordptrIO_base_address
MOVdwordptrIO_base_address,EAX;
去除i/o指示位并保存
MOVDX,offsetgood;
显示开始执行程序信息
POPfd
POPad
findPCIENDP
MY_CODEENDS
ENDMAIN
5实验结果:
发光二极管Qi从右至左轮流点亮
实验四可编程并行接口8255实验
了解可编程并行接口芯片8255的内部结构、工作方式、初始化编程及应用。
.2实验内容
(1)流水灯实验:
利用8255的A口、B口循环点亮发光二极管。
(2)交通灯实验:
利用8255的A口模拟交通信号灯。
(3)I/O输入输出实验:
利用8255的A口读取开关状态,8255的B口把状态送发光二极管显示。
(4)通过开关控制交通红绿灯的亮灭。
(5)通过开关控制流水灯的循环方向和循环方式。
3流水灯实验原理图
LS8255DW00000H
LS8255WDW00003H
ADDLS8255,CX;
ADDLS8255W,CX
MOVAX,80H;
MOVDX,LS8255W
OUTDX,AX
MOVDX,LS8255
MOVAL