微机原理实验用格形式显示字符
- 格式:doc
- 大小:167.00 KB
- 文档页数:4
实验一、I/O程序设计一.实验内容:I/O程序设计(一)实验内容:1.编程由键盘输入任意一个字符,将该字符的ASCII码值显示在屏幕上。
2.从键盘输入两个1位十进制数,计算二者之和,并将结果显示在屏幕上。
3.编程由键盘输入任意一位数,将该数以二进制数形式显示在屏幕上,例:5=00000101B (二)实验步骤: 1. 画出实验流程图。
2. 运行Tddebug软件,选择Edit菜单编写实验程序 3. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接,生成执行文件。
4. 使用Rmrun菜单中的Run运行程序,观察运行结果。
5. 使用Rmrun菜单中的Debug调试程序。
单步执行指令,观察各寄存器及数据区的内容。
6. 更改数据区中的数据,考察程序的正确性。
二.分析设计思想。
设计思路:首先将该数以十六进制数形式分解,然后将每一位分别转换为ASCII码送屏幕显示。
其中0H~9H之间的数加30H,即可得0H~9H的ASCII码,而AH~FH的ASCII码,则需再加7H,参见表5-1。
参考程序流程如图2-1所示。
示例程序参见参考程序清单。
三.程序清单及流程DATA SEGMENTMES DB 'Show a as hex:',0AH,0DH,'$'SD DB 'a'DA TA ENDSCODE SEGMENTASSUME CS:CODE,DS:DA TASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MES ;显示提示信息MOV AH,09H INT 21HMOV SI,OFFSET SD 4MOV AL,DS:[SI]AND AL,0F0H ;取高4位MOV CL,4SHR AL,CLCMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AL,DS:[SI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AH,4CH ;返回DOSINT 21HCODE ENDSEND START四.实验结果。
某某学院微机原理课程设计2013级电气工程及其自动化专业班级题目字符图形显示姓名学号指导教师职称二О一三年12 月13 日摘要 (3)一、字符图形显示的基本原理 (4)二、设计方案 (4)三、硬件设计 (4)四、软件设计 (5)4.1 主模块及子模块说明 (5)五、设计体会 (13)参考文献 (14)摘要本课程设计是通过使用汇编语言来完成的,具体实现的方法可以通过在MASM使用环境下运行,也可以通过在DOS环境下完成。
我做的课程设计是通过编写汇编语言程序,实现字符图形的显示。
在编写初期,我对字符“SPORT”进行了设计,确定了每个字符所在的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。
接着开始编写程序,编写完程序后,对程序进行了注释,最后调试出所要求的字符。
本程序可以在DOS环境和MASM环境下运行,要求我们熟悉BIOS中断10的各种功能。
整个课程设计的过程,是一个不断学习、不断实践的过程,从而提高了我们的编程能力和程序开发思想,也提高了我们自主学习的能力。
关键词:字符显示,10号中断,图形,BIOS一、字符图形显示的基本原理字符图形显示可以在DOS环境下完成,编写完程序后分析并理解每条程序的意思,并解释主要程序的意思,最后调试出所要求的字符。
在程序编写前,我首先对自己显示的图形进行了设计,确定了每个数字相对于前一个数字的位置,以便在编写程序的时候正确定义字符的属性,也为在显示的时候能够显示较好的效果,打下了基础。
本次实验实验的编写环境是MASM,编译、链接也是在该环境下实现的。
程序的运行我使用的是DOS环境。
通过参考网上的一些原程序,要编写好该程序,首先应该对BIOS的中断熟悉,因此程序编写前,我先认真学习了该BIOS中断的有关功能。
二、设计方案在课程设计之前,首先要明确设计的目的。
本次课程设计的题目是字符图形显示,要求我们能够编写一个汇编程序,正确的显示所要求的字符。
微机原理及接口技术实验报告实验项目名称:显示一个字符串实验日期:实验成绩:实验评定标准:一、实验目的1.熟悉汇编语言源程序上机的过程和方法2.掌握宏汇编程序MASM5.1的链接程序LINK3.6的使用方法。
3.了解DEBUG调试汇编语言程序的过程和方法。
二、实验器材电脑、微型计算机原理及应用实验指导书及教科书三、实验内容(实验过程)1.编辑源程序利用文本编辑工具,生成一个汇编程语言程序的纯文本文件ASM。
在汇编源程序中,一行只能写一条语句。
2.汇编源程序3.链接目标程序4.调试可执行程序四、实验程序data segmentmesage db" how do you do" ,0dh,0ah,24hdata endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axlea dx,mesagemov ah,09hint 21hmov ah,4chint 21hcode endsend start四、实验结果及分析分析:在汇编链接目标文件之后执行文件会出现“how do you do”。
若改变mesage db" how do you do" ,0dh,0ah,24h中的how do you do输入你想输出的字符串就可以了。
如果程序执行情况与预期不同,或执行时操作系统报告出错信息,就要通过调试工具进行动态调试,查找程序的问题。
查到问题后,又重回到第一步,重新开始,修改源程序问题。
实验时间:2014年6月4日实验成绩评定:姓名:黄涛学号:2012311419实验七屏幕字符显示程序实验目的:通过实验掌握下列知识:1、8086/8088指令: JMP,CMP,LEA,CMPBS。
2、利用DOS功能调用INT21H的2号、8号、9号和0A号功能进行屏幕显示的方法。
3、IBM-PC机的ASCII码表及控制字符。
实验内容及步骤:一、利用INT 21H 2号功能显示字符:1、用A命令在100H处键入下列程序:XOR DL,DLMOV CX,100LOP:MOV AH,2INT 21INC DLPUSH CXMOV CX,8DELY: PUSH CXMOV CX,0J: LOOP JPOP CXLOOP DELYPOP CXLOOP LOPINT 202、用G命令运行程序,即在屏幕上依次缓慢的显示256个ASCII字符。
仔细观察每个字符,和IBM-PC ASCII码表对照,看07H-0DH处控制字符显示结果与表上有何不同?3、按CTRL+BREAK退出此程序,若一次不行可多做几次。
二、自编一个程序, 在显示器上显示“How are you ?”,然后读一个字符,但不显示此字符,若读入字符是‘y’,则显示‘ok’。
解:程序如下:DSEG SEGMENTDAT1 DB 'HOW ARE YOU?',0DH,0AH,'$'DAT2 DB 'OK',0DH,0AH,'$'DSEG ENDSCSEG SEGMENTASSUME CS:CSEG,DS:DSEGSTART: MOV AX,DSEGMOV DS,AXMOV DX,OFFSET DAT1MOV AH,9INT 21HMOV AH,8INT 21HCMP AL,'Y'JNE NEXTLEA DX,DAT2MOV AH,9INT 21HNEXT: MOV AH,4CHINT 21HCSEG ENDSEND START程序编译:程序运行:1.输入“Y”:2.输入其他字符:三、自编一个程序, 屏幕显示“PASS WORD ?”,随后从键盘读入字符串,并比较这个字符串与内部设定的字符串,若两者相同,则显示“ok”,否则不作任何显示。
实验课程名称微机原理实验实验项目名称用表格形式显示字符实验指导教师学生姓名学院理学院专业电子信息科学与技术年级2020级(一)班学号实验时间2020年12月20日总成绩教师签名1. 实验目的⑴熟悉堆栈指令的功能与应用。
⑵把握子程序挪用的方式和应用。
⑶把握经常使用寄放器的利用方式和不同寄放器的利用限制。
2. 实验内容⑴按15*16的表格形式显示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的顺序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白字符(ASCII码为0)隔开。
3. 实验预备⑴熟悉堆栈指令概念、功能及应用。
⑵认真预习有关子程序挪用的方式、了解入口参数及出口参数、元挪用及进挪用。
③按正常的方式编写程序实现表格显示(15×16)ASCII的所有字符。
4. 实验步骤实验1 用表格形式显示字符一、题目:用表格形式显示ASCII字符二、实验要求:按15*16的表格形式显示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的顺序依次显示对应的字符。
每16个字符为一行,每行中的相邻两个字符之间用空白字符(ASCII码为0)隔开。
3、提示:⑴显示每一个字符可利用功能号为2的显示输出功能挪用MOV AH,2MOV DL,10H;字符从10H开始,每显示一个DL+1产生下一个字符INT 21H⑵显示空白符时DL=00H;⑶每行显示终止时需要显示回车(ASCII码为0DH)和换行(ASCII码为0AH),本行显示终止后可另起一行显示。
分析:①此题中可把DL初始化为10H, 然后不断使其加1(用INC指令) 以取得下一个字符的ASCII码。
②显示空白符时,用其ASCII码0置入DL 寄放器,每行终止时,用显示回车(ASC||为0DH)和换行符(ASCII为0AH)来终止本行并开始下一行。
③由于逐个显示接踵的ASCII字符时,需要保留并非断修改dl寄放器的内容,而显示空白、回车、换行符时也需要利用DL寄放器,为此可利用堆栈来保留接踵的ASCII字符。
北京X X大学实验报告课程(项目)名称:实验二屏幕字符显示程序学院:专业:班级:学号:姓名:成绩:2013年 12月 10 日一、任务与目的1. 实验任务:(1) 熟悉和掌握利用DOS调用进行屏幕显示的方法;(2) 掌握屏幕字符显示程序的编写。
2. 实验目的:(1) 熟悉字符串表示的语法结构;(2) 熟悉利用DOS调用编写字符屏幕显示的基本程序。
二、原理(条件)1.相关知识:(1) 字符串显示格式;(2) 熟悉DOS调用使用方法。
2.实验条件:MASM汇编程序及TD调试软件。
三、内容步骤1.编写程序在屏幕上显示“Our Team: 姓名拼音+姓名拼音!”,观察执行情况并分析结果。
参考程序如下,请在参考程序之上改写。
DATA SEGMENTSTRING DB 'hello,everybody!.You cannot improve your past, but you can improve your future. Once time is wasted, life is wasted.',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,STRINGMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START四、数据处理(现象分析)实验结果:实现代码:DATA SEGMENTSTRING DB 'Our team:Lingwei zhangzhengqiangcaoruanruan',0DH,0AH,'$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXLEA DX,STRINGMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START五、结论通过参照示例程序完成实验时,对实验结果的观察并结合课本对实验现象的分析可得知:DOS系统功能调用是利用软中断指令INT 21来实现的,方法如下,1.AH←功能号;2.在指定寄存器中放入该功能所要求的入口参数;3.执行INT 21H指令;4.分析出口参数此外,要将一个字符串送到显示器显示,需要调用DOS功能的9号功能,该功能要求被显示的字符串必须以“$”字符作为结束符,否则会引起屏幕乱码。
微机原理与接口技术实验讲义物理与电子工程学院罗长更显示程序实验 (3)数据传送实验 (4)运算类程序实验 (6)分支程序设计实验 (14)循环程序设计实验 (16)综合程序设计实验 (18)SHR AL,4图1CMP AL,0AH ;是否是A以上的数JB C2ADD AL,07HC2: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AL,DS:[DI]AND AL,0FH ;取低4位CMP AL,0AHJB C3ADD AL,07HC3: ADD AL,30HMOV DL,AL ;显示字符MOV AH,02HINT 21HMOV AX,4C00H ;返回DOSINT 21HCODE E NDSEND START数据传送实验END START将程序主体部分的寄存器间接寻址方式改为相对寻址方式,则如下所示:MOV BX,0MOV CX,LENNEXT: MOV AL,MSR[BX]MOV ES:MSD[BX],ALINC BXLOOP NEXT运算类程序实验实验目的(1) 掌握运算类指令编程及调试方法。
(2) 掌握运算类指令对各状态标志位的影响及测试方法。
实验内容及说明80x86指令系统提供了实现加、减、乘、除运算的基本指令,可对表1所示的数据类型进行算术运算。
表11.二进制双精度加法运算本实验要求计算X+Y=Z,将结果Z输出到屏幕,其中X=001565A0H,Y=0021B79EH。
实验利用累加器AX,先求低十六位和,并存入低址存储单元,后求高16位和,再存入高址存储单元。
由于低位和可能向高位有进位,因而高位字相加语句需用ADC指令,则低位相加有进位时,CF=1,高位字相加时,同时加上CF中的1。
在80386以上微机中可以直接使用32位寄存器和32位加法指令完成本实验的功能。
2.十进制数的BCD码减法运算本实验要求计算X-Y=Z,其中,X、Y、Z为BCD码,其中X=0400H,Y=0102H。
实验9键盘扫描及显示实验
实验时间2019年12月18日
实验类型■验证性□设计性□综合性
1.实验目的
了解键盘扫描及数码显示的基本原理,熟悉8255的编程。
2.实验内容及过程(主要内容、操作步骤)
将8255单元与键盘及数码管显示单元连接,编写实验程序,扫描键盘输入,并将扫描结果送数码管显示。
键盘采用4X4键盘,每个数码管显示值可为0~F 共16个数。
实验具体内容如下:将键盘进行编号,记作0~F,当按下其中-一个按键时,将该按键对应的编号在一个数码管上显示出来,当再按下一个按键时,便将这个按键的编号在下一个数码管上显示出来,数码管上可以显示最近4次按下的按键编号。
3.测试数据及实验结果
4.实验分析及总结(主要考察内容)
通过本次实验,我理解了键盘扫描及数码显示的基本原理,通过理解分析程序,自己对程序进行了一些总结和修改,并进行了验证,进一步掌握了微机接口的学习方法。
教师评阅
评价指标:实验目的、操作步骤、设计、算法、程序结构、实验结果、实验分析、实验总结
1/ 1。
2.1系统生疏试验【试验目的】把握TD 系列微机原理及接口技术教学试验系统的操作,生疏Wmd86 联机集成开发调试软件的调试环境。
【试验设备】PC 机一台,TD-PITE 试验装置一套。
【试验内容】编写试验程序,将00H~0FH 共16 个数写入到内存3000H 开头的连续16 个存储单元中。
【试验步骤】1.运行Wmd86 软件,进入Wmd86 集成开发环境。
2.在设置菜单中选择“汇编语言”和“16 位存放器”。
3.单击文集菜单的建命令,建一个文档,默认文件名为Wmd861。
4.编写试验程序,并保存,此时系统会提示输入的文件名,输完后点击保存。
5.单击编译文件,假设程序编译无误,则科技连续单击进展链接,链接无误前方可以加载程序。
6.连接PC 与试验系统的通讯电缆,翻开试验系统电源。
7.编译、链接都正确并且上下机通讯成功后,就可以下载程序,联机调试了。
可以通过端口列表中的“端口测试”来检查通讯是否正常。
点击下载程序。
为编译、链接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。
下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。
起始运行语句下会有一条绿色的背景。
8.将输出区切换到调试窗口,试验命令D0000:3000 查看内存3000H 起始地址的数据。
9.点击按钮运行程序,等待程序运行停顿后,通过命令来观看程序结果。
10.也可以设置端点,要修改内存中的数据可以使用命令E,如E0000:3000 可以修改地址0000:3000 处的数据,修改完一个后,可按“空格”键连续输入下一个数。
输入完成后按“回车”键退出。
2.2数制转换试验【试验目的】1 把握不同进制数及编码相互转换的程序设计方法,加深对数值转换的理解。
2.生疏程序调试的方法。
【试验设备】PC 机一台,TD-PITE 试验装置一套。
【试验内容】编写程序,将ASCII 码表示的十进制数转换为二进制数。
【试验步骤】1.依据程序流程图编写程序。
微机原理实验2 字符及字符串的输入与输出班级学号姓名实验时间:年月日实验成绩:1.实验目的利用汇编及连接程序,实现字符及字符串的输入与输出,要求运用系统功能调用INT21H。
完成创建源程序文件,汇编,连接,运行,实验结果的查看。
完成下面两个任务:a.在屏幕上显示‘hello,world!’b.从键盘上输入一个英文字符,然后显示其ascii二进制代码。
2.实验原理a.输入单字符这是1号系统功能调用,使用格式如下所示:它没有入口参数,执行1号系统功能调用时,系统等待键盘输入,待程序员按下任何一键,系统先检查是否Ctrl-Break键,如果是则退出,否则将键入字符的ASCII码置入AL寄存器中,并在屏幕上显示该字符b.输入字符串这是0AH号系统功能调用,其功能是将键盘输入的字符串写入到内存缓冲区中,因此必须事先在内存储器中定义一个缓冲区。
其第1字节给定该缓冲区中能存放的字节个数,第2字节留给系统填写实际键入的字符个数,从第3个字节开始用来存放键入的字符串,最后键入回车键表示字符串结束。
如果实际键入的字符数不足填满缓冲区时,则其余字节填“0”;如果实际键入的字符数超过缓冲区的容量,则超出的字符将被丢失,而且响铃,表示向程序员发出警告。
0AH号系统功能调用的使用格式如下所示:……BUF DB 20DB ? 定义缓冲区DB 20 DUP(?)……MOV DX,OFFSET BUFMOV AH,0AH 0AH号系统功能调用INT 21H以上程序中,由变量定义语句定义了一个可存放20个字节的缓冲区,执行到INT21H 指令时,系统等待用户键入字符串。
程序员每键入一个字符,其相应的ASCII码将被写入缓冲区中,待程序员最后键入回车键时,由系统输出实际键入的字符数,并将其写入缓冲区的第2字节中。
c.单字符这是2号系统功能调用,使用格式如下所示:MOV DL,‘A’MOV AH,2INT 21H执行2号系统功能调用时,将置入DL寄存器中的字符从屏幕上显示输出(或打印机打印输出)。
实验课程名称微机原理实验
实验项目名称用表格形式显示字符
实验指导老师
学生姓名
学院理学院
专业电子信息科学与技术年级2008级(一)班
学号
实验时间2010年12月20日
总成绩
教师签名
编译源程序:
连接成已.EXE为扩展名的目标文件:
运行程序,验证程序设计是否符合设计要求:
又上图运行结果可知,程序设计正确。
5. 实验报告总结
本实验程序设计中需要多次显示回车,空格,换行字符,所以在程序设计中如果不使用模块设计方法,将会使程序非常冗长。
所以本实验在编写程序时把需要反复显示的字符用一个字程序来实现,当需要显示字符时,只需对入口参数正确赋值,然后调用子程序,这样使程序简洁、清晰明了。
但是需要特别注意的是在调用子程序时,如果存放入口参数值的寄存器在程序的其他地方需要用到时,那么在调用子程序之前一定要对该寄存器压栈保护,否则将会影响程序结果的正确性。
列入本实验的中,DX中存放的是ASCII字符的十六进制值,且程序每执行一次,DX加一,指向下一个ASCII 字符,而在调用子程序显示空格、回车、换行时需要对DX赋相应的值,因此在调用子程序时需先对DX压栈保护,调用结束后恢复DX的值。