微机原理实验2015
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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 所有寄存器的内容,并给出程序执行后各标志位的当前状态。在此,不再列出执行情况。