微机原理实验2015

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机原理实验内容2015

实验一上机方法及寻址方式练习

一.实验目的

1.学习汇编语言上机方法。

2.深入了解DEBUG动态调试软件的应用,掌握下列命令的使用方法:

U 反汇编G 运行程序

D 显示内存内容R 显示╱修改寄存器内容

E 修改内存内容 T 单步执行命令

Q 返回DOS

3.实际感受段地址,偏移地址,存储器组织及CPU寄存器等概念。

4.掌握8086/8088的主要寻址方式。

二.实验任务一双字相加

把内存字单元DATA1和DATA2中的两个数相加(例如123456H+456789H),结果存入SUM单元。

此程序的功能很简单,目的是为了通过该例掌握上机过程和实验方法。首先,对书写好的源程序进行编辑,汇编及连接,生成可执行的EXE文件。然后对EXE文件进行动态调试,排除错误,最终形成一个完全正确的程序。

1.建立源程序 .ASM

为了使大家对标准汇编语言程序结构有一个了解,并牢固掌握DEBUG调试程序的应用。在这里给出上面实验任务的程序清单。程序1是一个标准的汇编语言程序,共有三个段:数据段、堆栈段及代码段,在以后的编程中可以仿照这一结构。

程序1:双字相加

DATA SEGMENT ;define data segment

DATA1 DW 1234H

DATA2 DW 5678H

SUM DW ?

DATA ENDS

STACK SEGMENT PARA STACK ‘STACK’;define stack segment

DW 100 DUP (?)

TOP LABEL WORD

STACK ENDS

CODE SEGMENT ;define code segment

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

START:MOV AX, DATA ;set DS register to current data segment

MOV DS, AX

MOV AX, STACK ;set up stack SS and SP regist

MOV SS, AX

MOV SP, OFFSET TOP

MOV AX, DATA1

ADD AX, DATA2

MOV SUM, AX

MOV AH,4CH ;return to DOS

INT 21H

CODE ENDS ;end of code segment

END START ;end assembly

2.汇编生成 .OBJ 文件

对.ASM文件进行汇编,生成目标文件 .OBJ。

汇编结束时会显示警告错误的个数(Warning Errors)和严重错误的个数(Severe Errors),这两种错误属于.ASM文件中的语法性错误。若出现错误应对源文件(.ASM文件)进行修改,修改之后再进行汇编直至错误数为零时方可进行下一步操作。

3.连接生成 .EXE文件

连接后生成 .EXE可执行文件。

4. 利用DEBUG命令对 .EXE文件进行调试

DEBUG是DOS提供的一种调试软件。它可用于检查修改存储单元的内容,装载及运行用户程序。

进入DEBUG后其状态提示符为一短横线“―”,在此状态下可用各种命令对 .EXE进行操作。

下面是DEBUG的主要命令。

(1)对 .EXE文件进行反汇编—U命令

U命令格式一:

―U CS:0000↙

1501: 0000 B8F314 MOV AX, 14F3

.....

上述命令从CS段,偏移地址为0000的单元开始反汇编32个字节。在以上的反汇编清单中,最左一列是代码段的段地址值,第二列是各指令的偏移地址值(指令的起始地址),然后依次是指令的机器码与助记符。

U命令格式二:

―U↙

在32个字节的指令代码反汇编完之后,可再次使用U命令对后续代码进行反汇编,在此,U命令之后省略了地址,则从上一个U命令的最后一条指令的下一个字节开始反汇编32个字节。

可反复使用上述两种U命令格式,将原程序清单与反汇编清单进行对比分析,然后回答下列问题:问题1: .EXE装入内存后,其数据段的段地址是。在未运行 .EXE程序前,数据段的段地址是否已装入到DS寄存器中?(请选择回答:是/否)。

问题2:反汇编清单中倒数第一行(按实际显示行计算)

是不是.EXE程序中的有效指令?(请选择:是/不是)。

(2) 检查RAM区中的数据—D命令

D命令格式:

―D 数据段段地址:偏移地址(0000)

D命令从给定地址开始连续显示内存单元中的数据,每行显示16个字节,每行的显示格式为

段地址:偏移地址 16个字节数据及各字节数据所对应的ASCII码字符。

若D命令中没有给出地址,则从上一个D命令所显示的最后一个字节的下一个字节开始显示。合理使用U命令和D命令,分析所显示的信息并填写表1-1。

(3)运行程序—G命令

G命令格式:

―G = CS:0000 断点地址↙

CPU从CS段,0000单元开始连续执行指令,当遇到断点时便会停止执行。用G 命令执行完程序后再使用D 命令显示内存单元的内容,填写表1-2中各项数据和运行结果,并分析结果是否正确。

(4)检查寄存器内容—R命令

―R

R命令会显示/修改CPU 所有寄存器的内容,并给出程序执行后各标志位的当前状态。在此,不再列出执行情况。

相关文档
最新文档