• 领导讲话
  • 自我介绍
  • 党会党课
  • 文秘知识
  • 转正申请
  • 问题清单
  • 动员大会
  • 年终总结
  • 工作总结
  • 思想汇报
  • 实践报告
  • 工作汇报
  • 心得体会
  • 研讨交流
  • 述职报告
  • 工作方案
  • 政府报告
  • 调研报告
  • 自查报告
  • 实验报告
  • 计划规划
  • 申报材料
  • 当前位置: 勤学考试网 > 公文文档 > 思想汇报 > 正文

    大全程序调试实验报告x

    时间:2020-11-02 12:42:51 来源:勤学考试网 本文已影响 勤学考试网手机站

    目录

    微机原理与接口技术

    课 程 作 业

    班级:

    、实验目的:

    汇编语言是一种用助记符表示的程序设计语言。用汇编语言编写的源程序生成的目标代码短, 占内存少,执行速度快,适合于系统软件、实时控制软件、 I/O 接口驱动等程序设计。通过本次实 验,熟练掌握汇编程序的调试,深入了解 MAS汇编语言及其程序设计方法。

    二、 实验环境

    EDIT编辑器、MAS汇编程序、LINK连接程序、TD调试程序

    三、 实验过程

    一)基础知识储备

    了解微处理器 80486的内部结构、寄存器组、工作模式等基本知识。

    熟练掌握微处理器指令系统的相关知识,重点掌握 80486的寻址方式和常用的指令格式及功能。

    了解MAS汇编语言及其程序设计方法。掌握MAS汇编语言的语句格式、语法规则、常用伪指令 及DOS功能的调用等。了解顺序结构、分支结构、循环结构和子程序的设计方法。

    二)汇编语言程序设计

    分析问题,明确要解决的问题和要求

    确定解决问题的思路和方法。

    将解决问题的方案编制成程序流程图

    根据流程图,逐条编写程序。

    上机调试,验证程序是否正确。

    三)汇编程序调试

    MASM匚编程序的主要功能是:把源文件转换成用二进制代码表示的目标文件,并生成列表文 件; 在转换过程中汇编程序将对源程序进行扫描,检查源程序是否有语法错误并指出源程序的语法 错误。

    汇编语言源程序的调试过程需要经过编辑、汇编、连接、运行、调试等几个步骤 :

    编辑:使用编辑程序,将编写好的程序输入计算机,建立一个扩展名为 ASM的汇编语言源文件

    *.ASM。

    汇编:使用汇编程序,将*.ASM文件经汇编后生成扩展名为*.OBJ。

    连接:使用连接程序,把一个或多个目标程序连接成可执行文件 *.EXE。

    运行:运行可执行文件,验证程序是否正确。

    调试:如果运行中有问题, 可使用编辑或调试程序进行修改和调试, 重复上述步骤,直到运行正 确为止。

    四、调试实例

    (一)实例一

    要求:编写程序,将MBU为起始单元的5个数按相反次序传送到NBUF开始的存储单元中。

     实验思路:本例采用顺序结构和循环结构,合理利用堆栈,通过堆栈实现数据按照相反次序传送。

     源程序:

    DATA SEGMENT ; 数据段开始

    MBUF DB 0,1,2,3,4 ; 每个数据分配一个存储单元

    NBUF DB 5 DUP(0) ; 空 5个存储单元备用

    DATA ENDS ; 数据段结束

    STACK SEGMENT PARA STACK ; 堆栈段开始,定位类型是 PARA

    DB 100 DUP(0)

    STACK ENDS

    CODE SEGMENT ; 代码段开始

    ASSUME CS:CODE, DS:DATA,SS:STACK ;段分配伪指令

    START:

    MOV AX,DATA ; 数据传送

    MOV DS,AX ; 存储器数据传送到段寄存器中

    MOV SI,OFFSET MBUF ; 取第一组操作数的偏移地址

    MOV DI,OFFSET NBUF ; 取第二组操作数的偏移地址

    MOV CX,5 ; 数据个数5传送到CX中

    数据传送 数据入栈指针加 1循环数据出栈

    数据传送 数据入栈

    指针加 1

    循环

    数据出栈

    数据传送

    终止进程

    MOV AX,[SI]

    PUSH AX

    INC SI

    LOOP LOP1

    LOP2:

    POP AX

    MOV [DI],AX

    INC DI

    LOOP LOP2

    MOV AH,4CH

    INT 21H CODE ENDS

    END START

    二)实例二

    要求:编写程序, 将内存中某数据块中的正数和负数分开, 并分别将这些正数和负数送同一数据段 的两个缓冲区中,并在屏幕上显示正数和负数的个数。

    实验思路: 本例中要求将正数和负数分开, 因此应先判断数据块中数据的正负, 然后将不同符号的 数分别传送到两个缓冲区中,同时分别计数。利用分支结构和循环结构解决问题。

    源程序:

    DATA SEGMENT ; 数据段

    BUF DB 5,2,7,-4,-2,-3,4,9,-6

    COUNT EQU $-BUF ; 等值语句,COUN等于BUF数据长度

    ZS DB

    FS DB

    STR1 EQU BUF+20 ; 正数首地址

    STR2 EQU BUF+30 ; 负数首地址

    DATA ENDS

    STACK SEGMENT STACK ; 堆栈段

    DB 100 DUP(0)

    STACK ENDS

    CODE SEGMENT ; 代码段

    ASSUME CS:CODE,DS:DATA,SS:STACK

    START:

    MOV AX,DATA

    MOV DS,AX ; 初始化

    MOV BX,OFFSET BUF ; 取BUF中操作数的偏移地址

    MOV CX,COUNT

    MOV ZS,0

    MOV FS,0

    MOV SI,OFFSET STR1

    MOV DI,OFFSET STR2

    LOP:MOV AL,[BX]

    CMP AL,0 ; 带符号数比较

    JG LOP1 ; 数据大于 0 时跳转至 LOP1

    JL LOP2 ; 数据小于 0 时跳转至 LOP2

    LOP1:INC ZS ; 正数计数加 1

    MOV [SI],AL ; 正数数据存入 SI 寄存器中

    INC BX

    INC SI

    LOOP LOP

    JMP LAST

    LOP2:INC FS

    MOV [DI],AL ; 负数数据存入DI中

    INC BX

    INC DI

    LOOP LOP

    LAST:MOV DL,ZS

    MOV AH,06H ; 显示字符

    INT 21H

    MOV DL,FS

    MOV AH,06H

    INT 21H

    MOV AH,4CH

    INT 21H

    CODE ENDS

    END START

    (三)实例三

    要求:编写程序,从内存 BLOC!开始,存放着10个字节的有符号数,从这些数中找出绝对值最大 的那个最大的数,将其存入 MA中。

    源程序:

    DATA SEGMENT

    BLOCK DB 1,-1,2,-3,4,5,3,-1,2 ; 设置数据

    COUNT EQU $-BLOCK ; 置计数值

    MAX DB ; 存最大值

    DATA ENDS

    STACK SEGMENT STACK

    DB 100 DUP(0)

    STACK ENDS

    CODE SEGMENT

    ASSUME CS:CODE,DS:DATA,SS:STACK

    START:

    MOV AX,DATA

    MOV DS,AX

    MOV SI,OFFSET BLOCK ; 数据首地址

    MOV MAX,0MOV CX,COUNT;CX为计数器AGAIN:MOV AL,[SI]CMP AL,0JS JDZ将第一个数据存在AL中判断正负小于 0 转到 JDZ

    MOV MAX,0

    MOV CX,COUNT

    ;CX

    为计数器

    AGAIN:

    MOV AL,[SI]

    CMP AL,0

    JS JDZ

    将第一个数据存在AL中

    判断正负

    小于 0 转到 JDZ

    LOP:

    CMP AL,MAX

    JG BIG

    JMP LOP1

    ;AL

    比较数据与最大值

    大转到 BIG

    JDZ:

    NEG AL

    JMP LOP1

    求补,即绝对值

    跳转至 LOP1

    BIG:

    MOV MAX,AL

    JMP LOP1

    LOP1:

    INC SI

    DEC CX

    MOV AH,MAX

    指针加 1 ,指向下一个数

    计数值减 1

    最大值存入 AH

    跳转至 AGAIN

    跳转至 AGAIN

    MOV AH,4CH

    INT 21H CODE ENDS

    END START

    (四)实例四

    要求:编写程序,将内存中N个无符号数从大到小排序后输出显示。

     源程序:

    DATA SEGMENT

    BUF DB 1H,9H,6H,15H,10H

    COUNT EQU $-BUF

    DATA ENDS

    STACK SEGMENT STACK

    DB 100H DUP()

    STACK ENDS

    CODE SEGMENT

    ASSUME CS:CODE,DS:DATA,SS:STACK

    START:

    MOV AX,DATA

    MOV DS,AX ; 初始化

    MOV CX,COUNT ; 置计数器

    DEC CX ; 外层循环减 1

    LOP1:MOV SI,CX

    LOP1:

    MOV SI,CX

    MOV DI,1

    MOV BX,OFFSET BUF

    交换标志 DI=1 取数组中第一个偏移地址

    LOP2:MOV AL,[BX]CMP AL,[BX+1]JAE LOP3XCHG AL,[BX+1] MOV [BX],ALMOV DI,0第一个数据送到 AL 中 两数进行比较 大于等于转到 LOP3 小于交换两数位置, AL 存大数交换标志 DI=0

    LOP2:

    MOV AL,[BX]

    CMP AL,[BX+1]

    JAE LOP3

    XCHG AL,[BX+1] MOV [BX],AL

    MOV DI,0

    第一个数据送到 AL 中 两数进行比较 大于等于转到 LOP3 小于交换两数位置, AL 存大数

    交换标志 DI=0

    LOP3:

    INC BX

    LOOP LOP2

    CMP DI,0 JNZ OK

    MOV CX,SI

    LOOP LOP1

    数据指针指向下一位

    循环 LOP2

    交换标志为 0 继续,交换标志为 1 结束

    不等于0转到0K结束

    等于 0 循环 LOP1

    0K:

    M0V CX,C0UNT

    M0V BX,0FFSET BUF

    ;BX

    为BUF首地址的偏移地址

    L0P4:

    M0V DL,[BX]

    ;BX

    中的数放在 DL 中

    MOV AH,06HINT 21H输出显示INC BX

    MOV AH,06H

    INT 21H

    输出显示

    INC BX

    指针指向下一字符

    循环 LOP4

    循环 LOP4 结束进程 返回 DOS

    MOV AH,4CH

    INT 21H

    CODE ENDS

    END START

    五、实验总结

    本次实验,虽然花费时间较长,但通过实验的完成,我的收获也很多。

    (一)实验收获

    无论是知识方面还是能力方面,本次实验都让我得到了很大提升。

     知识方面,本次实验需要编写符合要求的程序。

     首先要进行程序的设计, 明确实验目的和设计思路, 画出程序框图,然后进行程序的编写。通过程序的设计与编写,使我能够更加深入的了解和掌握 80486了指令系统。程序编写完成后,便需要进行调试,最初编写的程序中出现了很多错误,在编 译过程中发现错误后,不断进行修正,直到程序正确,可以实现所需功能。在这一过程中,我逐渐 熟悉了汇编程序编辑、编译、 连接、调试的过程, 并能通过这些软件的功能找到自己的错误加以改 正,最终实现实验目的。

    能力方面,由于系统原因,不能直接在电脑当前系统中进行汇编程序的调试, 因此我安装了虚拟机, 在虚拟机安装过程中遇到很多问题, 通过对搜索引擎的有效利用, 我解决了安装过程中的问题并成 功安装了 XP系统,建立了实验所需环境,为实验的完成打下基础。本次实验,提高了我分析问题 和解决问题的能力,能够通过查阅资料获得所需信息,解决实验过程中所遇到的各种问题。

    (二)实验感悟

    本次实验对知识和能力的要求都比较高, 开始完成实验室, 遇到了很多阻碍, 但通过资料的查找和 优秀视频的参考,我逐渐找到问题的解决办法,最终实现了实现所需的功能,完成了这项任务。

     在 这一过程中, 我更深刻地体会到, 任何知识的学习和掌握都是时间和汗水的积累。

     只有真正认真思 考,坚定完成任务的信念,找到解决问题的办法,才能学会知识和技能。

    • 考试时间
    • 范文大全
    • 作文大全
    • 课程
    • 试题
    • 招聘
    • 文档大全

    推荐访问