北京邮电大学实验报告实验三微机
北邮2012级微机原理与接口技术实验报告1

北京邮电大学微机原理与接口技术实验报告学院:电子工程学院班级:学号:姓名:汇编语言程序的上机过程一、上机环境要运行调试汇编语言程序,至少需要以下程序文件:▪编辑程序:或其他文本编辑工具软件,用于编辑源程序。
▪汇编程序:MASM.EXE,用于汇编源程序,得到目标程序。
▪连接程序:LINK.EXE,用于连接目标程序,得到可执行程序。
▪调试程序:DEBUG.EXE,用于调试可执行程序。
二、上机过程汇编语言程序上机操作包括:编辑、汇编、连接和调试几个阶段。
1.编辑源程序用文本编辑软件创建、编辑汇编源程序。
常用编辑工具有:、记事本、Word等。
无论采用何种编辑工具,生成的文件必须是纯文本文件,所有字符为半角,且文件扩展名为.asm(文件名不分大小写,由1~8个字符组成)。
2.汇编用汇编工具对上述源程序文件(.asm)进行汇编,产生目标文件(.obj)等文件。
3.连接汇编产生的目标文件(.obj)并不是可执行的程序,还要用连接程序把它转换为可执行的EXE文件。
4.程序运行在DOS提示符下输入可执行程序的文件名即可运行程序。
5.程序调试在程序运行阶段,有时不容易发现问题,尤其是碰到复杂的程序更是如此,这时就需要使用调试工具进行动态查错。
常用的动态调试工具为DEBUG。
三、运行调试DEBUG是为汇编语言设计的一种调试工具,它通过单步、设置断点等方式为汇编语言程序员提供了非常有效的调试手段,它可以直接调试COM文件和EXE文件。
DEBUG状态下的所有数据都采用十六进制形式显示,无后缀H。
1.DEBUG的运行在DOS状态下,就可以进入DEBUG调试状态。
命令一:DEBUG ↙ (回车)格式二:DEBUG 可执行文件名↙(回车)进入DEBUG调试状态后,将显示提示符“-”,此时,可输入所需的DEBUG命令。
2.DEBUG的主要命令(1)显示内存单元内容的命令D(2)修改内存单元内容的命令E格式一:用给定内容代替指定范围的单元内容格式二:逐个单元相继地修改(3)检查和修改寄存器内容的命令R格式一:显示CPU内部所有寄存器内容和标志寄存器中的各标志位状态格式二:显示和修改某个指定寄存器内容格式三:显示和修改标志寄存器内容(4)运行命令G(5)跟踪命令T格式一:逐条指令跟踪格式二:多条指令跟踪(6)汇编命令A(7)反汇编命令U格式一:从指定地址开始,反汇编32字节格式二:对指定范围内的存储单元进行反汇编(8)执行命令P(9)退出DEBUG命令Q四、运行调试-DEBUG使用说明①在DEBUG中的提示符“-”下才能输入命令,在按回车键后,该命令才开始执行。
北京邮电大学 微机原理软件实验2

北京邮电大学微机原理软件实验·第二次实验目录题目一: (2)一、实验目的 (2)二、实验内容 (2)三、设计思路 (2)四、源程序 (3)五、实验结果(反色) (4)题目二: (5)一、实验目的 (5)二、实验内容 (5)三、设计思路 (5)四、源程序 (7)五、程序运行结果(反色) (9)题目三: (10)一、实验目的 (10)二、实验内容 (10)三、设计思路 (10)四、源程序 (11)五、程序运行结果(反色) (14)实验总结: (14)题目一:一、实验目的1、开始独立进行汇编语言程序设计,熟悉debug使用;2、掌握基本分支(如cmp,jmp,jne等),循环程序设计(如loop);3、掌握最简单的DOS 功能调用,如int 21h。
二、实验内容编一程序,在显示器上显示256个ASCII代码,要求显示格式为每行显示16个字符,两个ASCII字符间空一格三、设计思路2、可能使用到的函数①传送指令格式:MOV DEST,SRC功能:把一个字节,字或双字从源操作数SRC传送至目的操作数DEST。
②加1减1指令格式:INC DESTDEC DEST功能:INC指令将目的操作数加1,结果送目的操作数。
DEC指令将目的操作数减1,结果送目的操作数。
目的操作数为通用寄存器或存储器操作数。
③无条件转移指令格式:JMP TARGET功能:使程序无条件地转移到指令规定的目的地址TARGET去执行指令。
转移分为短转移、段内转移(近程转移)和段间转移(远程转移)。
④条件转移指令该类指令是根据上一条指令对标志寄存器中标志位的影响来决定程序执行的流程,若满足指令规定的条件,则程序转移;否则程序顺序执行。
⑤输出单字符这是2号系统功能调用,其使用格式为:MOV DL,‘A’MOV AH,2INT 21H执行2号系统功能调用,将置入DL寄存器中的字符(以ASCII码形式表示)通过显示器显示出来(或从打印机输出)。
北京邮电大学通信原理硬件实验报告

