(仅供参考)微机原理实验三
- 格式:pdf
- 大小:736.51 KB
- 文档页数:12
第1篇一、实验目的1. 理解和掌握微机的基本组成和工作原理;2. 熟悉微机硬件设备和实验仪器的使用方法;3. 提高动手实践能力,培养解决实际问题的能力;4. 深入理解微机原理课程内容,为后续课程学习奠定基础。
二、实验内容1. 微机系统认识实验2. 微机硬件组成实验3. 微机指令系统实验4. 微机寻址方式实验5. 微机程序设计实验6. 微机接口技术实验三、实验仪器与设备1. 微机原理实验箱2. 示波器3. 数字万用表4. 计算机一台5. 实验指导书四、实验步骤与内容1. 微机系统认识实验(1)观察实验箱的结构,了解各个模块的功能;(2)熟悉实验箱的电源、复位、运行等按钮的使用方法;(3)学习微机系统的工作流程,包括加电、复位、启动等过程;(4)观察微机系统启动后的运行状态,了解各个模块的协同工作。
2. 微机硬件组成实验(1)观察实验箱的CPU、内存、I/O接口等硬件模块;(2)学习CPU的内部结构,包括寄存器、控制单元、运算单元等;(3)学习内存的存储原理,了解ROM、RAM等存储器的特点;(4)学习I/O接口的工作原理,了解中断、DMA等传输方式。
3. 微机指令系统实验(1)学习微机指令系统的基本格式,包括操作码、地址码等;(2)掌握微机指令系统的寻址方式,包括立即寻址、直接寻址、间接寻址等;(3)编写简单的汇编语言程序,实现加、减、乘、除等运算;(4)学习微机中断处理过程,了解中断向量表、中断服务程序等概念。
4. 微机寻址方式实验(1)学习微机寻址方式的基本概念,包括直接寻址、间接寻址、寄存器寻址等;(2)编写程序,实现不同寻址方式下的数据访问;(3)观察不同寻址方式对程序执行速度的影响。
5. 微机程序设计实验(1)学习汇编语言程序设计的基本方法,包括数据定义、指令编写、程序结构等;(2)编写简单的程序,实现数据交换、排序等操作;(3)学习微机程序的调试方法,包括单步执行、断点设置等。
6. 微机接口技术实验(1)学习微机接口技术的基本概念,包括并行接口、串行接口等;(2)观察实验箱中的并行接口、串行接口等模块,了解其工作原理;(3)编写程序,实现数据在并行接口、串行接口之间的传输;(4)学习微机中断处理在接口技术中的应用。
实验三DOS中断调用实验实验报告健行理工1402班陈丽红 201424450202一、实验目的掌握字符和数据的显示方法。
二、实验内容先显示信息“INPUTSTRING,THE END FLAG IS $”再接收字符。
如为0-9,则计数器加1,并显示计数,如为非数字,则直接显示,但不计数。
三、程序框图开始段寄存器和堆栈段初始化数字字符计数器清0回车换行显示提示信息接收键入字符并显示是$字符调用QUI,返回DOS结束是回车键是0-9计数器BX加1,保存计数器的值后将其转化为ASCII码回车换行显示计数结果回车换行调用DISP,显示字符YNYYNN四、程序说明本次实验重点在于了解中断调用的步骤:(1)准备入口参数;(2)功能号送AH;(3)执行INT n命令,熟练掌握向量号21H的部分常用功能调用。
程序设计时通过对输入的字符进行判断,根据判断结果进入不同的子程序段运行,显示运行结果。
五、源程序清单与执行结果5.1 源程序清单DATA SEGMENT ;定义数据段,DATA为D1 DB 'INPUTSTRING, THE LAST FLAG IS', 0DH, 0AH,'$' 段名,将信息存放在D2 DB 0DH, 0AH, '$' D1,D2中DATA ENDSSTACK SEGMENT STACK ;定义堆栈段DB 100 DUP(?)STACK ENDSCODE SEGMENT ;说明代码段、数据段、堆栈段 ASSUME CS:CODE,DS:DATA,SS:STACKBG: MOV AX,DATAMOV DS, AX ;给DS赋段值MOV BX, 0 ;数字字符计数器BX清0JMP L1 ;跳转至L1QUI: MOV AH,4CH ;返回DOSINT 21HDISP: MOV DX,OFFSET D2 ;输出回车换行MOV AH,9HINT 21HMOV AH,2H ;显示AL中的字符内容MOV DL,ALINT 21HL1: MOV DX,OFFSET D2 ;输出回车换行MOV AH,9HINT 21HMOV DX,OFFSET D1 ;输出“INPUTSTRING,THE END FLAG IS” MOV AH,9HINT 21HMOV AH,1H ;键盘输入并显示INT 21HCMP AL,'$' ;判断输入字符是否为'$'JE QUI ;是则调用QUI,返回DOSCMP AL,0DH ;判断输入字符是否为回车,是则输出 JNE L2 回车换行,进入下一次L1循环,不是MOV DX,OFFSET D2 则跳转至L2MOV AH,9HINT 21HJMP L1L2: CMP AL,'9' ;判断输入字符是否为0-9,是则计数 JA DISP 器BX加1,不是则跳转至DISPCMP AL,'0'JB DISPINC BXPUSH BX ;将BX的内容压入堆栈,保存ADD BX,30H ;将BX中的数值转化为ASCII码MOV DX,OFFSET D2 ;输出换行MOV AH,9HINT 21HMOV AH,2H ;显示计数MOV DL,BLINT 21HPOP BX ;弹出BX的内容JMP L1CODE ENDSEND BG5.2 执行结果截图(1)接收字符为0-9,计数器加1,并显示计数。
实验3. 循环程序设计一、实验目的⒈掌握移位指令的使用方法。
⒉学会循环结构程序的编程方法。
⒊利用DEBUG调试程序查看循环程序循环过程中CS和IP的变化情况。
二、实验要求⒈编写程序并上机调试,记录运行结果。
⒉用DEBUG调试程序调试所编程序,查看并记录每条指令内存单元地址及执行结果(包括F标志寄存各位值。
)⒊注意观察并记录每条指令执行后CS和IP寄存器值变化情况,以加深对循环程序的概念的理解。
三、实验内容⒉编写统计15个学生数学学习成绩程序。
要求:分别统计出低于60分,60-69分,70-79分,80-89分,90-100分的人数,并存放到S5,S6,S7,S8,S9,S10对应内存单元中。
源程序代码;DATA SEGMENTDATA1 DB 55,60,65,88,67,70,75,80,77,85,90,66,95,53,100DATA2 DB 5 DUP(?)DATA ENDS;CODE SEGMENTASSUME CS:CODE,DS:DATASTART:MOV AX,DATAMOV DS,AXMOV CX,15LEA SI,DATA1LEA DI,DATA2AGAIN:MOV AL,[SI]CMP AL,90JB NEXT1INC BYTE PTR[DI]JMP NEXT0NEXT1:CMP AL,80JB NEXT2INC BYTE PTR[DI+1]JMP NEXT0NEXT2:CMP AL,70JB NEXT3INC BYTE PTR[DI+2]JMP NEXT0NEXT3:CMP AL,60JB NEXT4INC BYTE PTR[DI+3]JMP NEXT0NEXT4:INC BYTE PTR[DI+4]NEXT0:INC SILOOP AGAINMOV AH,4CHINT 21HCODE ENDSEND START程序运行结果截图:四、实验总结本次实验掌握移位指令的使用方法。
实验一汇编语言程序上机过程练习1.实验目的掌握汇编语言程序上机的步骤,掌握汇编语言程序编辑、汇编、连接、运行、调试的方法。
2.实验内容:输入老师提供的汇编语言源程序,完成汇编、连接、运行、调试过程。
3.实验步骤:(1)、上机环境的准备在资源管理器中,在d盘上新建自己的文件夹zhangsan(备注:请把zhangsan替换成你自己的文件夹名,用英文字母命名,并且名字长度不超过8个字符)。
把机器上的masm.exe和link.exe等文件拷到该文件夹内。
(2)、上机过程①切换工作路径:打开命令提示符窗口、转到d盘、切换我的文件夹为当前路径②把老师提供的源程序用记事本(或者EDIT)输入到机器内,保存为扩展名为.asm的文本文件。
③用汇编程序MASM对源程序进行汇编,如果源程序有错误则修改,直到汇编通过,生成扩展名为OBJ的二进制的目标文件。
④用连接程序LINK对上面生成的二进制目标文件进行连接,有错误则修改源程序,重新进行汇编、连接,直到连接成功生成扩展名为EXE的可执行文件。
⑤在DOS提示符下运行可执行文件。
屏幕上显示“Hello Word!”⑥用DEBUG对可执行文件进行调试。
4.附源程序:DATA SEGMENTMSG DB 'HELLO WORLD!$'DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXLEA DX,MSGMOV AH,09HINT 21HMOV AH,4CHINT 21HCODE ENDSEND START实验二汇编语言程序设计练习1.实验目的(1)掌握汇编语言程序设计的基本步骤,分析问题,确立算法,画出程序流程图。
说明流程图中各功能的含义和表示法。
分配工作单元和存储空间。
根据程序算法流程选择合适的指令编制汇编语言源程序。
(2)掌握顺序程序的设计基本方法和技巧。
(3)掌握分支程序设计的方法,重点掌握各种分支程序中形成和判断条件而产生的程序段的设计方法和技巧。
微机原理与接口技术实验报告实验一显示程序实验一、实验目的1. 掌握在PC机上以十六进制形式显示数据的方法;2. 掌握部分DOS功能调用使用方法;3. 熟悉Tddebug调试环境和Turbo Debugger的使用。
二、实验所用设备1. PC微机一台。
三、实验内容一般来说,程序需要显示输出提示运行的状况和结果,有的还需要将数据区中的内容显示在屏幕上。
本实验要求将指定数据区的数据以十六进制数形式显示在屏幕上,并通过DOS功能调用完成一些提示信息的显示。
实验中可使用DOS功能调用(INT 21H)。
(1) 显示单个字符输出入口:AH=02H调用参数:DL=t出字符(2) 显示字符串入口:AH=09H调用参数:DS:DX串地址,’$'为结束字符(3) 键盘输入并回显入口:AH=01H返回参数:AL=t出字符(4) 返回DO系统入口:AH=4CH调用参数:AL=M回码四、实验步骤1. 运行Tddebug软件,选择Edit菜单,根据实验内容的描述编写实验程序,本实验显示部分参考实验流程如图1-1示;2. 使用Compile菜单中的Compile和Link对实验程序进行汇编、连接;3. 使用Rmrun菜单中的Run,运行程序,观察运行结果;4. 使用Rmrun菜单中的Debug调试程序,观察调试过程中,数据传输指令执行后,各寄存器及数据区的内容;5. 更改数据区中的数据,考察程序的正确性。
图1-1显示程序实验流程图五、程序清单DATA SEGMENTMES DB 'laoshihao:', 0AH,0DH,'$' SD DB 'b'DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV DX, OFFSET MESMOV AH, 09HINT21HMOV DI, OFFSET SDMOV AL, DS:[DI]AND AL, 0F0HSHR AL,4CMP AL, 0AHJB L1ADD AL, 07HL1: ADD AL, 30HMOV DL, ALMOV AH, 02HINT21HMOV AL, DS:[DI]AND AL, 0FHCMP AL, 0AHJB L2ADD AL, 07HL2: ADD AL, 30HMOV DL, ALMOV AH, 02HINT21HMOV AX, 4C00HINT21HCODE ENDSEND START六、实验调试过程调试过程中出现警告,显示没有使用堆栈段。
微机原理实验报告实验一两个多位十进制数相加的实验一、实验目的学习数据传送和算术运算指令的用法熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。
二、实验内容将两个多位十进制数相加, 要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1.DATA2为首的5个内存单元中(低位在前), 结果送回DATA1处。
三、程序框图图3-1四、参考程序清单程序名: XIANGJ.ASMDATA SEGMENTDATA1 DB 33H,39H,31H,37H,34H;被加数DATA1END EQU $-1DATA2 DB 34H,35H,30H,38H,32H;加数DATA2END EQU $-1SUM DB 5 DUP(?) DATA ENDSSTACK SEGMENTSTA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATAMOV DS,AXMOV AX,STACKMOV SS,AXMOV AX,TOPMOV SP,AXMOV SI,OFFSET DATA1ENDMOV DI,OFFSET DATA2ENDCALL ADDAMOV AX,4C00HINT 21HADDA PROC N EARMOV DX,SIMOV BP,DIMOV BX,05HAD1: SUB BYTE PTR [SI],30HSUB BYTE PTR [DI],30HDEC SIDEC DIDEC BXJNZ AD1MOV SI,DXMOV DI,BPMOV CX,05HCLCAD2: MOV AL,[SI]MOV BL,[DI]ADC AL,BLAAAMOV [SI],ALDEC SIDEC DILOOP A D2MOV SI,DXMOV DI,BPMOV BX,05HAD3: ADD BYTE PTR [SI],30HADD BYTE PTR [DI],30H DEC SIDEC DIDEC BXJNZ AD3RETADDA ENDPCODE ENDSEND START五: 结果分析这次试验依次将相加数和被相加数存入AL, BL, 依次从低位向高位相加, 然后把结果放在内存中, 根据程序走向, 相加的结果依次放在内存地址DS:0000到DS:0004的位置上, 和我们实验预期结果一样。
微机原理实验报告微机原理与接口技术实验报告学院:信息工程学院班级:学号:姓名:实验一:系统认识实验1 实验目的:掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。
2 实验设备:PC机一台,TD-PITE 实验装置一套。
3 实验内容:编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。
4 实验步骤:1. 运行Wmd86 软件,进入Wmd86 集成开发环境。
2. 环境调试,“设置”选项中选择汇编语言。
语言环境选择界面3. 新建文档,编写程序,程序如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3000HMOV CX, 16AA1: MOV [SI], ALINC SIINC ALLOOP AA1AA2: JMP AA2CODE ENDSEND START4. 编译连接,程序无误下载:信息界面5. 连接PC与实验系统的通讯电缆,打开实验系统电源。
6. 下载程序,查看内存3000H 开始的连续16 个存储单元中的内容,显示如下:8.由于该内存段原始数据与实验数据相同,便于区分观察,将该内存段初始化,然后查看:9.点击运行程序,在此查看该段内存:10.设置断点,执行程序:5 操作练习编写程序,将内存3500H 单元开始的8 个数据复制到3600H 单元开始的数据区中。
通过调试验证程序功能,使用E命令修改3500H 单元开始的数据,运行程序后使用D命令查看3600H 单元开始的数据。
1、编写程序如下:SSTACK SEGMENT STACKDW 32 DUP(?)SSTACK ENDSCODE SEGMENTASSUME CS:CODE,SS:SSTACKSTART: PUSH DSXOR AX, AXMOV DS, AXMOV SI, 3500HMOV DI, 3600HMOV CX, 8AA1: MOV AL, [SI]MOV [DI], ALINC SIINC DILOOP AA1AA2: JMP AA2CODE ENDSEND START2、执行过程如上,内存变化如下:程序执行前程序执行后实验二:数制转换实验1、实验目的1. 掌握不同进制数及编码相互转换的程序设计方法,加深对数制转换的理解;2. 熟悉程序调试的方法。
微型计算机原理与接口技术实验报告一、实验内容实验3 分支结构程序设计实验题目编程实现三分支的符号函数;编程实现将正数N 插入由正数组成的数组ARY 中。
内容提要掌握分支程序的设计,观察通用寄存器、标志寄存器的变化、监测分支点。
二、实验的源代码(.asm文件内容)第一部分——编程实现三分支的符号函数程序如下:DATAS SEGMENTX DB-3Y DB?DATAS ENDSCODES SEGMENTASSUME CS:CODES,DS:DATASSTART:MOV AX,DATASMOV DS,AXMOV AL,XCMP AL,0JGE BIGERMOV AL,0FFHMOV Y,ALJMP NEXTBIGER:JE EQULMOV AL,1MOV Y,ALJMP NEXTEQUL:MOV Y,ALNEXT: MOV AH,4CHINT 21HCODES ENDSEND START第二部分:编程实现将正数N 插入由正数组成的数组ARY中程序如下:DATAS SEGMENTX DW?ARY_HEAD DW 2,6,8,13,21,47,53,66,90ARY_END DW 125N DW 18DATAS ENDSCODE SEGMENTMAIN PROC FARASSUME CS:CODE,DS:DATAS START: PUSH DSXOR AX,AXPUSH AXMOV AX,DATASMOV DS,AXMOV AX,NMOV ARY_HEAD-2,0FFFFHMOV SI,0 COMPARE:CMP ARY_END[SI],AXJLE INSERTMOV BX,ARY_END[SI]MOV ARY_END[SI+2],BXSUB SI,2JMP SHORT COMPARE INSERT: MOV ARY_END[SI+2],AX RETMAIN ENDPCODE ENDSEND START三、实验的(显示)结果Press any key to continue第一部分CV调试结果如下:第二部分CV调试结果如下:四、实验(调试)心得第一部分:调试中出现的问题及解决办法:本来程序中使用的返回DOS的方法是使用程序结束中断INT 20H 指令,但不能正确运行,可能是计算机也可能是软件的问题,然后又修改程序,改使用INT 21H 的4CH号功能调用,这样修改完成后程序便可以正确运行了。
微机原理与接口技术实验报告实验三实验名称:数码管显示实验实验代码:代码一:数码管动态显示0-9;Io-8.asm;数码管显示示例程序1;动态显示0-9IOY0 EQU 3000H ;片选IOY0对应的端口始地址DA TA1 SEGMENT;定义数码管显示0-9的值NUM DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H DA TA1 ENDSSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA1START:;载入数据段MOV AX,DATA1MOV DS,AXMOV DX,IOY0LEA SI,NUMMOV CX,10XOR AX,AXNEXT:MOV AL,[SI] ;低八位确定要显示的数值MOV AH,1FH ;高八位确定选择的数码管OUT DX,AX ;将值输出到外设CALL DALL YINC SI ;显示下一数值LOOP NEXTJMP STARTDALL Y PROC NEAR ;软件延时子程序PUSH CXPUSH AXMOV CX,0FFFHD1: MOV AX,0FFFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND START运行结果:六位数码管动态显示0-9代码二:数码管动态显示0-99;数码管动态显示0-99IOY0 EQU 3000H ;片选IOY0对应的端口始地址DA TA1 SEGMENT;定义数码管显示0-9的值NUM DB 0FCH,60H,0DAH,0F2H,66H,0B6H,0BEH,0E0H,0FEH,0F6H DA TA1 ENDSSTACK1 SEGMENT STACKDW 256 DUP(?)STACK1 ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA1START:;载入数据段MOV AX,DATA1MOV DX,IOY0LEA SI,NUMLEA DI,NUMMOV CX,10XOR AX,AXMOV CX,100MOV BX,0ADD DI,BXNEXT1:;---------SW----;MOV CX,10;----------GW-------;NEXT:PUSH CXMOV CX ,0FFHNEXT3:MOV AL,[SI] ;低八位确定要显示的数值MOV AH,2FH ;高八位确定选择的数码管OUT DX,AXCALL DALL YMOV AL,[DI]MOV AH,1FHOUT DX,AXCALL DALL YLOOP NEXT3INC SIPOP CX;JMP MYLOOP ;显示下一数值LOOP NEXTINC DILEA SI,NUMJMP NEXT1DALL Y PROC NEAR ;软件延时子程序PUSH CXMOV CX,0FFHD1: MOV AX,0FFFHD2: DEC AXJNZ D2LOOP D1POP AXPOP CXRETDALL Y ENDPCODE ENDSEND START运行结果:数码管后两位动态显示0-99。
实验三 继电器控制要求和代码 二、实验原理与内容 实验原理如图所示,编程使用8253定时,让继电器周而复始的闭合5秒钟(指示灯亮),断开5秒钟(指示灯灭)。
5V 1、将8253计数器0设置为方式3,计数器1设置为方式0串连使用,CLK0接1MHZ 时钟,设置两个计数器的初值(乘积为5000000)启动计数器工作后,经过5秒OUT1 输出高电平。
通过8255A 口查询OUT1的输出电平,用C 口的PC0输出开关量控制继电器动作。
2、继电器开关量输入端输入“1”,继电器常开触点闭合,电路接通,指示灯亮,输入“0”,开关断开,指示灯熄灭。
一、实验目的1、了解微机控制直流继电器的原理2、进一步熟悉8255和8253的应用2主程序Data segmentio8255 equ 28bhio8255a equ 288hio8253 equ 283hio82530 equ 280hio82531 equ 281hdata endscode segmentassume cs:codestart:mov dx,io8255mov al,90hout dx,almov al,01 ;置位out dx,alcall delaymov al,0 ;复位out dx,alcall delayjmp startdelay proc near ;延时子程序push dxmov dx,io8253 ;设8253计数器0为方式3mov al,36hout dx,almov dx,io82530 ;8253计数器0写初值mov ax,10000out dx,almov al,ahout dx,almov dx,io8253 ;设8253计数器1为方式0mov al,70hout dx,almov dx,io82531 ;8253计数器1写初值mov ax,500out dx,almov al,ahout dx,alpress:mov ah,6mov dl,0ffhint 21hjz next ;无键按下跳转mov ah,4chint 21hnext:mov dx,io8255ain al,dxtest al,01h ;测试jz presspop dxret delay endpcode endsend start。
试验一存储器读写实验一、存储器读写实验目的1、熟悉静态RAM的使用方法,掌握8088微机系统扩展RAM的方法。
2、掌握静态RAM读写数据编程方法。
二、实验内容对指定地址区间的RAM(2000H~27FDH)先进行写数据55AAH,然后将其内容读出再写到3000H~33FEH中。
三、实验步骤(运行实验程序)1、运行实验程序;2、稍后按RESET键退出,用存贮器读方法检查2000H~27FDH中的内容和3000~33FF中的内容应都是55AA。
四、实验程序CODE SEGMENTASSUME CS:CODESTART: MOV AX,0HMOV DS,AXMOV BX,2000HMOV AX,55AAHMOV CX,03FFHRAMW1: MOV DS:[BX],AXADD BX,0002HLOOP RAMW1MOV AX,2000HMOV SI,AXMOV AX,3000HMOV DI,AXMOV CX,03FFHCLDREP MOVSBRAMW2: JMP RAMW2CODE ENDSEND START实验二继电器控制实验一、实验目的:掌握用继电器控制的基本方法和编程。
二、实验内容1、利用8255A PB0输出高低电平,控制继电器的开合,以实现对外部装置的控制。
2、硬件线路原理如图5-23所示3、实验预备知识:现代自动化控制设备中都存在一个电子与电气电路的互相联结问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件(电动机、电磁铁、电灯等);一方面又要为电子电路的电气提供良好的电隔离,以保护电子电路和人身的安全,电子继电器便能完成这一桥梁作用。
三、连线方法1、8255A的PB0连JIN插孔。
2、将CS-8255连到Y6。
四、实验步骤1、按图连好实验线路图。
2、运行实验程序,继电器应循环吸合,L-13和L-14交替亮灭。
五、硬件线路接线图六、试验程序CODE SEGMENTASSUME CS:CODEIOCONPT EQU 0063HIOCPT EQU 0061HSTART: MOV AL,80HMOV DX,IOCONPTOUT DX,ALNOPNOPNOPIOLED1: MOV DX,IOCPTIODE2: MOV AL,01HOUT DX,ALCALL DELAYMOV AL,00HOUT DX,ALCALL DELAYJMP IODE2DELAY: MOV CX,0FFFFHDELY: LOOP DELYRETCODE ENDSEND START实验三小直流电机调速实验一、实验目的1、掌握直流电机的驱动原理。
微机原理实验三
实验三:微机原理中的中断系统
实验三目标:通过实践加深对微机中断系统的理解,掌握中断的原理和应用。
实验器材:
1. PC机
2. 开发板
3. 下载线
4. 电源线
实验步骤:
1. 将开发板连接到PC机并接通电源线。
2. 打开开发板上的开关,使其进入工作状态。
3. 在PC机上打开开发板相关的配置软件。
4. 在配置软件中设置中断向量表,指定中断异常处理程序的位置。
5. 编写一个简单的程序,在其中设置一个中断触发条件。
6. 将编写好的程序下载到开发板中。
7. 运行程序,观察中断是否正常触发。
8. 进一步深入理解中断的工作原理,研究中断的应用场景和相关应用。
实验注意事项:
1. 在进行中断实验时,需要谨慎操作,避免对PC或开发板造成损坏。
2. 在编写程序时,需注意中断触发条件的设置,避免出现逻辑错误。
3. 实验中如遇到问题,应及时向老师或助教请教,避免因错误操作而导致系统故障。
实验总结:
通过本次实验,我进一步了解了中断系统的原理和应用。
掌握了中断向量表的设置、中断异常处理程序的编写和中断触发条件的设置方法。
此外,通过实践运行程序和观察中断的触发状况,加深了对中断工作原理的理解。
在今后的学习和实践中,我将进一步研究中断的应用场景,并探索更多与中断相关的知识。
实验一调试程序DEBUG的使用方法一、实验目的通过对DEBUG调试程序的使用,熟悉用DEBUG调试汇编语言程序的方法,加深对汇编语言指令、机器码、寻址方式等基本内容的理解,为后续程序编制和调试打下基础。
二、实验原理调试程序DEBUG 的特点:在受控环境中测试程序;装入,显示或修改任何文件;执行DOS程序;完成磁盘实际读/写操作;建立或汇编汇编语言程序。
DEBUG的命令格式:DEBUG [drive:][path][filename.exe][param...]其中:drive: 是DEBUG将要调试的文件所在的磁盘驱动器。
path: 是查找DEBUG将要调试的文件所需的子目录路径,若未指定,DOS使用当前目录。
filename.exe 是DEBUG将要调试的文件名。
param 是将被调试的程序(或文件)的命令行参数。
例如:调试放在c 盘asm文件夹下的汇编程序t1.exe。
c:> debug c:\asm\t1.exe ↙(↙回车符)当显示器出现提示符“-”时,说明已进入DEBUG状态,这时,可用DEBUG命令进行操作。
DEBUG使用单字符命令:R命令:查看、改变CPU寄存器的内容D命令:查看内存中的内容E命令:改写内存中的内容U命令:将内存中的机器指令翻译成汇编指令(反汇编)T命令:执行一条机器指令A命令:以汇编指令的格式在内存中写入一条机器指令Q命令:退出DEBUG 状态三、实验内容1、参考教材,熟悉DEBUG的使用方法,运行各种命令,观察运行后的况。
2、用DEBUG调试程序调试汇编语言例子te1.exe程序(程序见后面)。
1)用U命令对te1.exe文件进行反汇编,比较源程序te1.asm和反汇编后的指令代码。
2)用R命令查看各寄存器的初试状态。
3)用T命令单步跟踪te1.exe的执行过程,写出每一步执行后,相关寄存器中的内容。
四、实验步骤1、按实验内容用全屏幕编辑程序EDIT编写源程序te1.asm2、运用汇编源程序,产生目标文件.OBJ3、连接目标文件,产生可执行文件.EXE4、用DEBUG运行可执行文件。
微机原理实验报告实验三七段数码管显示一、实验目的掌握接口芯片的编址方法,掌握8255的初始化设置,及数码管显示原理,掌握段控及位控的概念。
二、实验内容连接地址译码器与8255的连线及8255与数码管的连线;在数据段中存放0到9的字形码;从微机键盘输入2个数字的ASCII码,在输入过程中检查如非数字键则重新输入;然后将输入的ASCII码变成相应的数字,再利用换码指令XLAT查表得到相应的字形码;将字形码送到8255输出口所接的数码管上显示。
三、实验原理图四、实验流程图定义堆栈段、数据段定义代码段,写主函数返回DOS开始输入1号数字并转换成BCD 码存入输入2号数字并转换成BCD 码存入找到1号数字对应的字符并转换输出找到2号数字对应的字符并转换输出是否有按键按下INT21H 6号功能YN五、实验结论数码管能正确显示数字,调节DELAY 函数中数值可以调整延迟时间,得到不同显示效果。
六、实验心得学习使用XLAT ,同时可以不使用此方法,利用偏移地址的方法转换字符。
学习使用了INT 21H 6号功能,判断按键是否按下。
学习使用了实验箱及正确的连线。
学习分辨简易非简易连线方法。
附录:程序清单INPORT_1 EQU 0EF00H-280H+28BHINPORT_A EQU 0EF00H-280H+288HINPORT_C EQU 0EF00H-280H+28AHSTACK SEGMENT STACKDB 100 DUP(?)STACK ENDSDATA SEGMENTTABL DB 3FH,06H,5BH,4FH,6BH,6DH,7DH,07H,7FH,6FH DIGIT DB 2 DUP(?)DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKMAIN PROCMOV AX,DATAMOV DS,AXLEA BX,DIGITCALL KEYINAND AL,0FHMOV [BX],ALINC BXCALL KEYINAND AL,0FHMOV [BX],ALMOV DX,INPORT_1MOV AL,10001010BOUT DX,ALDISP: MOV DX,INPORT_ALEA BX,DIGITMOV AL,[BX]LEA BX,TABLEXLAT TABLEOUT DX,ALMOV DX,INPORT_CMOV AL,10BOUT DX,ALCALL DELAYINC BXMOV DX,INPORT_ALEA BX,DIGITMOV AL,[BX]LEA BX,TABLXLAT TABLOUT DX,ALMOV DX,INPORT_CMOV AL,01BOUT DX,ALCALL DELAYMOV AH,6MOV DL,0FFHINT 21HJZ DISPMOV AX,4C00HINT 21H MAIN ENDPKEYIN PROC INPUT: MOV AH,8INT 21HCMP AL,30HJB INPUTCMP AL,39HJA INPUTMOV DL,ALMOV AH,2INT 21HRETKEYIN ENDPDELAY PROCPUSH DIPUSH CXMOV DI,0FFFHMOV CX,0 NEXT1: LOOP NEXT1DEC DIJNZ NEXT1POP CXPOP DIRETDELAY ENDPCODE ENDSEND MAIN。
微机原理及接口技术实验报告班级:光094-2姓名:....学号:20091350429实验一熟悉宏汇编程序及debug一.实验目的1.学习并掌握汇编语言指令寻址方式2.熟悉在PC机上用DEBUG调试和运行汇编语言指令的过程。
二.实验内容根据给定寄存器内容及存储单元内容,运行给定指令,观察记录运行结果1、给定的寄存器内容及存储单元内容(DS)=2000H,(SI)=0002H,(BX)=0100H(20100H)=1H,(20101H)=34H,(20102H)=56H,(20103H)=78H,(21200H)=2AH,(21201H)=4CH,(21202H)=0B7H,(21203H)=65H2、指令(1)M OV AX,1200H(2)M OV AX,BX(3)M OV AX,[1200H](4)M OV AX,[BX](5)M OV AX,1100H[BX](6)M OV AX,[BX][SI](7)M OV AX,1100H[BX][SI]四.调试步骤1.运行DEBUG。
2.用A命令汇编指令(1)3.按给定寄存器和存储单元内容修改寄存器和存储单元内容。
4.单步运行指令,查看结果5.重复上述步骤,调试指令(2)——(7)指令寻址方式源操作数有效地址源操作数物理地址指令运行结果(AX)1 立即寻址 0100 20100 12002 寄存器寻址 0103 20103 01003 直接寻址 1200 21200 4c2a4 寄存器间接寻址0100 20100 34125 寄存器相对寻址1200 21200 4c2a6 基址变址寻址 0102 20102 78567 相对基址变址寻址1202 21202 65b7 六.思考题1、汇编语言指令有哪些寻址方式?用于寻址的寄存器有哪些?立即数寻址、直接寻址,寄存器寻址,寄存器间接寻址,寄存器相对寻址,基址变址寻址,基址变址相对寻址。
对于16位数据,寄存器可以是AX,BX,CX,DX,SI,DI,SP,BP; 对于8位数据,寄存器可以是AH,AL,BH,BL,CH,CL,DH,DL实验二寻址方式练习及多字节运算程序一.实验目的1.学习并掌握数据传送指令和算术运算指令2.熟悉在PC机上编辑、汇编、连接、调试与运行汇编语言程序的过程。
实验三串口通信实验一、实验目的与要求利用开发板的串口仿真功能,掌握串口通信的编程方法。
实验要求:(1)利用串行口向PC机发送字符“0x55”,利用串口调试软件在计算机端观察接收到的数据是否与预期一致。
(2)利用串行口向PC机发送字符串,利用串口调试软件在计算机端观察接收到的数据是否与预期一致(3)观察分析参考程序3,利用开发板接收PC机发送过来的16进制数据并用数码管显示。
(4)掌握实验基础内容后根据参考源程序进行修改和拓展,自行设计程序目标并编程验证,比如修改发送程序的内容,实现由上位机控制数码管显示内容等。
二、实验注意事项1、启动KEIL软件,选择菜单“工程\新建工程”以建立工程(扩展名为.uv2,如T2a.uv2)。
2、选择菜单“文件\新文件”以建立一个新的文本编辑窗口,在窗口中输入参考源程序1并保存(扩展名为.asm),如test2a.asm,然后将其加入到源程序组1中。
3、在工程菜单的选项“目标1属性”中设置相应的选项,包括“输出\产生hex 文件”选项以便汇编生成HEX代码供编程器使用,在“调试\使用KeilMonitor-51 Driver”的设置中选择相应的串口号。
4、使用“工程”中的“编译全部文件”完成相应的文件编译,如果程序格式正确将生成相应HEX代码文件,如T2a.hex。
如果提示有编译错误请自行修改源程序然后再重新编译。
5、用单根连线将P1.0(JP44)连接到8路指示灯部分(JP32)的LED0,将P1.6、P1.7(JP44)分别连接到JP37的K01、K02。
6、完成仿真器与计算机之间的连线并通电。
7、在KEIL软件中启动“调试\开启仿真模式”,然后用“运行”命令实现全速运行的仿真。
8、观察实验现象并分别依次按下K01、K02,观察并记录实验现象然后在KEIL 软件中启动“中断运行-调试(debug)\关闭仿真模式”退出仿真,选择“工程\关闭工程”可关闭当前工程。
9、参考步骤1-4完成参考源程序2的建立与输入,如新项目T2b.uv2和新的源程序test2b.asm,完成编译与仿真设置。
实验三使用8251A的串行接口应用实验一、实验目的1) 掌握串行通信原理及半双工和全双工的编程方法。
2) 掌握用8251A 接口芯片实现微机间的同步和异步通信。
3) 掌握8251A 芯片与微机的接口技术和编程方法。
二、实验原理和内容8251A 是一种可编程的同步/异步串行通信接口芯片,具有独立的接收器和发送器,能实现单工、半双工、双工通信。
1)8251A 内部结构8251A 通过引脚D0~D7 和系统数据总线直接接口,用于和CPU 传递命令、数据、状态信息。
读写控制逻辑用来接收CPU 的控制信号、控制数据传送方向。
CPU 对8251A 的读写操作控制表如表3-4 所示。
方式控制字确定8251A 的通信方式(同步/异步)、校验方式(奇校/偶校/不校)、字符长度及波特率等,格式如图3-10 所示。
命令控制字使8251A 处于规定的状态以准备收发数据,格式如图3-11 所示。
方式控制字和命令控制字无独立的端口地址,8251A 根据写入的次序来区分。
CPU 对8251A 初始化时先写方式控制字,后写命令控制字3)状态寄存器8251 状态寄存器用于寄存8251A 的状态信息,供CPU 查询,定义如图3-12 所示。
TXRDY位:当数据缓冲器空时置位,而TXRDY引脚只有当条件( 数据缓冲器空•/CTS•TXE)成立时才置位。
溢出错误:CPU 没读走前一个字符,下一个字符又接收到,称为溢出错误。
帧错误:在字符结尾没检测到停止位,称为帧错误。
4)PC 机寄存器的端口地址其中:线路控制寄存器第七位:DLAB=0;线路控制寄存器第七位:DLAB=1。
5)波特率和除数因子对照表232标准的机械、电气规范。
6)实验连接方法按图连接好电路,其中8254 计数器用于产生8251 的发送和接收时钟,TXD 和RXD 连在一起。
1) 8254/CLK0 连接时钟/1MHz;2) 8254/CS 连接I/O 译码/Y0(280H---287H);3) 8254/OUT0 连接8251/TX/RXCLK;4) 8254/GATE0 连接+5V;5) 8251/TXD 连接8251/RXD;6) 8251/CS 连接I/O 译码/Y7(2B8H---2BFH。
7)编程提示8251 的控制口地址为2B9H,数据口地址为2B8H。
8254 计数器的计数初值=时钟频率/(波特率X 波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子16,则计数器初值52。
基于8251 芯片实现异步串行通信一般有两种方式,一种是查询方式,另一种是中断方式,使用哪种方式取决于进行初始化时寄存器的设置。
8254 计数器的计数初值=时钟频率/(波特率×波特率因子),这里的时钟频率接1MHz,波特率若选1200,波特率因子若选16,则计数器初值为52。
本实验采用8251A 异步方式发送,利用8086 汇编语言实验计算机点到点的串口通信,设置:波特率为1200bps、数据位7 位、停止位1 位、偶校验方式,利用查询方式或中断方式实现双机通信,能够传输多个字符。
三、实验流程图四、实验代码(1)收发字符data segmentio8254a equ 280hio8254b equ 283hio8251a equ 2b8hio8251b equ 2b9hmes1 db 'you can play a key on the keybord!',0dh,0ah,24hmes2 dd mes1data endscode segmentassume cs:code,ds:datastart: mov ax,datamov ds,axmov dx,io8254b ;设置8254计数器0工作方式mov al,16hout dx,almov dx,io8254amov al,52 ;给8254计数器0送初值out dx,almov dx,io8251b ;初始化8251xor al,almov cx,03 ;向8251控制端口送3个0delay: call out1loop delaymov al,40h ;向8251控制端口送40H,使其复位call out1mov al,4eh ; 1个停止位,8个数据位,波特率因子为16call out1mov al,27h ;向8251送控制字允许其发送和接收call out1lds dx,mes2 ;显示提示信息mov ah,09int 21hwaiti: mov dx,io8251bin al,dxtest al,01 ;发送是否准备好jz waitimov ah,01 ;是,从键盘上读一字符int 21hcmp al,27 ;若为ESC,结束jz exitmov dx,io8251aout dx,al ;发送mov cx,40hs51: loop s51 ;延时next: mov dx,io8251bin al,dxtest al,02 ;检查接收是否准备好jz next ;没有,等待mov dx,io8251ain al,dx ;准备好,接收mov dl,almov ah,02 ;将接收到的字符显示在屏幕上int 21hjmp waitiexit: mov ah,4ch ;退出int 21hout1 proc near ;向外发送一字节的子程序out dx,alpush cxmov cx,40hgg: loop gg ;延时pop cxretout1 endpcode endsend start(2)收发文件DATA SEGMENTFILE1 DB 'C:\1.txt',0FCODE1 DW 0BUF1 DB 2000H DUP(0)FILE2 DB 'C:\2.txt',0FCODE2 DW 0BUF2 DB 2000H DUP(0)IO8254A EQU280HIO8254B EQU 283HIO8251A EQU 2b8HIO8251B EQU 2b9HDATA ENDSSTACK SEGMENT PARA STACKDB 256 DUP(0)CODE SEGMENTASSUME CS: CODE,DS:DATA,SS:STACKSTART:MOV A X,DATAMOV D S,AXMOV AL,16hOUT DX,ALMOV DX,IO8254BMOV AL,52 ;给8254计数器0送初值OUT DX,ALMOV DX,IO8251B ;初始化8251XOR AL,ALMOV CX,03 ;向8251控制端口送3个0MOV DX,IO8251B ;传输线路控制寄存器LCR,最高位为DLAB=1MOV AX,80HOUT DX,ALMOV DX,IO8251B ; DLAB=1,除数锁存器(低字节)DLLMOV AX,60HOUT DX,ALMOV DX,IO8251B ;DLAB=1,除数锁存器(高字节)DLHMOV AX,0OUT DX,AL ;高字节DLH:00H,低字节:60H,设置波特率为1200MOV DX,IO8251B ;传输线路控制寄存器LCR,最高位为DLAB=0MOV AX,0AH ;DLAB=0,0=禁止中断,0=无附加奇偶标志位,0=奇校验,1=有奇偶校验,;0=1位停止位,10=7位OUT DX,ALMOV DX,IO8251B;MOV AX,03H;正常工作状态,rts引脚为低电平,DTR引脚低电平OUT DX,ALMOV DX,IO8251B ;DLAB =0,禁止中断MOV AX,0OUT DX,ALMOV AH,3CH ;文件新建LEA DX,FILE2MOV CX,0INT 21HMOV AH,3DH ;文件操作LEA DX,FILE2MOV AL,2INT 21HMOV FCODE2,AXMOV AH,3DH ;文件操作LEA DX,FILE1INT 21HMOV FCODE1,AXMOV SI,0MOV DI,0FOREVER:MOV DX,IO8251B ;从线路状态寄存器读状态IN AL,DXTEST AL,1EH ;检测是否为00011110,即BI=1,检测中断,FE=1,帧错,PE=1,奇偶错,OE=1,溢出错JNZ ERROR ;传输线状态寄存器全部都是0TEST AL,01H ;检测接受数据是否准备好了JNZ RECEIVE ;等于0则表示数据没有准备好TEST AL,20H ;数据没有准备好JNZ send ;没有,则跳转等待JMP FOREVERsend:MOV AH,3FH ;从文件中读取发送LEA DX,BUF1ADD DX,SIMOV BX,FCODE1MOV CX,1INT 21HCMP AX,0JE FOREVERMOV DX,IO8251AMOV AL,BUF1[SI]OUT DX,ALINC SIJMP FOREVERRECEIVE:MOV DX,IO8251A ;接收数据IN AL,DXAND AL,7FH ;最高位为停止位CMP AL,03H;JNZ CHARJMP DONECHAR:MOV DL,ALMOV AH,02HINT 21HCMP AL,0DHJNZ SAVE_FILEMOV DL,0AHINT 21HSAVE_FILE:MOV BUF2[DI],DLMOV AH,40H ;接收到的字符写入文件LEA DX,BUF2ADD DX,DIMOV BX,FCODE2MOV CX,1INT 21HINC DIJMP FOREVERERROR:MOV DX,IO8251AIN AL,DXMOV DL,0AHMOV AH,02HINT 21HJMP FOREVERDONE:MOV BX,FCODE1MOV AH,3EHINT 21HMOV BX,FCODE2INT 21HMOV AH,4CHINT 21HCODE ENDSEND START五、实验结果(1)收发字符(2)收发文件六、实验心得通过本次实验,与课本知识相结合,我学会了串行通信及半双工和全双工的编程方法。
和组员一起编写代码让我对8251A芯片与微机接口的编程方法有了更清楚的认识,通过编写代码加深了课本中控制字、命令字等的认知,灵活应用,不再局限于课本的死记硬背。
通过对硬件电路的连接也让我对各个芯片之间的联系有了更深刻的认识。