微机原理及应用实验报告

时间:2024.4.20

 

实   验  报  告

文本框: 微机原理及应用课 程 名 称

实 验 名 称

实 验 日 期

学 生 专 业

学 生 学 号

学 生 姓 名

教 师 姓 名

成      绩

南京理工大学机械工程学院

实验一  DEBUG命令及其操作

一、实验目的

1.  熟练掌握debug的常用命令,学会用debug来调试程序。

2.  深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。

3.  掌握各种寻址方法以及简单指令的执行过程。

二、实验要求

1.  实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。

2.  本实验要求在PC机上进行。

3.  本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。

三、实验内容

l  实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。

实验报告要求:

1.  写出运行结果;

2.  小结debug常用命令及使用体会

答:1.原文已给出(略)

  2.a 汇编

d显示内存单元内容

e修改单元内存内容

g执行命令

t单步(或多步)调试

n指定文件路径文件名(含扩展名)

u反汇编

r查看寄存器值及修改

l加载程序

      w写盘命令

体会:提升学习热情和动手能力 有助于理解代码执行过程

l  实验内容2

设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。

实验报告要求:

1.  写出完成上述功能的程序段;

2.  单步执行,并记录寄存器AX, BX及堆栈指针SP的值

答:

A100 

Mov ax,3000  ; ax:3000 bx:0000 sp:ffee

Mov bx,5000   ;ax:3000 bx:5000 sp:ffee

Push ax       ;ax:3000 bx:5000 sp:ffec

Mov ax,bx      ;ax:5000 bx:5000 sp:ffec

Pop bx         ;ax:5000 bx:3000 sp:ffee

Int 20

l  实验内容3

设DS=当前段地址,BX=0300H,SI=0002H,请用DEBUG的命令将存储器偏移地址300H~304H连续单元装入0AH,0BH,0CH,0DH,0EH。在DEBUG状态下送入下面的程序,并用单步执行的方法,分析每条指令源地址的形成过程?当数据传送完毕时,AX中的内容是什么?

实验报告要求:

1.  写出源操作数的寻址方式;

2.  单步执行,并记录相关寄存器及存储单元的值

A100       ;给各内存单元赋值

Mov di,0300            

Mov dx,0a              

Mov cx,5               

1oop1:mov[di],dx

Inc di

Inc dx

1oop loop1

程序清单如下:               寻址方式和AX的内容

       MOV  BX,0300  立即寻址

       MOV  SI, 0002  立即寻址

MOV  AX,BX   寄存器寻址         AX: 0300  

       MOV  AX,0304H  立即寻址          AX:0304

MOV  AX,[0304H] 存储器直接寻址    AX:ds:0304 内存单元的内容0EH

MOV  AX,[BX]   寄存器间接寻址    AX:ds:0300 内存单元的内容0AH

MOV  AX,0001[BX] 基址相对寻址    AX:ds:0301 内存单元的内容0BH

MOV  AX,[BX][SI]  基址变址寻址    AX:ds:0302 内存单元的内容0CH

MOV  AX,0001[BX][SI] 基址变址寻址 AX:ds:0303内存单元的内容0DH

l  实验内容4

设AX=0002H,编写程序将AX的内容乘10,要求用移位的方法完成。

写出实现上实验报告要求:

1.  述功能的程序段;

2.  单步执行程序,记录每条指令的机器码及相关寄存器的内容

注意:左移指令用SHL,而不能使用SAL

    A100

Mov ax,2     机器码:b80200  ax:0002  dx:0000  cl:00

Mov dx,0     机器码:ba0000  ax:0002  dx:0000  cl:00

Shl ax,1       机器码:d1e0  ax:0004  dx:0000  cl:00

Mov dx,ax    机器码: 01d0  ax:0004  dx:0004  cl:00  

Mov cl,2     机器码:b102  ax:0004  dx:0004  cl:02

Shl ax,cl      机器码:d3e0  ax:0010  dx:0004  cl:02 

