微机原理及应用实验报告_第1页
微机原理及应用实验报告_第2页
微机原理及应用实验报告_第3页
微机原理及应用实验报告_第4页
微机原理及应用实验报告_第5页
已阅读5页,还剩10页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实 验 报 告微机原理及应用课 程 名 称实验1 debug操作实验 实验2 汇编程序设计实验实验3 8253定时/计数器实验 实验4 8255 并行接口实验实 验 名 称年 月 日 至 年 月 日实 验 日 期学 生 专 业学 生 学 号学 生 姓 名教 师 姓 名成 绩南京理工大学机械工程学院实验一 debug命令及其操作一、实验目的1 熟练掌握debug的常用命令,学会用debug来调试程序。2 深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。3 掌握各种寻址方法以及简单指令的执行过程。二、实验要求1 实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分

2、析等。2 本实验要求在pc机上进行。3 本实验只要求在debug调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容l 实验内容1:学习用debug调试工具进行源程序的输入、汇编、调试和执行。实验报告要求:1 写出运行结果;2 小结debug常用命令及使用体会答:1.原文已给出(略) 2a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试n指定文件路径文件名(含扩展名)u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令体会:提升学习热情和动手能力 有助于理解代码执行过程l 实验内容2设ax=3000h,bx=5000h,请编一程序段将ax的内容和bx

3、的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用debug调试程序进行汇编与调试。实验报告要求:1 写出完成上述功能的程序段;2 单步执行,并记录寄存器ax, bx及堆栈指针sp的值答:a100 mov ax,3000 ; ax:3000 bx:0000 sp:ffeemov bx,5000 ;ax:3000 bx:5000 sp:ffeepush ax ;ax:3000 bx:5000 sp:ffecmov ax,bx ;ax:5000 bx:5000 sp:ffecpop bx ;ax:5000 bx:3000 sp:ffeeint 20l 实验内容3设ds=当前段地址,bx

4、=0300h,si=0002h,请用debug的命令将存储器偏移地址300h304h连续单元装入0ah,0bh,0ch,0dh,0eh。在debug状态下送入下面的程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,ax中的内容是什么?实验报告要求:1 写出源操作数的寻址方式;2 单步执行,并记录相关寄存器及存储单元的值a100 ;给各内存单元赋值mov di,0300 mov dx,0a mov cx,5 1oop1:movdi,dxinc diinc dx1oop loop1程序清单如下: 寻址方式和ax的内容mov bx,0300 立即寻址mov si, 0002

5、立即寻址mov ax,bx 寄存器寻址 ax: 0300 mov ax,0304h 立即寻址 ax:0304mov ax,0304h 存储器直接寻址 ax:ds:0304 内存单元的内容0ehmov ax,bx 寄存器间接寻址 ax:ds:0300 内存单元的内容0ahmov ax,0001bx 基址相对寻址 ax:ds:0301 内存单元的内容0bhmov ax,bxsi 基址变址寻址 ax:ds:0302 内存单元的内容0chmov ax,0001bxsi 基址变址寻址 ax:ds:0303内存单元的内容0dhl 实验内容4设ax=0002h,编写程序将ax的内容乘10,要求用移位的方法完

6、成。写出实现上实验报告要求:1 述功能的程序段;2 单步执行程序,记录每条指令的机器码及相关寄存器的内容注意:左移指令用shl,而不能使用sal a100mov ax,2 机器码:b80200 ax:0002 dx:0000 cl:00mov dx,0 机器码:ba0000 ax:0002 dx:0000 cl:00shl ax,1 机器码:d1e0 ax:0004 dx:0000 cl:00mov dx,ax 机器码: 01d0 ax:0004 dx:0004 cl:00 mov cl,2 机器码:b102 ax:0004 dx:0004 cl:02shl ax,cl 机器码:d3e0 ax

7、:0010 dx:0004 cl:02 add ax,dx 机器码:01d0 ax:0014 dx:0004 cl:02int 20 机器码:cd20 ax:0014 dx:0004 cl:02实验二 简单程序的编写及汇编连接一、 实验目的1 熟练掌握编写汇编语言源程序的基本方法和基本框架。2 学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。3 掌握程序中数据的产生与数输出的方法。4 熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。二、 实验要求1 实验前准备 分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。 写出算法或画出流程图。 写出源