北京邮电大学通信原理硬件实验报告通信系统仿真实践实验报告北京邮电大学实验报告题目:基于SYSTEMVIEW通信原理实验报告班级: 2021211127 专业:信息工程姓名:成绩:通信系统仿真实践实验报告实验三简单基带传输系统一、实验目的和要求目的:熟悉系统仿真软件systemview,掌握观察系统时域波形,特别是眼图的操作方法。
要求:自己构建一个简单的基带传输系统,进行系统性能的测试。
二、实验原理和内容实验内容:构造一个简单示意性基带传输系统。
以双极性 PN码发生器模拟一个数据信源,码速率为100bit/s,低通型信道噪声为加性高斯噪声(标准差=0.3v)。
要求:1.观测接收输入和滤波输出的时域波形; 2.观测接收滤波器输出的眼图。
实验原理:简单的基带传输系统原理框图如下,该系统并不是无码间干扰设计的,为使基带信号能量更为集中,形成滤波器采用高斯滤波器。
高斯噪声源系统框图PN码发生器形成滤波器低通抽样判决三、主要仪器设备计算机、SystemView仿真软件四、实验步骤与操作方法第1步:进入SystemView系统视窗,设置“时间窗”参数: ①运行时间:Start Time: 0秒; Stop Time: 0.5秒;②采样频率:Sample Rate:10000Hz。
第2步:调用图符块创建仿真分析系统,各模块参数如下:编号 0 图符块属性Source 类型 PN Seq 参数 Amp=1v,Offset=0v,Rate=100Hz,Levels=2, 通信系统仿真实践实验报告Phase=0 deg 1 Comm Pulse Shape Gaussian,Time 2 3 4 Adder Source Operator -- Gauss Noise Linear Sys Offset=0 sec,Pulse Width=0.01 sec, Std Dev=0.0005v. -- Std Dev=0.3v,Mean=0v Butterworth Poles,Fc=200Hz. Lowpass IIR,5 5 Operator Sampler Interpolating,Rate=100Hz,Aperture=0 sec, Aperture Jitter=0 sec, Last Value ,Gain=2 Comparison=’>=’,True Output=1V,False Output =0v, Ainput=t6 Output0,B input=t8 Output0 6 7 Operator Operator Hold Compare 8 9 10 11 12 Source Sink Sink Sink Sink Sinusoid Analysis Analysis Analysis Analysis Amp=0v,Freq=0Hz,Phase=0 deg Input from t0 Output Port0 Input from t0 Output Port0 Input from t0 Output Port0 Input from t0 Output Port0 第3步:单击运行按钮,运算结束后按“分析窗”按钮,进入分析窗后,单击“绘制新图”按钮,分别显示出“PN码输出”、“信道输入”、“信道输出”和“判决比较输出”时域波形;第4步:观察信源 PN码和波形形成输出的功率谱;第5步:观察信道输入和输出信号眼图。
北邮微机原理软件实验报告(精)