Add ax,dx     机器码:01d0  ax:0014  dx:0004  cl:02

Int 20         机器码:cd20  ax:0014 dx:0004 cl:02

实验二  简单程序的编写及汇编连接

一、         实验目的

1.  熟练掌握编写汇编语言源程序的基本方法和基本框架。

2.  学会编写顺序结构、分支结构和循环结构的汇编程序,掌握宏定义与宏调用的方法。

3.  掌握程序中数据的产生与数输出的方法。

4.  熟悉建立源文件,进行汇编和连接的全过程,并对程序进行调试。

二、         实验要求

1.  实验前准备

①     分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。

②     写出算法或画出流程图。

③     写出源程序。

④     对程序中的结果进行分析,并准备好上机调试的过程。

2.  本实验要求在PC机上进行。

3.  汇编过程中出现问题,可用DEBUG进行调试。

三、         实验内容

1.实验内容1

①  编辑源程序(参考程序见下),建立 .ASM文件;

②  用MASM程序汇编,生成 .OBJ文件;查看 .LST文件的内容

③  用LINK程序链接,生成 .EXE文件;

④   使用DEBUG命令将 .EXE文件调进内存,执行后查看程序运行结果;

⑤  使用DEBUG命令,检查各段在内存当中分配情况。

参考程序:

; exercize21

data  segment 

        org  0200h

   buffer  dw   0,  1,  -5,  10,  256,  -128,  -100,  45,  6,  3,

          dw  -15,-67,  39,  4,  20, -1668,  -32766,  32765, -525,

dw  300

   count   equ  ($-buffer)/2

   max    dw   ?

data  ends

stack  segment  stack  'stack'

    db 100 dup  ('s')

stack  ends

code  segment  para  'code'

     assume  cs:code, ds:data, ss:stack

sta  proc  far

         push ds

        xor  ax,  ax

         push  ax

         mov  ax,  data

         mov  ds,  ax

         lea   si,   buffer

         mov  cx,  count

         dec  cx

        mov  ax,  [si]

chkmax:  add  si,  2

        cmp  [si], ax

        jle  next

        mov  ax, [si]

next:    loop  chkmax

        mov  max, ax

        ret

sta      endp

code    ends

      end  sta

实验报告要求:

1.  小结汇编语言源程序的编译及连接过程;

2.  记录数据段在程序执行前后的内容

3.  写出程序调试中出现的问题及解决方法;

答:

1.  把待汇编的程序放在存放汇编、链接程序的文件夹里打开汇编程序输入待汇编的程序名字 ,以默认配置生成obj文件,再打开链接程序输入待链接的程序名字以默认配置生成exe文件

2.  执行前后buff数据数据块不变   max执行前数据为0000H执行后为7ffdH

3.  很顺利

作业:编程并且在计算机上调试。

①用汇编语言编写一个加法程序:

1234+5678

请用ASCII码的形式将加数与被加数存放在数据区DATA1和DATA2中,并将相加的结果显示输出。

②假设有一组数据:5,-4,0,3,100,-51,……,请编一程序,判断每个数是否大于0,等于0,还是小于0,并输出判断结果。即:

                     1            当x>0

       y =         0            当x=0

                     -1           当x<0

①sstack segment

   dw 32 dup(?)

sstack ends

data segment

   data1 db ‘1234'

   data2 db ‘5678’

   data3 db 4 dup(?)

data ends

code segment

   assume cs:code,ss:sstack,ds:data

sta: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+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,2h

a1:mov dl,[bx]

   int 21h

   inc bx

   loop a1

   ret

code ends

   end sta

②sstack segment stack 'stack'

      dw 32 dup(?)

sstack ends

data segment

      buff db 12,-23,5,-4,0,3,100,-51,3,-45,9,2    

data ends

count equ $-buff

code segment

      assume ss:sstack,ds:data,cs:code

start prog far

      push ds

      xor ax,ax

      push ax

      mov ax,data

      mov ds,ax

      lea bx,buff

      lea si,count

      mov cx,[si]

