微机系统实验报告.docx
《微机系统实验报告.docx》由会员分享,可在线阅读,更多相关《微机系统实验报告.docx(47页珍藏版)》请在冰豆网上搜索。
微机系统实验报告
西安电子科技大学
实验报告
课程名称
微机系统实验
成
绩
实验学时
6
评语:
指导教师:
年月日
实验一汇编语言编程实验
1实验目的
(1)掌握汇编语言的编程方法
(2)掌握DOS功能调用的使用方法
(3)掌握汇编语言程序的调试运行过程
2实验内容
(1)将指定数据区的字符串数据以ASCII码形式显示在屏幕上,并通过DOS功能调用完成必要提示信息的显示。
(2)在屏幕上显示自己的学号姓名信息。
(3)循环从键盘读入字符并回显在屏幕上,然后显示出对应字符的ASCII码,直到输入”Q”或“q”时结束。
(4)自主设计输入显示信息,完成编程与调试,演示实验结果。
3实验结果
任务一
4程序流程图
5程序代码
任务一
DATASEGMENT
NUMBERDB'03101214SONGYUANYUAN',0AH,0DH,'$'
string1DB0AH,0DH,'inputq/Qtoexit',0AH,0DH,0AH,0DH,'NUMBERANDNAME:
','$'
string2DB0AH,0DH,'Input:
$'
RESULTDB0AH,0DH,'ASCIIis:
$'
SDDB''
DATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DATA
START:
MOVAX,DATA
MOVDS,AX
MOVDX,OFFSETstring1
MOVAH,09H
INT21H
MOVDX,OFFSETNUMBER
INT21H
C1:
MOVDX,OFFSETstring2
MOVAH,09H
INT21H
MOVAH,01H
INT21H
CMPAL,'Q'
JZEXIT
CMPAL,'q'
JZEXIT
MOVSD,AL
MOVDX,OFFSETRESULT
MOVAH,09H
INT21H
MOVSI,OFFSETSD
MOVAL,DS:
[SI]
ANDAL,0F0H
MOVCL,4
SHRAL,CL
CMPAL,0AH
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
MOVAL,DS:
[SI]
ANDAL,0FH
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL
MOVAH,02H
INT21H
loopC1
EXIT:
MOVAX,4C00H
INT21H
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',0AH,0DH,0AH,0DH,'$'
MSG2DB0AH,0DH,0AH,0DH,'Input:
$'
MSG3DB0AH,0DH,'inputerror',0AH,0DH,'$'
BUFDB30H,30H,30H,31H,35H
DB10HDUP(0)
NDW0
DDATAENDS
CODESEGMENT
ASSUMECS:
CODE,DS:
DDATA
START:
MOVAX,DDATA
MOVDS,AX
MOVES,AX
MOVDI,OFFSETBUF
CLC
MOVDX,OFFSETMSG1
MOVAH,09H
INT21H
A1:
MOVAH,1;接收键盘输入
INT21H
INCN
STOSB;将输入数据存放在BUF缓冲区中
CMPAL,'Q'
JZEXIT
CMPAL,'q'
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中数据转换为二——十进制数
DECCX
A2:
IMULBX
MOVDX,AX
LODSB
MOVAH,0
A3:
SUBAL,30H
ADDAX,DX
LOOPA2
MOV[SI],AX
MOVDX,OFFSETMES
MOVAH,09H
INT21H
INCSI;显示高字节
CALLSHOW
DECSI;显示低字节
CALLSHOW
MOVDX,OFFSETMSG2
MOVAH,09H
INT21H
MOVAX,0
stosb
MOVAX,0
MOVCX,0
MOVBX,0
MOVDX,0
MOVDI,OFFSETBUF
CLC
MOVN,0
LOOPA1
EXIT:
MOVAX,4C00H
INT21H
ERROR:
MOVDX,OFFSETMSG3
MOVAH,09H
INT21H
MOVDX,OFFSETMSG2
MOVAH,09H
INT21H
JMPA1
SHOWPROCNEAR
MOVAL,DS:
[SI]
ANDAL,0F0H;取高4位
MOVCL,4
SHRAL,CL
CMPAL,0AH;是否是A以上的数
JBC2
ADDAL,07H
C2:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
MOVAL,DS:
[SI]
ANDAL,0FH;取低4位
CMPAL,0AH
JBC3
ADDAL,07H
C3:
ADDAL,30H
MOVDL,AL;showcharacter
MOVAH,02H
INT21H
RET
SHOWENDP
CODEENDS
ENDSTART
实验三基本IO口扩展实验
.1实验目的
了解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!
',0DH,0AH,'$'
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
MOVDS,AX
MOVES,AX
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