试验一  熟悉汇编环境以及初级程序的编写与调试
  实验目的
1.熟悉掌握DEBUG的常用命令,学会用DEBUG调试程序。
2.了解数据在存储器中的存取方法以及堆栈中数据的压入与弹出。
3.掌握各种寻址方法及简单指令的执行过程。
  试验要求
1.实验前要做好充分准备,包括汇编程序清单、调试步骤、调试方法,以及对程序结果的分析。
2.本实验要求在PC机上进行。
3.本实验只要求在DEBUG调试程序状态下进行,包括汇编程序、调试程序、执行程序。
  实验内容
1.熟悉DEBUG的常用命令
1)汇编命令A
格式: A 【段寄存器名】:【偏移地址】
      A 【段地址】:【偏移地址】
      A 【偏移地址】
      A
功能:用该命令可以将汇编语言程序直接汇编进入内存。
当键入A命令后,显示段地址和偏移地址等待用户键入汇编指令,每键入一条汇编指令回车后,自动显示下一条指令的段地址和偏移地址,再键入下一条汇编指令,直到汇编语言程序全部键入,又显示下一条地址时可直接键入回车回到提示符“”为止。
其中的段地址在段地址寄存器中,因此在使用该命令时必须将段地址寄存器送入段地址,的段地址在CS中,的段地址在CS中,偏移地址为100H
2)执行程序命令G和单步执行程序T
功能:用该G命令可直接执行汇编语言程序;用T命令可单步执行汇编语言程序并显示当前寄存器内容
3)显示内存命令D
格式: D  [地址]
      D  [地址范围]
      D
功能:显示指定内存范围的内容。
4)修改存储单元内容命令E
格式: E [地址][内容表]
      E[地址]
功能:用命令所给定的内容表去代替指定地址范围的内存单元内容。
      一个单元一个单元的连续修改单元内容。
其中:内容表为一个十六进制数或一串十六进制数,也可以是用单引号括起的一串字符。
5)检查和修改寄存器内容命令R
格式: R
      R [寄存器名]
功能:显示CPU内部所有寄存器的内容和全部标志位的状态。
      显示和修改一个指定寄存器的内容和标志位的状态。
2. 设堆栈指针SP=2000HAX=3000HBX=5000H;请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。
编程提示:将两个寄存器的内容进行交换时,必须有一个中间寄存器才能进行内容的交换。如果用堆栈作为中间存储单元,必须遵循“先进后出”的原则。
3. DS=当前段地址,BX=0300HSI=0002H;请用DEBUG的命令将存储器偏移地址0300H~0304H连续单元顺序装入0AH0H0CH0DH0EH。在DEBUG状态下送入下面程序,并用单步执行的方法,分析每条指令源地址的形成过程,当数据传送完毕时,AX中的内容是什么。
程序清单如下:
MOV  AXBX
MOV  AX0304H
MOV  AX[0304H]
MOV  AX[BX]
MOV  AX0001[BX]
MOV  AX[BX][SI]
MOV  AX0001[BX][SI]
HLT
编程提示:
1)其中数据段寄存器中的段地址为进入DEBUG状态后系统自动分配的段地址。
2)寄存器初值可以在DEBUG状态下,用命令装入,也可以在程序中用指令来完成。
3)在执行程序前,可用E命令将偏移地址300H~304H送入0AH0BH0CH0DH0EH
4)用T命令执行程序,可进行单步跟踪执行,每执行一条指令就可以看到各寄存器的状态,也可以用R命令直接调出寄存器,来检验各寄存器内容是否正确。
  实验报告
1. 用实验数据记录表记录程序清单和单步执行结果
说明:程序清单需详细记录,单步执行结果只需记录有变化或有操作的寄存器值,实验内容3还需记录是何种寻址方式。
2. 实验报告需包括详细的实验目的、实验要求、实验内容和实验数据记录表
3. 记录上机调试的情况、上机调试步骤、调试过程中所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
试验二  加法及判断程序的编写与调试实验
  实验目的
1. 熟练掌握编写汇编语言源程序的基本方法和基本框架。
2. 学会编写顺序结构、分支结构和循环结构的方法。
3. 掌握程序中数据的产生与输入输出的方法。
  实验要求
1.实验前准备
1)分析题目,将程序中的原始数据、中间结果和最终结果的存取方式确定好。
2)写出算法或画出流程图。
3)写出源程序。
4)对程序中结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。
2. 本实验要求在PC机上进行。
3. 汇编过程中出现问题,可用DEBUG进行调试。
  实验内容