8、程序。 对程序中的结果进行分析,并准备好上机调试的过程。2 本实验要求在pc机上进行。3 汇编过程中出现问题,可用debug进行调试。三、 实验内容1 实验内容1 编辑源程序(参考程序见下),建立 .asm文件; 用masm程序汇编,生成 .obj文件;查看 .lst文件的内容 用link程序链接,生成 .exe文件; 使用debug命令将 .exe文件调进内存,执行后查看程序运行结果; 使用debug命令,检查各段在内存当中分配情况。参考程序:; exercize21data segment org 0200h buffer dw 0, 1, -5, 10, 256, -128, -100,

9、 45, 6, 3, dw -15,-67, 39, 4, 20, -1668, -32766, 32765, -525,dw 300 count equ ($-buffer)/2 max dw ?data endsstack segment stack stack db 100 dup (s)stack endscode segment para code assume cs:code, ds:data, ss:stacksta proc far push ds xor ax, ax push ax mov ax, data mov ds, ax lea si, buffer mov cx,

10、 count dec cx mov ax, sichkmax: add si, 2 cmp si, ax jle next mov ax, sinext: loop chkmax mov max, ax retsta endpcode ends end sta实验报告要求:1 小结汇编语言源程序的编译及连接过程;2 记录数据段在程序执行前后的内容3 写出程序调试中出现的问题及解决方法;答:1 把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名字 ,以默认配置生成obj文件,再打开链接程序输入待链接的程序名字以默认配置生成exe文件2 执行前后buff数据数据块不变 m

11、ax执行前数据为0000h执行后为7ffdh3 很顺利作业:编程并且在计算机上调试。用汇编语言编写一个加法程序:1234+5678请用ascii码的形式将加数与被加数存放在数据区data1和data2中,并将相加的结果显示输出。假设有一组数据:5,-4,0,3,100,-51,请编一程序,判断每个数是否大于0,等于0,还是小于0,并输出判断结果。即:1当x0y = 0当x=0-1当x0sstack segment dw 32 dup(?)sstack endsdata segment data1 db 1234 data2 db 5678 data3 db 4 dup(?)data endsc

12、ode segment assume cs:code,ss:sstack,ds:datasta:push ds xor ax,ax push ax mov ax,data mov ds,ax lea si,data1 lea di,data2 lea bx,data3 mov al,si+3 mov ah,di+3 and al,0fh and ah,0fh add al,ah or al,30h mov bx+3,al mov al,si+2 mov ah,di+2 and al,0fh and ah,0fh adc al,ah or al,30h mov bx+2,al mov al,si

13、+1 mov ah,di+1 and al,0fh and ah,0fh adc al,ah or al,30h mov bx+1,al mov al,si mov ah,di and al,0fh and ah,0fh adc al,ah or al,30h mov bx,al mov cx,4 mov ah,2ha1:mov dl,bx int 21h inc bx loop a1 retcode ends end stasstack segment stack stack dw 32 dup(?)sstack endsdata segment buff db 12,-23,5,-4,0,

14、3,100,-51,3,-45,9,2 data endscount equ $-buffcode segment assume ss:sstack,ds:data,cs:codestart prog far push ds xor ax,ax push ax mov ax,data mov ds,ax lea bx,buff lea si,count mov cx,siloop1:mov al,bx cmp al,0 jz aa1 and al,80h jz aa2 mov ah,2 mov dl,2dh int 21h aa: inc bx loop loop1 jmp ov aa1:mo

15、v ah,2 mov dl,30h int 21h jmp aa aa2:mov ah,2 mov dl,31h int 21h jmp aa ov:retstart endpcode ends end start 实验三 8254定时/计数器应用实验一、实验目的1、掌握8254的工作方式及应用编程;2、掌握8254典型应用电路的接法。二、实验设备 pc机一台,td-pie实验装置一套,示波器一台。三、实验内容 1、计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动kk1 +5次后,产生一次计数中断,并在屏幕上显示一个字符m。 2、定时应用实验。编写程序,应用82

16、54的定时功能,产生一个1 ms的方波。1、计数应用实验编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲kk 1+作为clk0时钟,out0连接mir7,每当kk1+按动5次后产生中断请求,在屏幕上显示字符m。实验步骤:(1) 实验接线如图4-2所示;(2) 编写实验程序,经编译、链接无误后装入系统;(3) 运行程序,按动kk1+产生单次脉冲,观察实验现象;(4) 改变计数值,验证8254的计数功能。图4.2 8254计数应用实验接线图实验程序清单:a8254 equ 06c0h;8254计数器0的端口地址b8254 equ 06c2h;8254计数器1的端口地址c8