loop1: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:mov ah,2

      mov dl,30h

      int 21h

      jmp aa

  aa2:mov ah,2

      mov dl,31h

      int 21h

      jmp aa

   ov:ret

start endp

code ends

     end start

   实验三  8254定时/计数器应用实验

一、实验目的

1、掌握8254的工作方式及应用编程;

2、掌握8254典型应用电路的接法。

二、实验设备

    PC机一台,TD-PIE实验装置一套,示波器一台。

三、实验内容

    1、计数应用实验。编写程序,应用8254的计数功能,使用单次脉冲模拟计数,使每当按动‘KK1 +’5次后,产生一次计数中断,并在屏幕上显示一个字符‘M’。

    2、定时应用实验。编写程序,应用8254的定时功能,产生一个1 ms的方波。

1、计数应用实验

编写程序,将8254的计数器0设置为方式3,计数值为十进制数4,用单次脉冲KK 1+作为CLK0时钟,OUT0连接MIR7,每当KK1+按动5次后产生中断请求,在屏幕上显示字符‘M’。

实验步骤:

(1) 实验接线如图4-2所示;

(2) 编写实验程序,经编译、链接无误后装入系统;

(3) 运行程序,按动KK1+产生单次脉冲,观察实验现象;

(4) 改变计数值,验证8254的计数功能。


实验程序清单:

A8254   EQU  06C0H      ;8254计数器0的端口地址

B8254   EQU  06C2H       ;8254计数器1的端口地址

C8254   EQU  06C4H       ;8254计数器2的端口地址

CON8254 EQU  06C6H      ;8254控制字寄存器的端口地址

SSTACK  SEGMENT  STACK

DW 32 DUP(?)

SSTACK  ENDS

CODE  SEGMENT

ASSUME CS:CODE, SS:SSTACK

START :  PUSH DS

MOV  AX, 0000H

MOV  DS,AX

Lea ax,irq7

mov si,3ch

mov [si],ax

mov ax,seg irq7

mov [si+2],ax

CLI

POP DS

;初始化主片8259,其端口地址为20H和21H

MOV  AL,11H

OUT  20H,AL                       ;ICW1

MOV  AL,08H

OUT  21H,AL                       ;ICW2

MOV  AL,04H

OUT  21H,AL                       ;ICW3

MOV  21H,01H

OUT   21H,AL                     ;ICW4

MOV  AL,6FH                     ;OCW1

OUT  21H,AL

;初始化8254

MOV  DX,CON8254

MOV  AL,____11h_____                     ;计数器0,方式0

OUT  DX,AL

MOV  DX,A8254

MOV  AL,_____04h____                     ;给计数器0送初值

OUT  DX,AL

STI

AA1:       JMP  AA1

;中断服务程序

IRQ7:       MOV  AX,014DH

INT  10H                                             ;显示字符M

MOV  AX,0120H

INT  10H

MOV  AL,__20h_____

OUT  ___20h____,AL                               ;中断结束命令

IRET

CODE        ENDS

              END   SEGMENT

2、定时应用实验

    编写程序,将8254的计数器0设置为方式3,用信号源1MHz作为CLK0时钟,OUT0输出波形为1 ms方波。

实验步骤:

(1)接线图如图4-3所示;

(2)根据实验内容,编写实验程序,经编译、链接无误后装入系统;

(3)运行实验程序,用示波器测试OUT0输出,验证程序功能。


实验程序清单

A8254   EQU  06C0H

B8254   EQU  06C2H

C8254   EQU  06C4H

CON8254 EQU  06C6H

SSTACK  SEGMENT  STACK

DW 32 DUP(?)

SSTACK  ENDS

CODE  SEGMENT

ASSUME CS:CODE

START:MOV  DX,CON8254                     

        MOV  AL,____37h____                 ;8254控制字,计数器0,方式3

        OUT   DX,AL

        MOV  DX,A8254

MOV  AL,___63h_____                 ;给计数器0送初值

OUT   DX,AL