北邮微机原理软件实验报告(精)微机原理软件实验报告实验二分支、循环程序设计一.实验目的1.启动独立的汇编语言编程。
2.掌握基本分支和循环编程。
3.掌握最简单的DOS函数调用。
二、实验内容1.安排一个数据区,内存有若干个正数,负数和零。
每类数的个数都不超过9。
2.编写一个程序统计数据区中正数,负数和零的个数。
3.将统计结果在屏幕上显示。
三.流程图IV源代码datasegmentzdw0;数据adw0中的零数;大于0 bdw0的数据数;数据中小于0的数量numdw9,8,0,-7,6,-5,-4,3,2,-1,0,-8,-1,9,0,0,1;设定的一组数据,其中4个0,7个正数,6个负数,符合题目要求NDW($-num/2);此组中的数据数量为类型0DB0DH,0ah,‘零的数量:$’类型1DB0DH,0ah,‘格雷特的数量:$'type2db0dh,0ah,'numberoflessthan0:$'locatedwtype0,type1,type2dataendsstacksegmentstackdw128dup(?stackendscodesegmentassumeds:data,ss:stack,cs:codestart:movax,datamovds,axmovax,stack莫夫斯,斧头;初始化DS和Ss以指向stamovbx,offsetnum;将num中第一个数字的地址送入bxmovcx,n;将n中数字个数送入cxloop1:movax[bx];取出num中的第一个数字cmpax,0;与零相比jzifz;判断结果为是0,跳转到ifz处继续执行salax,1jcifl;如果判断结果小于0,跳转到IFLincwordptra;否则,a自加,然后继续执行程序jmpcontinueifl:incwordptrb;B计数加上1jmpcontinueifz:incz;Z计数加1继续:addbx,2;指针+2,继续送入下一数字looploop1;循环cx次判断movcx,3;共显示3个字符串xorbx,bxdisp:movdx,定位[bx]movah,09h;dos09号功能调用,显示字符串int21hmovdx,z[bx]adddx,'0';转换为ASCII码movah,02h;dos02号功能调用,显示字符int21haddbx,2;指针+2(DW)loopdispmovax,4c00hint21h;返回dos系统codeendsendstart五.运行结果Vi预览问题1.十进制数0--9所对应的ascii码是什么?如何将十进制数0--9在屏幕上显示出来?。
北京邮电大学微波实验报告

北京邮电大学微波实验报告信息与通信工程学院微波仿真实验报告班级:姓名:学号:序号:日期:2013年6月9日目录实验二分支线匹配器 --------------------------------------------------- 4一、实验目的----------------------------------------------------------------------------------------- 4二、实验原理----------------------------------------------------------------------------------------- 4三、实验内容----------------------------------------------------------------------------------------- 4四、实验步骤----------------------------------------------------------------------------------------- 5●单枝节匹配器 ------------------------------------------------------------------------------------------ 5●双枝节匹配器 ----------------------------------------------------------------------------------------- 12五、实验结果分析--------------------------------------------------------------------------------- 20六、实验中遇到的问题和解决方法 ------------------------------------------------------------ 20实验三四分之一波长阻抗变换器 ----------------------------------- 22一、实验目的--------------------------------------------------------------------------------------- 22二、实验原理--------------------------------------------------------------------------------------- 22三、实验内容--------------------------------------------------------------------------------------- 26四、实验步骤--------------------------------------------------------------------------------------- 27五、实验结果分析--------------------------------------------------------------------------------- 44六、实验中遇到的问题及解决方法 ------------------------------------------------------------ 46实验六功率分配器 ----------------------------------------------------- 48一、实验目的--------------------------------------------------------------------------------------- 48二、实验原理--------------------------------------------------------------------------------------- 48三、实验内容--------------------------------------------------------------------------------------- 51四、实验步骤--------------------------------------------------------------------------------------- 51五、实验结果分析--------------------------------------------------------------------------------- 63六、实验中遇到的问题和解决方法 ------------------------------------------------------------ 63实验心得与体会---------------------------------------------------------- 65实验二分支线匹配器一、实验目的1.掌握支节匹配器的工作原理。
北京邮电大学-计算机实习-实验报告