17、254 equ 06c4h;8254计数器2的端口地址con8254 equ 06c6h;8254控制字寄存器的端口地址sstack segment stackdw 32 dup(?)sstack endscode segmentassume cs:code, ss:sstackstart : push dsmov ax, 0000hmov ds,axlea ax,irq7mov si,3chmov si,axmov ax,seg irq7mov si+2,axclipop ds;初始化主片8259,其端口地址为20h和21hmov al,11hout 20h,al;icw1mov al,08

18、hout 21h,al;icw2mov al,04hout 21h,al;icw3mov 21h,01hout 21h,al;icw4mov al,6fh;ocw1out 21h,al;初始化8254mov dx,con8254mov al,_11h_;计数器0,方式0out dx,almov dx,a8254mov al,_04h_;给计数器0送初值out dx,alstiaa1: jmp aa1;中断服务程序irq7: mov ax,014dhint 10h;显示字符mmov ax,0120hint 10hmov al,_20h_out _20h_,al;中断结束命令iretcode en

19、ds end segment2、定时应用实验 编写程序,将8254的计数器0设置为方式3,用信号源1mhz作为clk0时钟,out0输出波形为1 ms方波。实验步骤:(1)接线图如图4-3所示;(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;(3)运行实验程序,用示波器测试out0输出,验证程序功能。图4.3 8254定时应用实验接线图实验程序清单a8254 equ 06c0hb8254 equ 06c2hc8254 equ 06c4hcon8254 equ 06c6hsstack segment stackdw 32 dup(?)sstack endscode segmenta

20、ssume cs:codestart:mov dx,con8254 mov al,_37h_;8254控制字,计数器0,方式3 out dx,al mov dx,a8254mov al,_63h_;给计数器0送初值out dx,almov al,_09h_out dx,alaa1: jmp aa1code ends end start六、思考题1、在将计数初值赋给8254后,马上就可以启动并进行定时或计数吗?答:不是,计数的开始还得看门控信号,在写入初值后若门控信号有效(软件触发为高电平有效,硬件触发为上升沿有效)则开始计数,否则等待有效门控信号的到来才开始计数2、若clk0输入1.925mh

21、z的时钟,能否在out0实现输出30ms的定时脉冲?答:30*1925=5775065535 所以用二进制写初值方式可以实现,若用十进制方式写初值则不能实现(十进制最大计数初值为0,即10000)实验四 8255并行接口实验一、实验目的 1、学习并掌握8255的工作方式及其应用; 2、掌握8255典型应用电路的接法。二、实验设备 pc机一台,td-pite实验装置一套。三、实验内容1、基本输入输出实验。本实验系统中,8255的端口地址分别为0640h,0642h,0644h以及0646h。编写程序,使8255的a口为输入,接拨动开关,b口为输出,接发光二极管;要求只要开关拨动,发光二极管的显示

22、就发生相应改变。2、流水灯显示实验。编写程序,使8255的a口和b口均为输出,数据灯d7d0由左向右,每次仅亮一个灯,循环显示,d15d8与d7d0正相反,由右向左,每次仅点亮一个灯,循环显示。四、实验原理图5.1 8255内部结构及外部引脚图 并行接口是以数据的字节为单位与i/o设备或被控制对象之间传递信息。cpu和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是intel公司生产的通用并行i/o接口芯片,它具有a, b, c三个并行接口,用+5 v单电源供电,能在以下三种方式下工作:方式0基本输入/输出方式、方式1选通输入/输出方式、方式2双

23、向选通工作方式。8255的内部结构及引脚如图5-1所示,8255工作方式控制字和c口按位置位/复位控制字格式如图5-2所示。五、实验步骤1、基本输入输出实验 本实验使8255端口a工作在方式0并作为输入口,端口b工作在方式0并作为输出口。用一组开关信号接入端口a,端口b输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述: 图5.2 8255控制字格式 (1) 实验接线图如图5-3所示,按图连接实验线路图; (2) 编写实验程序,经编译、连接无误后装入系统;图5-3 8255基本输入输出实验接线图 (3) 运行程序,改变拨动开关,同时观察led显示,验证程序功能。实验程序清单sstack segment stack dw 32 dup (?

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论