MOV  AL,____09h____

OUT   DX,AL

AA1: JMP  AA1

CODE   ENDS

         END  START

六、思考题

1、在将计数初值赋给8254后,马上就可以启动并进行定时或计数吗?

答:不是,计数的开始还得看门控信号,在写入初值后若门控信号有效(软件触发为高电平有效,硬件触发为上升沿有效)则开始计数,否则等待有效门控信号的到来才开始计数

2、若CLK0输入1.925MHz的时钟,能否在OUT0实现输出30ms的定时脉冲?

答:30*1925=57750<65535 所以用二进制写初值方式可以实现,若用十进制方式写初值则不能实现(十进制最大计数初值为0,即10000)

实验四  8255并行接口实验

一、实验目的

    1、学习并掌握8255的工作方式及其应用;

    2、掌握8255典型应用电路的接法。

二、实验设备

    PC机一台,TD-PITE实验装置一套。

三、实验内容

1、基本输入输出实验。

本实验系统中,8255的端口地址分别为0640H,0642H,0644H以及0646H。编写程序,使8255的A口为输入,接拨动开关,B口为输出,接发光二极管;要求只要开关拨动,发光二极管的显示就发生相应改变。

2、流水灯显示实验。

编写程序,使8255的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。

四、实验原理

文本框:  
图5.1  8255内部结构及外部引脚图
    并行接口是以数据的字节为单位与I/O设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8位、16位或32位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O接口芯片,它具有A, B, C三个并行接口,用+5 V单电源供电,能在以下三种方式下工作:方式0——基本输入/输出方式、方式1——选通输入/输出方式、方式2——双向选通工作方式。8255的内部结构及引脚如图5-1所示,8255工作方式控制字和C口按位置位/复位控制字格式如图5-2所示。

五、实验步骤

1、基本输入输出实验

    本实验使8255端口A工作在方式0并作为输入口,端口B工作在方式0并作为输出口。用一组开关信号接入端口A,端口B输出线接至一组发光二极管上,然后通过对8255芯片编程来实现输入输出功能。具体实验步骤如下述:


      (1) 实验接线图如图5-3所示,按图连接实验线路图;

      (2) 编写实验程序,经编译、连接无误后装入系统;


      (3) 运行程序,改变拨动开关,同时观察LED显示,验证程序功能。

实验程序清单

SSTACK  SEGMENT  STACK

          DW  32  DUP (?)

SSTACK  ENDS

CODE    SEGMENT

                ASSUME  CS:CODE

START:  MOV  DX,0646H

MOV  AL,_____90h_____                 ;8255的工作方式控制字

OUT  DX,AL

AA1:    MOV  DX,0640H

IN  AL,DX

CALL  DELAY

MOV  DX,0642H

OUT  DX,AL

JMP  AA1

;延时子程序

DELAY:  PUSH  CX

MOV  CX,0F00H

AA2:     PUSH  AX

POP  AX

LOOP  AA2

POP  CX

RET

CODE     ENDS

           END  START

2、流水灯显示实验

    使8255的A口和B口均为输出,数据灯D7àDO由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0正相反,由右向左,每次仅点亮一个灯,循环显示。实验接线图如图5-5所示。实验步骤如下所述:

      (1) 按图5-5连接实验线路图;

      (2) 编写实验程序,经编译、链接无误后装入系统;

      (3) 运行程序,观察LED灯的显示,验证程序功能;


      (4) 自己改变流水灯的方式,编写程序。

实验程序清单

SSTACK  SEGMENT  STACK

          DW  32  DUP (?)

SSTACK  ENDS

CODE    SEGMENT

                ASSUME  CS:CODE

Start:mov dx.0646h

Mov al,80h

Out dx,al

Mov bx,0180h

Aa1:mov dx,0640h

Mov al,bl

Out dx,al

Call delay

Mov dx,0642h

Mov al,bh

Out dx,al

Call delay

Ror bl,1

Rol,bh,1

Jmp aa1

DELAY:  PUSH  CX