高校知识高校知识一.人民币金额大写转换器1.1功能说明1.1.1总体功能说明从键盘输入一个十亿以内的正整数,把它转换为人民币金额大写(不考虑用户输入错误的情况)。
1.1.2用户界面1)正常输入高校知识学院:电子工程学院2017年4月2)错误提示1.1.3使用说明在金额数值文本框中输入数值(不超过9位),点击开始转换按钮,金额大写文本框即可显示大写金额。
1.2程序设计说明1.2.1使用工具开发工具:VS2017语言:c#应用类型:windows窗体应用1.2.2程序流程输入金额数值(int)输出大写金额(string)调用转换方法进行转换点击按钮动作触发1.2.3关键算法说明转换方法:以每个数位为一个单位,逐个处理。
基本转换方法是直接将数字(整型)转化为大写数字和单位(字符串),位数-大写对应关系为:1-元,2-十,3-百,4-千,5-万,6-十,7-百,8-千,9-亿。
每一位的处理方式是转换或不转换。
遇到数字零需要特殊处理,最后需要检查万位并且特殊处理。
1)对数字零的处理。
防止出现多个连续的零,整十整百等不出现零。
即:第一类:以一个或多个零结尾,不转换。
第二类:连续多个零合并为一个零。
解决方法:检查前一位,如果是零,则当前位的零不转换,否则转换。
人为设定第一位的前一位数值是零。
2)万位处理。
当前算法存在缺陷,采用以下方法修正。
如果5-8位均为零,则“万”字省略,不需要修正。
否则,“万”字需要有,当万位为零时需要增加输出“万”。
1.2.4数据结构说明所有常量,变量和方法存在于Form1 类中。
1.2.5关键算法描述1.private void button1_Click(object sender, EventArgs e)2.{3.int number = 0;4.int[] num = new int[9] { 0, 0, 0, 0, 0, 0, 0, 0, 0 };5.int len = 0;6.int i;7.int j = 0;8.int temp;9.textBox2.Text = ""; //清空金额大写文本10.try11. {12. number = Convert.ToInt32(textBox1.Text); //金额数值文本框获得的数据为字符型,转换为整型13. }14. catch //异常处理,如果输入错误,则出现提示15. {16.textBox1.Text = "";17. textBox2.Text = "输入错误,请输入9位以内的正整数";18. }19.while(number != 0) //字符型转换为字符数组20.{21.num[len] = number % 10;22.number /= 10;23.len++;24.}25.26.for(i = 0; i < len; i++) //非零位直接转换27.{28.temp = num[i];29.if(num[i] != 0)30.{31.ans[j++] = unit[i];32.ans[j++] = cap[temp];33.}34.else if(num[i] == 0 && i == 0) //个位为零,只转换单位35.{36.ans[j++] = unit[0];37.}38.else if(num[i] == 0 && i == 4) //万为为零39.{40.if(len == 9 && num[5] == 0 && num[6] == 0 && num[7] == 0) { }//整个万级为零则省略“万”字41.else ans[j++] = unit[4]; //万为为零但需要显示“万”字42.}43.else if(num[i] == 0 && i != 0 && i != 4) //其他位为零的情况44.{45.if(num[i - 1] != 0) //如果前一位(低位)不为零,则转换“零”,否则不转换(无操作)46.{47.ans[j++] = cap[0];48.}49.}50.}51.for(i = j - 1; i >= 0; i--) //显示转换结果52.{53.textBox2.Text += ans[i];54.}55.}1.3设计总结1.3.1性能评价优点:界面简洁,操作简单。
北邮计算机组成实验报告
一、实验目的1. 了解计算机组成原理的基本概念和组成结构。
2. 掌握计算机各部件的功能和相互关系。
3. 通过实验,加深对计算机组成原理的理解和认识。
4. 培养动手能力和实际操作技能。
二、实验内容本次实验主要分为以下几个部分:1. 计算机组成原理实验台介绍2. 数据通路和控制器实验3. 存储器实验4. 输入/输出实验5. 系统总线实验三、实验步骤1. 计算机组成原理实验台介绍实验开始前,先对实验台进行简要介绍,包括实验台的功能、操作方法、注意事项等。
2. 数据通路和控制器实验(1)观察数据通路和控制器结构,了解其组成和功能。
(2)通过实验,验证数据通路和控制器的基本工作原理。
(3)掌握数据通路和控制器的设计方法。
3. 存储器实验(1)观察存储器结构,了解其组成和功能。
(2)通过实验,验证存储器的基本工作原理。
(3)掌握存储器的设计方法。
4. 输入/输出实验(1)观察输入/输出设备,了解其组成和功能。
(2)通过实验,验证输入/输出设备的基本工作原理。
(3)掌握输入/输出设备的设计方法。
5. 系统总线实验(1)观察系统总线结构,了解其组成和功能。
(2)通过实验,验证系统总线的基本工作原理。
(3)掌握系统总线的设计方法。
四、实验结果与分析1. 数据通路和控制器实验通过实验,我们成功验证了数据通路和控制器的基本工作原理。
在实验过程中,我们了解到数据通路由数据总线、控制总线、地址总线等组成,控制器负责协调各部件的工作。
2. 存储器实验通过实验,我们成功验证了存储器的基本工作原理。
在实验过程中,我们了解到存储器由存储单元、地址译码器、读写控制电路等组成,存储单元负责存储数据。
3. 输入/输出实验通过实验,我们成功验证了输入/输出设备的基本工作原理。
在实验过程中,我们了解到输入/输出设备通过接口电路与主机相连,实现数据的输入和输出。
4. 系统总线实验通过实验,我们成功验证了系统总线的基本工作原理。
在实验过程中,我们了解到系统总线由数据总线、地址总线、控制总线等组成,负责传输数据和控制信号。
北邮网络管理实验报告 实验三 计算机与网络资源的探测和扫描 实验报告
信息与通信工程学院网络管理实验报告专业信息工程班级姓名曹爽学号实验三计算机与网络资源的探测和扫描一、实验目的熟悉Sniffer界面并掌握Sniffer工具的使用方法,学习Sniffer监控网络的模式,实现网络性能监控、节点状态查看,掌握Sniffer数据包过滤的基本设置方法。
实现广播风暴的监控,HTTP、SNMP等协议数据包的捕获,以理解TCP/IP协议族中多种协议的数据结构、会话连接建立和终止的过程、TCP序号、应答序号的变化规律。
并且,通过实验了解HTTP等协议明文传输的特性,以建立安全意识,防止HTTP等协议由于传输明文密码造成的泄密。
二、实验要求1、使用Sniffer Pro监视本地网内的主机间通信、协议分布和主机通信流量统计。
2、设置Sniffer监控过滤器,过滤ARP协议包。
3、使用Sniffer Pro来检测广播风暴和它的来源,设置广播流量过滤器,捕获HTTP 等协议数据包并进行分析。
三、实验工具Sniffer Portable。
四、实验步骤1.熟悉Sniffer Portable并监控网络性能启动之前需要选择监控的网卡,如下图所示。
启动程序后,主界面如下图所示。
第一个仪表盘显示传输数据时所占用的端口带宽与端口能够处理的最大带宽值的百分比;第二个仪表盘显示当前数据包的传输速度;第三个仪表盘显示当前数据包传输过程中的出错率。
也可以选择表格的形式读取仪表盘中的数据,如下图所示。
除了使用仪表盘表示网络的当前状况外,还可以使用其他几种模式来查看网络当前运营的状态。
第一种是主机列表模式,选择“Host Table”,显示如下图,可以从中看出与当前主机相连接的信息。
在选择了IP标签之后,就可以看到与本机相连的所有IP地址及信息。
主机列表也有饼状图、柱状图等显示模式,如下图所示。
第二种模式是矩阵模式,选择“Matrix”可显示下图。
从图中可以看出各个IP互联的情况。
矩阵分布还有大纲列表的查看方式,如下图所示。
北邮微机原理软件部分报告
微机原理与接口技术软件部分实验报告实验B 分支、循环程序设计一、实验目的1.开始独立进行汇编语言程序设计;2.掌握基本分支,循环程序设计;3.掌握最简单的DOS功能调用。
二、实验任务及内容1.安排一个数据区,内存有若干个正数,负数和零。
每类数的个数都不超过9。
2.编写一个程序统计数据区中正数,负数和零的个数。
3.将统计结果在屏幕上显示。
4. 选作题:统计出正奇数,正偶数,负奇数,负偶数以及零的个数.四、源程序DISPSTR MACRO STR ;打出字符串(属于DOS功能调用)MOV AH,9MOV DX,SEG STRMOV DS,DXMOV DX,OFFSET STRINT 21HENDMDISPNUM MACRO NUM ;打出数字(属于DOS功能调用)MOV AH,2MOV DL,NUMADD DL,30H ;加30H变为ASCII码INT 21HENDMDATA SEGMENTNUM DB 1,3,5,0,0,0,-5,-4,0COUNT EQU $-NUM ;统计数据个数ZEROS DB 0 ;各类数初值均为0PLUSES DB 0MINUSES DB 0EVENMINUSES DB 0ODDMINUSES DB 0EVENPLUSES DB 0ODDPLUSES DB 0ZEROSTR DB 0DH,0AH,'ZERO:$' ;待输出字符串PLUSSTR DB 0DH,0AH,'PLUS:$'MINUSSTR DB 0DH,0AH,'MINUS:$'EVENMINUSSTR DB 0DH,0AH,'EVENMINUS:$'ODDMINUSSTR DB 0DH,0AH,'ODDMINUS:$'EVENPLUSSTR DB 0DH,0AH,'EVENPLUS:$'ODDPLUSSTR DB 0DH,0AH,'ODDPLUS:$'DATA ENDSSTACK SEGMENT STACK 'STACK'DB 100 DUP(?)STACK ENDSCODE SEGMENTASSUME CS:CODE, DS:DATA, SS:STACKSTART PROC FARPUSH DS ;初始化MOV AX,0PUSH AXMOV AX,DATAMOV DS,AXMOV CX,COUNT ;CX控制循环次数MOV SI,OFFSET NUM ;SI指向数据的偏移地址LOOP1: CMP BYTE PTR[SI],0 ;将SI指向的内容与0比较大小JZ ZERO ;等于0跳转JG PLUS ;大于0跳转INC MINUSES ;负数加一SHR BYTE PTR[SI],1 ;判断是负奇数还是负偶数JNC EVENMINUS ;是负偶数跳转INC SI ;SI指针后移INC ODDMINUSES ;负奇数加一RETURN: LOOP LOOP1 ;循环直至CX=0JMP DISP ;循环结束后跳转至打出结果ZERO: INC ZEROSINC SIJMP RETURN ;返回循环体PLUS: INC PLUSESSHR BYTE PTR[SI],1JNC EVENPLUSINC SIINC ODDPLUSESJMP RETURNEVENPLUS: INC SIINC EVENPLUSESJMP RETURNEVENMINUS: INC SIINC EVENMINUSESJMP RETURNDISP: DISPSTR ZEROSTR ;打出结果DISPNUM ZEROSDISPSTR PLUSSTRDISPNUM PLUSESDISPSTR MINUSSTRDISPNUM MINUSESDISPSTR EVENPLUSSTRDISPNUM EVENPLUSESDISPSTR ODDPLUSSTRDISPNUM ODDPLUSESDISPSTR EVENMINUSSTRDISPNUM EVENMINUSESDISPSTR ODDMINUSSTRDISPNUM ODDMINUSESRETSTART ENDPCODE ENDSEND STARTend start五、程序运行结果进行统计的数据为1,3,5,0,0,0,-5,-4,0。
2021年北邮微机原理实验报告
微机原理软件试验汇报学院: 信息与通信工程学院班级: 211123班内序号:学生姓名:学号:试验二分支,循环程序设计一、试验目1.开始独立进行汇编语言程序设计;2.掌握基础分支,循环程序设计;3.掌握最简单DOS 功效调用.二、试验任务及内容1.安排一个数据区, 内存有若干个正数, 负数和零。
每类数个数都不超出9。
2.编写一个程序统计数据区中正数, 负数和零个数。
3.将统计结果在屏幕上显示。
4.(扩展题)统计出正奇数、正偶数, 负奇数、负偶数以及零个数。
三、画出程序步骤图Y四、给出源程序(要求加注释)data segmentbuff dw 1, 2, 0, 0 ,-1 ; 数据段, 初始化数据count equ $-buffplus db ? ; 定义三种数存放位置zero db ?minus db ?string1 db 'plus number:','$'string2 db 'zero number:','$'string3 db 'minus number:','$'data endsstack segment stack 'stack'db 100 dup(? )stack endscode segmentassume cs:code,ds:data,es:data,ss:stackbegin:mov ax,datamov ds,axmov cx,countshr cx,1mov dx,0mov ah,0lea bx,buffagain: cmp word ptr[bx],0 ; 首先和0比较jge pluinc ah ; 小于零MINUS+1jmp nextplu: jz zer ; 判定是否等于零, 等于零ZERO+1 inc dl ; 不等于零PLUS+1jmp nextzer: inc dhnext:inc bx ; 下一个数inc bxloop againadd dl,48mov plus,dladd dh,48mov zero,dhadd ah,48mov minus,ahshow:sub dx,dx ; 显示模块mov dx,offset string1mov ax,0900h ; 送显示指令int 21hmov dl,[plus]mov ax,0200hint 21hmov dl,0dhint 21hmov dl,0ahint 21hmov dx,offset string2mov ax,0900hint 21hmov dl,[zero]mov ax,0200hint 21hmov dl,0dhint 21hmov dl,0ahint 21hmov dx,offset string3mov ax,0900hint 21hmov ax,0200hmov dl,[minus]int 21hmov ax,4c00h ; 结束程序int 21hcode endsend begin五、给出程序运行结果(运行结果抓屏保留)data segment 中存入1, 2, 0, 0, -1显示有2个0、2个大于0数、1个小于0数, 结果正确六、预习题1.十进制数0 -- 9 所对应ASCII 码是什么? 怎样将十进制数0 -9 在屏幕上显示出来? 答: 对应ASCII码是30H~39H, 把0-9加上30H即可得到对应ASCII, 送给DL, 再实施INT 21H即可显示。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
北京邮电大学实验报告题目:微机原理软件实验三班级: 2010211127专业:信息工程姓名:付莹学号:10210759实验五:中断实验1. 实验类设计型实验:编程实现时钟的显示。
2. 实验目的掌握计数器/定时器8253的工作原理和编程方法;掌握中断控制器8259的工作原理;掌握中断处理程序的编写。
3. 实验条件硬件条件:PC机一台。
软件条件:DOS操作系统;任意一种编辑程序,如EDIT;宏汇编程序MASM;连接程序LINK;调试程序DEBUG。
可借用该程序中的中断服务程序以及8253的初始化程序段(口地址为40H、41H、42H、43H,控制字为36H=00110110B,时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms)。
4. 实验内容及步骤编一程序,在显示器上显示时、分、秒。
借用计数器8253的Timer0作为中断源,通过8259A向CPU发中断,每10ms产生一次中断。
在中断服务程序中管理刷新时、分、秒Current time is: xx:xx:xx (时分秒键盘输入)回车后时、分、秒开始计时,时钟不停的刷新。
当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。
5. 实验报告(1)画出程序流程图。
开始等待回车键按下(08H 中断调用)取原8H 中断的中断矢量并压栈保护建立数据段的可寻址性 装载现在的中断服务程序8253初始化产生10ms 方波,10ms 中断一次重写IMR ,只开放时钟和键盘中断开中断监测键盘(06H 中断调用)是Ctrl+C ? 关中断 恢复IMR重置8253,,55ms 中断一次恢复原中断开中断返回DOS ,结束Yes有键按下?显示时间值(09H 中断调用)取消秒Yes 计数达到100次(1秒)?NoYesNoNo实现等待计时功能实现循环,秒值变化则返回继续执行程序显示“Current time is :” 读入键盘输入(2)提交调试好的汇编语言源程序(.asm)。
DATA SEGMENT PARA PUBLIC 'DAT A'COUNT100 DB 100MESG1 DB 'Current time is:$'MESG2 DB 'The time is wrong, please input agian...$'GETTIME DB 9,'?'TENHOUR DB 0HOUR DB 0,':'TENMIN DB 0MINUTE DB 0 ,':'TENSEC DB 0SECOND DB 0OLD_OFF DW 0OLD_SEG DW 0DATA ENDSSTACK SEGMENT PARA ST ACK 'ST ACK'DB 256 DUP(0)STACK ENDSCODE SEGMENT PARA PUBLIC 'CODE'ASSUME CS:CODEASSUME DS:DATASTART: MOV AX,DATAMOV DS,AXMOV DX,OFFSET MESG1 ;显示'Current time is:'MOV AL,09HINT 21HMOV DX,OFFSET GETTIME ;接受屏幕输入时间MOV AH,0AHINT 21HMOV HOUR+1,':' ;时分秒之间的分隔符为':'MOV MINUTE+1,':' ;检测时间输入是否符合要求CMP SECOND,'0'JC ERROCMP SECOND,'9'JG ERROCMP TENSEC,'0'JC ERROCMP TENSEC,'6'JNC ERROCMP MINUTE,'0'JC ERROCMP MINUTE,'9'JG ERROCMP TENMIN,'0'JC ERROCMP TENMIN,'6'JNC ERROCMP HOUR,'0'JC ERROCMP HOUR,'4'JNC ERROCMP TENHOUR,'0'JC ERROCMP TENHOUR,'3'JNC ERROJMP NEXT1ERRO: MOV DX,OFFSET MESG2 ;输入有错,显示'The time is wrong, please input agian...'MOV AH,09HINT 21HJMP START;设置中断向量表NEXT1: CLIMOV AL, 08H ;取08号中断向量的服务程序地址MOV AH, 35HINT 21H ;ES:BX = 入口地址MOV OLD_OFF, BX ;保存原来的终端服务程序地址MOV BX,ESMOV OLD_SEG, BXMOV AL,08H ;设置08号中断向量的服务程序地址MOV AH,25HMOV DX,SEG TIMERPUSH DSMOV DS,DXMOV DX, OFFSET TIMERINT 21HPOP DS;设置8253MOV AL,36HOUT 43H,ALMOV BX,11932MOV AL,blOUT 40H,ALMOV AL,bHOUT 40H,AL;设置8259AMOV DX,20H ;ICW1地址MOV AL,11H ;写ICW1,沿触发方式、级联,要ICW4OUT DX,ALADD DX,1 ;指向ICW2、ICW3、ICW4地址MOV AL,8 ;ICW2,中断向量号为08HOUT DX, ALMOV AL, 4 ;ICW3,IR2接有从片PICOUT DX, ALMOV AL, 1 ;ICW4,正常屏蔽方式、全嵌套、正常EOIOUT DX,ALMOV DX, 0A0H ;从片ICW1地址MOV AL, 11H ;写ICW1,沿触发方式、级联,要ICW4OUT DX, ALADD DX, 1 ;指向ICW2、ICW3、ICW4地址MOV AL, 70H ;ICW2,中断向量号为70HOUT DX, ALMOV AL, 2 ;ICW3,从片PIC识别号=2OUT DX, ALMOV AL, 1 ;ICW4,正常屏蔽方式、正常EOIOUT DX,ALSTI;显示时间信息FOREVER: MOV DX,OFFSET MESG1 ;显示'Current time is:'MOV AH,09HINT 21HMOV BX,OFFSET TENHOURMOV CX,8DISD: MOV AL,[BX] ;显示具体时间CALL DISPCHARINC BXLOOP DISDMOV AL,0DHCALL DISPCHARMOV AL,SECONDNEXT: CMP AL,SECOND ;检测时间是否改变JE NEXTJMP FOREVER;中断服务程序TIMERTIMER PROC FARPUSH AXDEC COUNT100 ;每100次中断为1秒JNZ TIMERXMOV COUNT100,100INC SECONDCMP SECOND,'9'JLE TIMERXMOV SECOND,'0'INC TENSECCMP TENSEC,'5'JLE TIMERXMOV TENSEC,'0'INC MINUTECMP MINUTE,'9'JLE TIMERXMOV MINUTE,'0'INC TENMINCMP TENMIN,'5'JLE TIMERXMOV TENMIN,'0'INC HOURCMP HOUR,'9'JLE TIMERXMOV HOUR,'0'INC TENHOURCMP TENHOUR,'1'JLE TIMERXCMP HOUR,'3'JLE TIMERXMOV TENHOUR,'0'MOV HOUR,'0'TIMERX: MOV AL,20H ;不到100次则结束中断OUT 20H,ALPOP AXIRETTIMER ENDP;显示字符的子程序DISPCHAR PROC NEARPUSH BXMOV BX,0MOV AH,14INT 10HPOP BXRETDISPCHAR ENDP;恢复原来的中断服务程序MOV AH,4CHMOV DX,OLD_SEGPUSH DSMOV DS,DXMOV DX,OLD_OFFINT 21HPOP DSCODE ENDSEND START实验抓图输入错误的时候(3)总结实验中遇到的问题及解决的方法。
主要实验中是编写时候的问题,第一如何使8259A产生中断,一开始想的是固定循环次数,然后int 8ch,但仔细研读了例题,并看了8253的工作方式36H=00110110B,发现方波发生器可以每一次可以把每个方波看做是事件,out 为中断请求,这样子,就可以在计时的时候调用中断程序。
在设置的时候,就可以理解了。
8254O U T 0C L K 0IN T IR 08259CPU周期性方波此外就是24小时以后清零问题,就是23:59:59之后应该跳转到00:00:00,需要对小时加上一个跳转,还有就是判断用户输入的对错问题上,分和秒的个位由于一开始写的jnc 跳转,但最后要比较的应该改为JG 。
这个问题虽然小,但是也从中重新了解了一遍跳转。
【心得体会】这次的实验由于涉及到了可编程器件的初始化,有和我们的硬件实验联系到了一起,不过学过中断和定时器之后,重新自己编程还是很有成就感的。
对于我本身来说,实验是必不可少的,平时看书把概念看似搞明白了,但是重新利用到了原来的知识又会出现错误,多亏了实验和课程相结合,感觉到了自己学得更加扎实了。
Ps :祝新年快乐。