1. AX=0002H,编写一个程序段将AX的内容乘以10,要求用移位的方法完成。
编程提示:
1)用移位的方法完成某些乘法运算,是较为常见的方法,操作数左移一位为操作数乘2运算。
2)算式2×10的程序流程图如图2-1所示。
3)注意计数寄存器CX的使用
3)在DEBUG环境下完成该程序并用T命令单步跟踪执行程序。
2-1 流程图
2. 假设有一组数据:5-4,0,3,100-51,请编写一程序,判断:每个数大于0,等于0,还是小于0;并输出其判断结果。
即:    1  x>0
    y=    0  x=0
    x<0
编程提示:
1)首先将原始数据(5-4,0,3,100,-51)装入起始地址为xx的字节存储单元中。
2)将判断结果以字符串的形式存放在数据区中,以便在显示输出时调用。
3)其中判断部分可采用CMP指令,得到一个分支结构,分别输出“Y=0,Y=+1”,“Y=-1”。
4)注意对有符号数控制转移指令的使用(JGEJGJEJL等)
5)程序中存在一个循环结构,循环6次,调用6次分支结构后结束。
6)在masm for windows环境下完成该程序
7)参考程序流程图如图2-2所示。
Y
N
2-2 参考程序流程图
8)参考程序清单如下
DATAS SEGMENT
    ;此处输入数据段代码
    data1 db 05h,0fch,00h;补充数据3,100,-51
    Y1 db 'Y=1',0dh,0ah,'$'
    ;定义Y2存放Y=0
    ;定义Y3存放Y=-1
DATAS ENDS
STACKS SEGMENT
  ;此处输入堆栈段代码
STACKS ENDS
CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    ;data1偏移地址送SI
    mov ax,0000h
    ;将循环次数送计数寄存器
loop1:
    ;data1数据到AL以比较
    ;data1数据与0进行比较
    ;大于跳转到NEXT1
    ;等于跳转到NEXT2
    MOV DX,OFFSET Y3
    JMP OUTPUT
NEXT1:
    ;Y1输出部分
NEXT2:
    ;Y2输出部分
OUTPUT:
    MOV AH,09H
    INT 21H
    ;SI自加
    ;跳转到下一位数
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
  实验报告
1. 用实验数据记录表记录程序清单和程序执行结果。
说明:程序清单需详细记录,并尽可能地加上注释
2.  实验报告需包括详细的实验目的、实验要求、实验内容、流程图和实验数据记录表。
3.  记录上机调试的情况、上机调试步骤、调试过程中所遇到的问题是如何解决的,并对调试过程中的问题进行分析,对执行结果进行分析。
实验三 8253定时器 / 计数器
一、实验目的
⒈ 学会8253芯片和微机接口的原理和方法。
⒉. 掌握8253定时器/计数器的工作方式和编程原理。
二、实验内容
    用8253的0通道工作在方式3,产生方波。
图3-1  实验接线图
⒈ 8253芯片介绍
8253是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz, 用+5V单电源供电。
    8253的功能用途:
⑴ 延时中断                    ⑸ 实时时钟
⑵ 可编程频率发生器            ⑹ 数字单稳
⑶ 事件计数器                    ⑺ 复杂的电机控制器
⑷ 二进制倍频器       
  2.8253的六种工作方式:
 方式0:计数结束中断        ⑷ 方式3:方波频率发生器
⑵ 方式l:可编程频率发生        ⑸ 方式4:软件触发的选通信号
⑶ 方式2:频率发生器            ⑹ 方式5:硬件触发的选通信号
三、实验步骤
1  按图3-1连好实验线路 (使用计数器0)                                       
(1) 8253的GATE0接+5V。                                       
(2) 8253的CLK0插孔接分频器74LS393(左下方)的T6插孔,分频器的频率源为1.8432MHZ,T→1.8432MHZ。
(3)  8253的OUT0接L12
⒉    编写实验程序  (注:8253在实验箱中分配的地址为0040H~0043H,8253对应0043H,计数器0对应0040H)
编程提示如下:(注意将文件保存为.asm文件)
CODE        SEGMENT         
ASSUME    CS:    CODE
ORG 1290H
START:        JMP TCONT
TCONT:        ;写入控制字(计数器0,工作方式)
;写入初值低8位到计数器0,用于调整方波频率
;写入初值高8位到计数器0,用于调整方波频率
CODE ENDS
END START
.打开实验箱电源,在86PCI软件环境下调试程序,步骤为编译-加载-连续运行。(注:如程序有语法错误编译会比较慢,请耐心!)
  实验报告
汇编语言指导书
1. 用实验数据记录表记录程序清单和程序执行结果。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。