MOV  CX,0F00H

AA2:     PUSH  AX

POP  AX

LOOP  AA2

POP  CX

RET

CODE     ENDS

           END  START

更多相关推荐:
微机原理及应用实验报告

微机原理及应用实验报告班级姓名学号中南大学机电工程学院精密测控实验室实验二软件程序设计1实验目的1掌握MCS51单片机指令系统及用汇编语言编程技巧2了解和熟悉用MCS51单片机仿真开发机调试程序的方法2实验内容...

微机原理及应用实验报告

实验报告课程名称实验日期学生专业学生学号学生姓名教师姓名成绩南京理工大学机械工程学院实验一DEBUG命令及其操作一实验目的1熟练掌握debug的常用命令学会用debug来调试程序2深入了解数据在存储器中的存取方...

微机原理及应用实验报告

实验报告课程名称实验名称实验日期学生专业学生学号学生姓名教师姓名成绩微机原理及应用实验1DEBUG操作实验实验2汇编程序设计实验实验38253定时计数器实验实验48255并行接口实验年月日至年月日机械工程及其自...

微机原理及应用实验报告(中南大学20xx年)

微机原理及应用实验报告班级姓名学号中南大学机电工程学院精密测控实验室实验二软件程序设计1实验目的1掌握MCS51单片机指令系统及用汇编语言编程技巧2了解和熟悉用MCS51单片机仿真开发机调试程序的方法2实验内容...

微机原理及应用实验报告

微机原理及应用实验报告班级姓名学号座位号中南大学机电工程学院实验一单片机仿真开发机操作和MCS51指令系统应用一实验目的1熟悉MCS51单片机仿真开发机和开发调试软件的操作使用和调整2学会编写和输入汇编语言源程...

微机原理及应用实验报告

微机原理及应用微型计算机技术实验报告预习报告实验一两个多位十进制数相加的实验实验目的1学习数据传送和算术运算指令的用法2熟悉在PC机上建立汇编链接调试和运行8088汇编语言程序的过程实验仪器工业控制计算机一台原...

微机原理及应用实验报告(中南大学20xx年)

微机原理及应用实验报告班级姓名学号中南大学机电工程学院精密测控实验室实验一单片机仿真开发机操作和MCS51指令系统应用一实验目的1熟悉MCS51单片机仿真开发机和开发调试软件的操作使用和调整2学会编写和输入汇编...

微机原理及应用-汇编语言上机实验报告

西南石油大学实验报告实验一一实验目的熟悉汇编语言的上机过程掌握各项工具软件的使用方法二实验内容1硬件PC微机2软件DOS系统EDITEXEMASMEXELINKEXEDEBUGEXE三实验过程1前期准备在开始进...

32位微机原理上机实验报告:数据传送实验

西北工业大学明德学院实验报告实验项目微机原理及应用班级121204姓名田家豪王辰硕学号121566121567指导老师伍明高时间20xx47实验题目数据传送实验实验目的1熟悉Tdpit集成环境和调试器的使用2掌...

32位微机原理上机实验报告:各种逻辑指令的编程

西北工业大学明德学院实验报告实验项目微机原理及应用班级121204姓名田家豪王辰硕学号121566121567指导老师伍明高时间20xx331实验题目各种逻辑指令的编程实验目的1掌握在PC机上各种逻辑指令的用法...

32位微机原理上机实验报告:基本IO接口电路设计实验

西北工业大学明德学院实验报告实验项目微机原理及应用班级121204姓名田家豪王辰硕学号121566121567指导老师伍明高时间20xx414实验题目基本IO接口电路设计实验实验目的1掌握基本IO接口电路的设计...

MCS51单片机原理及应用 实验报告

单片机原理与应用实验报告学校合肥工业大学姓名吕增威学号20xx2606班级计算机科学与技术0803班1目录前言3第一章MC51单片机原理及应用软件实验实验1系统认识实验6实验6数据排序实验验证性11第二章MC5...

微机原理及应用实验报告(19篇)