当前位置:文档之家› 微机原理实验指导书(2008-11-11)

微机原理实验指导书(2008-11-11)

微机原理实验指导书(2008-11-11)
微机原理实验指导书(2008-11-11)

《微机原理及应用》实验指导书

张群英编写

桂林工学院电子与计算机系

2008-11-11

目录

汇编语言程序设计的实验环境及上机步骤 (3)

实验一汇编语言程序上机过程与调试 (17)

实验二顺序程序设计 (21)

实验三分支程序设计 (22)

实验四循环程序设计 (24)

实验五子程序设计 (25)

实验六显示程序设计 (26)

实验七系统认识实验 (29)

实验九中断特性及8259应用编程实验 (33)

实验十8255并行接口应用实验 (45)

实验十一8253定时/计数器应用实验 (50)

第一部分:汇编语言程序设计的实验环境及上机步骤

1.1汇编语言程序设计的实验环境

汇编语言程序设计的实验环境为:80x86系列微型计算机一台机进行汇编语言程序设计所必需的编程工具一套。目前被广泛使用的编程工具分别来自Microsoft和Borland两家公司。

1.1.1 Microsoft公司的汇编语言程序设计工具

◆任意一种文本编辑器——用于编辑生成汇编语言源程序(*.ASM)

◆小汇编程序ASM.EXE或宏汇编程序MASM.ESE——用于将汇编语言源程序(*.ASM)翻译成机器语言文件,即目标文件(*.OBJ)

◆连接程序LINK.EXE——用于将目标文件连接生成可执行文件(*.EXE)

◆调试程序DEBUG.EXE——用于对生成的可执行文件(*.EXE)进行逻辑错误检查。

1.1.2 Borland公司的Turbo系列汇编语言程序设计工具

◆任意一种文本编辑器——用于编辑生成汇编语言源程序(*.ASM)

◆汇编程序TASM.EXE——用于将汇编语言源程序(*.ASM)翻译成机器语言文件(*.OBJ)

◆连接程序TLINK.EXE——用于将目标文件连接生成可执行文件(*.EXE)

◆调试程序TD.EXE (Turbo Debugger) ——用于对生成的可执行文件(*.EXE)进行逻辑错误检查。

可以看出,进行汇编语言程序设计时需要的编程工具有:文本编辑器、汇编程序、连接程序以及调试程序,下面分别对它们进行简要介绍。

1.文本编辑器(Text Editor)

在文本编辑器中,用户可以通过键盘输入汇编语言源程序,并可以对源程序进行编辑、修改以及存盘等操作。不论使用哪一种文本编辑器,都应该把汇编语言源程序保存为*.ASM文件,即源程序的扩展名必须为“ASM”,否则,汇编程序将无法对其进行汇编。

2.汇编程序(Assembler)

汇编程序用于将用户编写的汇编语言源程序(*.ASM)翻译成机器语言文件(*.OBJ),其主要功能可以概括为以下三点:

(1)检查源程序中的语法错误,并给出错误信息。

(2)产生目标文件(*.OBJ)

(3)展开宏指令(Microsoft公司的小汇编程序ASM.EXE无此功能)

Microsoft公司和Borland公司这两家公司研制的汇编程序MASM和TASM基本上是相同的,且都在IBM PC系列机中得到广泛使用。

3.连接程序(Linker)

经汇编后得到的二进制机器语言程序中的地址是“浮动”的,它只是一种逻辑地址,一次,汇编后得到的二进制目标文件(*.OBJ)是不能直接在计算机上运行的,必须对其进行连接装配后才能成为可执行文件(*。EXE)。

不同版本的汇编程序有着与其配套的连接程序,也就是说,如果所生成的*.OBJ文件是使用Microsoft公司的汇编程序得到的,那么,对该*.OBJ文件进行连接是就应使用Microsoft公司的LIINK.EXE;如果使用Borland公司的汇编程序TASM生成目标文件,那么,对目标文件进行连接是就必须使用Borland公司的TLINK.EXE。

4.调试程序(DEBUG)

调试程序用于在DOS环境下对已生成的可执行文件(.EXE或.COM)进行调试,一边法相程序中存在的逻辑或算法错误。

在对汇编语言源程序进行汇编是,汇编程序只对源程序语法错误进行检查,而对程序中存在的逻辑错误是无法进行检查的,如果汇编过程没有发现语法错误,即可生成OBJ文件,OBJ文件经过连接后生成可执行的EXE文件。因此,经常会出现运行所生成的EXE文件无法得到正确结果的情况。出现这种情况的原因通常是由源程序中存在的逻辑错误或算法错误引起的。遇到这种情况后最简单的解决办法就是使用文本编辑器打开源程序文件(*.ASM)对其进行逻辑或算法错误检查,显然使用这种办法查找逻辑错误是非常困难的,尤其对那些逻辑关系复杂。程序较长的源程序更是如此。

对逻辑错误或算法错误的检查最好的办法就是使用DEBUG程序对已生成的可执行文件进行调试。通过DEBUG可以使程序逐段甚至逐条指令地执行,一边观察是否达到预期的功能或得出预测的结果,从而发现源程序在设计上存在的而逻辑错误、算法错误或其他一些缺陷。

初学者往往意识不到DEBUG程序的重要性,在程序汇编、连接生成可执行文件后,总是寄希望于程序一次运行成功,这往往是不显示的。为了能很好地进行汇编语言程序实际,掌握DEBUG程序的使用是非常重要的,这已点务必请初学者注意。

本书专用以Microsoft公司研制的汇编语言程序设计工具(MASM.EXE,LINK.EXE和DEBUG.EXE)进行介绍。

1.2上机步骤

汇编语言程序设计过程分成两个阶段:编写程序阶段和上机调试阶段。编写程序阶段包括问题分析、确定算法以及手工编写程序等步骤。

如下图所示,汇编语言上机步骤包括编辑、汇编、连接和调试等过程。

(1)编辑源程序。利用文本编辑工具输入事先已手工编写好的汇编语言源程序,生成一个汇编语言源程序的纯文本文件,并将其存储为扩展名为.ASM的文件。

如利用EDIT程序编辑源程序。命令为:EDIT 源程序名.ASM

(2)汇编源程序。使用汇编程序(MASM)对.ASM文件进行汇编,生成目标代码文件,目标代码文件的扩展名是﹒OBJ,汇编器还可以生成列表文件和交叉参考文件,如果源程序有语法错误行,汇编器就不生成目标代码文件。这时,必须重新编辑源程序,修改语法错误的行。当发现源程序中的某些行含不确定因素时,汇编器会给出警告信息,但仍按缺省处理办法生成目标代码文件。此时,可以重新编辑源程序,消除不确定因素。

命令为:MASM 源程序名.ASM

(3)连接目标程序。通过连接程序(LINK)将.OBJ文件连接装配成可在计算机上直接运行的可执行文件.EXE,此时,就可以在DOS命令行键入文件名来运行程序。通常DOS平台上的可执行程序文件的扩展名是﹒EXE。一般单个或者与库函数连接时,如果在目标代码文件或者库中找不到所需的连接信息,连接器就会发生错误提示信息,而不生成可执行程序文件。这时,就要重新编辑源程序,并汇编源程序。

命令为:LINK 目标程序名.OBJ

(4)调试可执行程序。程序的动态调试是在形成可执行程序文件后,针对可执行程序进行的。DEBUG

是简单而有效的动态调试工具,利用调试工具动态地调试程序,找出程序中的问题。如果发现程序中有问题,那么必须重新编辑、汇编源程序。

命令为:DEBUG 可执行程序名.EXE

下面以两个简单的例子说明汇编源程序的上机过程。

例一:假定要在显示器显示如下一行信息:

I am a student!

根据要求编好的源程序如下:

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

DA TA SEGMENT

BUF DB 'I am a student!$'

DA TA ENDS

CODE SEBMENT

ASSUME CS:CODE,DS:DA TA,SS:STACK

START: MOV AX,DA TA

MOV DS,AX

LEA DX,BUF

MOV AH,9

INT 21H

MOV AH,4CH

INT 21H

CODE ENDS

END START

那么,其在DOS状态下编辑、汇编、连接、运行源程序的过程如下:

首先:假设已经在D盘上建立了名为masm的文件夹,其中拷贝了汇编程序MASM.EXE和连接程序LINK.EXE,我们以下的操作均在路径D:\masm> 下进行。

第一步:编辑源程序。假定源文件名为XS﹒ASM,键入编辑命令(edit)和文件名后回车,界面如下:

在编辑界面下输入源程序,指令用大写或小写字母均可,界面如下:

程序输入完成,点击下拉菜单选择Save项保存,再次点击下拉菜单选择Exit项即可退回到DOS 状态,源程序的编辑就完成了,界面如下:

第二步:汇编源程序xs.asm,键入汇编命令(masm)和文件名后回车,界面如下:

对于简单程序(比如本例),在系统出现的3个选项中选择回车即可,系统提示没有出错,即表明源程序汇编通过,已经生成了名为xs.obj的目标文件;若系统提示出错,则应该重新回到编辑状态

将出错的地方更正并保存后方可再次进入汇编过程。界面如下:

第三步:连接目标程序文件xs.obj, 键入连接命令(link)和文件名后回车,界面如下:

在系统出现的3个选项中选择回车即可,系统显示的警告“no stack segment”不会影响程序的执行,此时,可执行程序xs.exe已经生成了。界面如下:

在DOS状态下键入程序名xs.exe并回车,执行该程序,界面如下:

显示器上将显示出“I am a student!”,并重新回到DOS状态。由显示结果即可判断程序是否达到预定要求。若未得到预期的结果,可检查XS﹒ASM文件内容,修改错误,再次汇编、连接、运行,直到满意为止。

界面如下:

对于程序的执行结果没有在显示器上显示出来的,则必须要进入到调试状态才能探查程序的执行结果,并进行相应的完善,下面将以一个求数据累加所得的和作为例子。

例二:编制程序,求10个字节类型的数据的和,源程序如下:

data segment

a d

b 1,2,3,4,5,6,7,8,9,10

he db ?

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

lea bx,a

mov cx,10

mov al,0

next: add al,[bx]

inc bx

loop next

mov he,al

mov ah,4ch

int 21h

code ends

end start

其在DOS状态下编辑、汇编、连接、运行源程序的过程如下:

首先:假设已经在D盘上建立了名为masm的文件夹,其中拷贝了汇编程序MASM.EXE和连接程序LINK.EXE,我们以下的操作均在路径D:\masm> 下进行。

第一步:编辑源程序。假定源文件名为qiuhe.asm,键入编辑命令(edit)和文件名后回车,界面如下:

在编辑界面下输入源程序,指令用大写或小写字母均可,界面如下:

程序输入完成,点击下拉菜单选择Save项保存,再次点击下拉菜单选择Exit项即可退回到DOS 状态,源程序的编辑就完成了,界面如下:

第二步:汇编源程序qiuhe.asm,键入汇编命令(masm)和文件名(可在文件名后加分号)回车,界面如下:

键入汇编命令(masm)和文件名后加分号再回车,系统将不再给出选项,而是直接生成目标文件,若源程序中有错误,则给出相应的出错信息;若系统提示出错,则应该重新回到编辑状态将出错的地方更正并保存后方可再次进入汇编过程。界面如下:

第三步:连接目标程序文件qiuhe.obj, 键入连接命令(link)和文件名(可在文件名后加分号)后回车,界面如下:

键入连接命令(link)和文件名后加分号再回车,系统将不再给出选项,而是直接生成可执行程序,系统显示的警告“no stack segment”不会影响程序的执行,此时,可执行程序qiuhe.exe已经生成了。界面如下:

在DOS状态下键入程序名qiuhe.exe并回车,执行该程序,界面如下:

从上面的界面看到:程序运行后系统直接返回到DOS界面,程序求和的结果是多少?结果到底对不对呢?对于这类运行结果没有在显示器上显示的程序,必须进入第四个步骤:用Debug调试。

第四步:利用调试工具debug动态地调试程序,键入debug qiuhe.exe后回车,界面如下:

u命令:使用反汇编命令u对程序进行反汇编,系统将出现如下界面:从左到右,依次给出四列信息,即:各条指令代码所在的段地址、偏移地址、机器代码、源程序语句。从中可看出,系统将我们的源程序调入内存时为数据段安排的段地址为13E3H(在调试状态下所有数据项均为16进制)

t命令:键入单步执行指令t,系统将执行一条指令,然后停下来,给出当前各寄存器的取值、标志寄存器的取值、下一条要执行的指令所在的段地址、偏移地址、指令的汇编语言语句等信息,界面如下:

注意到此时“MOV AX,13E3”而DS=ES=13D3≠13E3,为什么?想想。

d命令:查看内存单元命令d,使用格式为:d段地址:偏移地址,因此,键入d 13e3:0则可查看当前数据段中数据的存放状况,界面如下:从中可看出数据段中依次存放了1~10十个字节数,但预备用来装累加和的单元中还是一个随机数,原因是程序还并未执行到将数据累加完毕并保存到该单元。

我们还可以试着查看13D3:0开始的单元的内容,即当前DS和ES所指向的段地址的存储单元的

内容,界面如下,看看里面的数据是不是我们预先放的那十个数,当然不是的啦!为什么?试想在代码段中如果没用起始的两条语句“MOV AX , DA TA 和MOV DS , AX”,在后面的指令中系统能找到我们的那十个数据进行累加吗?想想看。

g命令:连续执行命令。使用格式为:g段地址:偏移地址,系统将从下一条要执行的语句开始执行,直到指令中指定的地址前停下,给出当前各寄存器的取值、标志寄存器的取值、下一条要执行的指令所在的段地址、偏移地址、指令的汇编语言语句等信息,界面如下:实际上,此时我们已经可以看到累加的答案了,注意看,AL寄存器的值=?,是不是累加的和?

此时,我们还可以再次用d命令查看数据段的内容,键入d 13e3:0回车,将出现如下界面,看到累加和的结果了吗?

q命令:推出调试状态返回DOS状态。界面如下:

Debug 的其他命令请同学们参看其他的参考资料,这里不再赘叙。

实验一汇编语言程序上机过程与调试

一.实验目的

熟练掌握汇编语言程序的编辑、汇编、连接及调试运行的全过程,为后续实验的开展做好必要的准备。

二. 实验要求

1.熟悉DOS常用命令。

2.熟练掌握编辑程序EDIT.EXE的菜单操作命令及使用方法。

3.熟练掌握宏汇编程序MASM的使用方法。

4.熟练掌握连接程序LINK.EXE使用方法。

5.熟悉DEBUG有关命令的使用方法,利用DEBUG掌握有关指令的功能,利用DEBUG运行简单的程序。

三. 实验内容

1.基本题:把40个字母的字符串从源缓冲区传送到目的缓冲区。要求上机实验前编写好程序,上机调试通过。

2.选做题:从教材上选择任一程序,上机调试通过。

四. 实验准备

认真阅读本实验指导,知晓汇编语言源程序上机实验一般步骤:

(一)在PC机上运行汇编程序必须经过以下几个步骤:

(1)编辑源程序。

利用文本编辑工具编辑源程序,生成一个汇编语言源程序的纯文本文件。如利用EDIT.EXE程序编辑源程序。

命令为:EDIT 源程序名.ASM

(2) 汇编源程序。

可以生成列表文件和交叉参考文件,如果源程序有语法错误行,汇编器就不生成目标代码文件。这时,必须重新编辑源程序,修改语法错误的行。当发现源程序中的某些行含不确定因素时,汇编器会给出警告信息,但仍按缺省处理办法生成目标代码文件。此时,可以重新编辑源程序,消除不确定因

素。

命令为:MASM 源程序名

(3) 连接目标程序。

利用连接器连接目标代码程序和库函数代码生成可执行程序文件。通常DOS平台上的可执行程序文件的扩展名是﹒EXE。一般单个或者与库函数连接时,如果在目标代码文件或者库中找不到所需的连接信息,连接器就会发生错误提示信息,而不生成可执行程序文件。这时,就要重新编辑源程序,并汇编源程序。

命令为LINK 源程序名

(4)调试可执行程序。

程序的动态调试是在形成可执行程序文件后,针对可执行程序进行的。DEBUG是简单而有效的动态调试工具,利用调试工具动态地调试程序,找出程序中的问题。如果发现程序中有问题,那么必须重新编辑、汇编源程序。

(二)下面以一个简单的例子说明汇编源程序的上机过程。

假定要在显示器显示如下一行信息:

I am a student!

那么,其汇编源程序的过程如下:

STACK SEGMENT STACK

DB 200 DUP(0)

STACK ENDS

DA TA SEGMENT

BUF DB 'I am a student!$'

DA TA ENDS

CODE SEBMENT

ASSUME CS:CODE,DS:DA TA,SS:STACK

START:MOV AX, DATA

MOV DS, AX

LEA DX, BUF

MOV AH, 9

INT 21H

MOV AH, 4CH

INT 21H

CODE ENDS

END START

第一步:编辑源程序。假定源文件名为EXAM﹒ASM。

C:>EDIT EXAM﹒ASM

此命令是调用编辑程序EDIT进入编辑状态,用户可以在此界面下输入汇编语言源程序,生成源程序EXAM﹒ASM。

第二步:汇编源程序EXAM﹒ASM。

C:>MASM EXAM ;

此命令是调用宏汇编程序MASM对源文件EXAM﹒ASM进行汇编,生成目标文件EXAM﹒OBJ。若汇编无错误,则进入第三步。

第三步:连接目标程序文件EXAM﹒OBJ。

C:>LINK EXAM ;

若连接成功,则进入下一步。

第四步:运行可执行文件EXAM﹒EXE

C:>EXAM

运行结果如下:

I am a student!

若未得到预期的结果,可再回到编辑状态检查EXAM﹒ASM文件内容,修改错误,再次汇编、连接、运行,直到满意为止。

五. 实验步骤

1.首先进入EDIT.EXE编辑器,输入源程序,检查正确后,用MASM汇编成目标文件,用LINK.EXE连接成可运行文件,若正确无误,则用DEBUG调入内存,进行调试。

2.调试与运行程序:用单步,断点,连续等方法调试与运行程,根据存储器,寄存器与标志位的内容与变化。

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日

实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL

ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理实验指导书

微型计算机原理与应用实验指导书 上海大学通信学院

2010 年4 月 PC微机原理实验一 一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的 功能。 要求:在PC机上完成下列程序的调试运行,并写出运行结果。二、1.DEBUG的基本操作:(详细内容请参阅教材“程序的调试,P173”和“附录F 调试程序DEUBG的使用,P499”) (1)从WINDOWS进入DOS之后,输入命令启动DEBUG: C:>DEBUG 回车 (2)输入R命令,查看和记录CPU各个寄存器的内容: -R回车 看到什么 (3)输入A命令,汇编下面的字符“WINDOWS”显示程序: -A100 ;从偏移地址是0100H处开始写指令 MOV AH,2 MOV DL, 57 ;57H 是“W ”的ASCII码 INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能 ;这3句合起来的功能是:显示DL中的字符 MOV DL, 49 INT 2 1 MOV DL, 4E INT 21 MOV DL, 44 INT 2 1 MOV DL, 4F INT 2 1 MOV DL, 57 INT 2 1 MOV DL, 53 INT 2 1 INT 3 ;功能是产生一个断点,不要省略 (4)输入U 命令反汇编上面的程序: -U 100 问:这里100代表什么 (5)输入G命令连续运行上面的程序,记录运行结果:

-G=100 ,57,53依次分别改为574F4E57 (6)输入E命令把上面程序中的数据,49,,44,,45:,,45,4C43,4F4D,-E 103 回车(以下同) -E 107 10B-E -E 10F 113-E 117-E 11B-E (7)输入D命令查看程序机器码的存放情况: -D 100 11E ;看从100开始到11E的机器码 (8)输入G命令再连续运行程序,并记录运行结果: -G=100 (9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各 命令的运行结果: -T=100 回车 -G=100 106 回车 -G=100 10A 回车 -G=100 10E 回车 -G=100 11E 回车 注意: 下面第2—第8段程序是7个实用的小程序,若不小心打错指令,可以这样修改: 例如:CS:0100 B300 MOV BL,0 0102 53 PUSH BX 0103 B220 LP1: MOV DL,20 要修改“PUSH BX”,因为这条指令的IP是0102,所以按以下操作: -A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。 如果要查看0100以后的指令及相应的机器代码,可以 -U 0100 回车,能够看到CS:0100开始的指令及相应的机器代码。“-U ”是反汇编 若发现有误用,用“-A XXXX 回车”,重打这条指令即可 2.编制一个能在CRT上连续显示A,B,C,D······Z大写英文字符的源程序,并在源程序下汇编调试机运行。

内蒙古工业大学微机原理实验指导答案.doc

被嗅材尊机原理与旅用实验指导布实验 程禹够告 沽说:信息工程修陇班披, 电8 77-7班g生名:Eg 样号,2011202030 实验一编辑、汇编、 连接、调试程序的使用 程序设计A 设计要求 (1)将FFFFH 送到AX, SI, DI, BP, DS, ES 寄存器 (2)编程(利用DEBUG调试程序,每执行一次T命令后,记录相关寄存器

内容,并判断是否正确。)程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,0FFFFH MOV SI,AX MOV DI,AX MOV BP,AX MOV DS,AX MOV ES,AX RET STARTENDP CODE ENDS END STT B、设计要求 ⑴将1,2,3,4,5分别送到数据段偏移地址为1000H, 1001H, 1002H, 1003H, 1004H,单元中。 ⑵编程 DATA SEGMENT ORG 1000H DATA ENDS CODE SEGMENT ASSUME CS:CODE START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX, DATA MOV DS,AX MOV AL,1 MOV DS:[1000H],AL

MOV AL,2 MOV DS:[1001H],AL MOV AL,3 MOV DS:[1002H],AL MOV AL,4 MOV DS:[1003H],AL MOV AL,5 MOV DS:[1004H],AL RET STARTENDP CODE ENDS END STT 实验二、加法程序设计 设计内容A、设计要求 (1)在数据段偏移地址1000H处开始,连续存放有3字节的数据(高位对应高地 址,低位对应低地址),1003H处开始连续存放有两字节的数据(高对高,低 对低),求这两数据之和,并将结果放在流量数据之后。(eg: 1234 56H+78 9AH=12 AC FOH) (2)编程 DATA SEGMENT ORG 1000H H1 DB56H J34H,12H,9AH,78H H2 DB 3DUP(?) DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START PROC FAR STTPUSH DS SUB AX,AX PUSH AX MOV AX,DATA MOV DS,AX MOVSIJOOOH MOV DI,1003H MOV BX,1005H MOV CX,2 CLC LP:MOVAL,[SI] MOV DL,[DI[ ADCAL,DL MOV [BX],AL INC SI

微机原理及应用实验

实验报告1 实验项目名称:I/O地址译码;简单并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握I/O地址译码电路的工作原理,简单并行接口的工作原理及使用方法。 二、预备知识: 输入、输出接口的基本概念,接口芯片的(端口)地址分配原则,了解译码器工作原理及相应逻辑表达式,熟悉所用集成电路的引线位置及各引线用途;74LS245、74LS373的特性及作用。 三、实验内容245输入373输出 使用Protues仿真软件制作如下电路图,使用EMU8086编译软件编译源程序,生成可执行文件(nn . exe),在Protues仿真软件中加载程序并运行,分析结果。 编程实现:读8个开关的状态,根据输入信号控制8个发光二极管的亮灭。 图1-1 245输入373输出 四、程序清单

五、实验结果 六、结果分析 七、思考题: 1、如果用74LS373作输入接口,是否可行?说明原因;用74LS245作输出接口,是否可行?说明原因。

实验报告2 实验项目名称:可编程定时器/计数器;可编程并行接口同组人: 实验时间:实验室:微机原理实验室K2-407 指导教师:胡蔷 一、实验目的: 掌握8253的基本工作原理和编程应用方法。掌握8255的工作原理及使用方法。 二、预备知识: 8253的结构、引脚、控制字,工作方式及各种方式的初始化编程及应用。 8255的内部结构、引脚、编程控制字,工作方式0、1、2的区别,各种方式的初始化编程及应用。 三、实验内容: ⑴8253输出方波 利用8253的通道0和通道1,设计产生频率为1Hz的方波。设通道0的输入时钟频率为2MHz,8253的端口地址为40H,42H,44H,46H。通道0的输入时钟周期0.5μs,其最大定时时间为:0.5μs×65536 = 32.768ms,要产生频率为1Hz(周期= 1s)的方波,利用;一个通道无法实现。可用多个通道级连的方法,将通道0的输出OUT0作通道1的输入时钟信号。设通道0工作在方式2(频率发生器),输出脉冲周期= 10 ms,则通道0的计数值为20000(16位二进制)。周期为4 ms的脉冲作通道1的输入时钟,要求输出端OUT1输出方波且周期为1s,则通道1工作在方式3(方波发生器),计数值为100(8位;二进制)。硬件连接如图2-1。

80x86微机原理与接口技术实验指导书

80x86微机原理与接口技术 实验指导书 长安大学信息工程学院电子信息与通信工程实验室

第1章 80X86 微机原理及其程序设计实验 本章主要介绍汇编语言程序设计,通过实验来学习80X86 的指令系统、寻址方式以及程序的设计方法,同时掌握联机软件的使用。 1.1 系统认识实验 1.1.1 实验目的 掌握TD-PITE 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 1.1.2 实验设备 PC机一台,TD-PITE 实验装置一套。 1.1.3 实验内容 编写实验程序,将00H~0FH 共16 个数写入内存3000H 开始的连续16 个存储单元中。 1.1.4 实验步骤 1. 运行Wmd86 软件,进入Wmd86 集成开发环境。 2. 根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1-1 语言环境选择界面 3. 语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-1-2所示。默认文件名为Wmd861。 图1-1-2 新建文件界面 4. 编写实验程序,如图1-1-3所示,并保存,此时系统会提示输入新的文件名,输完后

点击保存。 图1-1-3 程序编辑界面 5. 点击,编译文件,若程序编译无误,则输出如图1-1-4所示的输出信息,然后再点击进行链接,链接无误输出如图1-1-5所示的输出信息。 图1-1-4 编译输出信息界面图1-1-5 链接输出信息界面 6. 连接PC与实验系统的通讯电缆,打开实验系统电源。 7. 编译、链接都正确并且上下位机通讯成功后,就可以下载程序,联机调试了。可以通过端口列表中的“端口测试”来检查通讯是否正常。点击下载程序。为编译、链 接、下载组合按钮,通过该按钮可以将编译、链接、下载一次完成。下载成功后,在输出区的结果窗中会显示“加载成功!”,表示程序已正确下载。起始运行语句下会有一条绿色的背景。如图1-1-6所示。

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理实验报告

微 机 原 理 实 验 报 告 班级: 指导老师:学号: 姓名:

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 图3-1

四、参考程序清单 DATA SEGMENT DATA1 DB 33H,39H,31H,37H,34H;被加数 DATA1END EQU $-1 DATA2 DB 34H,35H,30H,38H,32H;加数 DATA2END EQU $-1 SUM DB 5 DUP(?) DATA ENDS STACK SEGMENT STA DB 20 DUP(?) TOP EQU LENGTH STA STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK,ES:DATA START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX

MOV SI,OFFSET DATA1END MOV DI,OFFSET DATA2END CALL ADDA MOV AX,4C00H INT 21H ADDA PROC NEAR MOV DX,SI MOV BP,DI MOV BX,05H AD1: SUB BYTE PTR [SI],30H SUB BYTE PTR [DI],30H DEC SI DEC DI DEC BX JNZ AD1 MOV SI,DX MOV DI,BP MOV CX,05H CLC AD2: MOV AL,[SI] MOV BL,[DI] ADC AL,BL

微机原理实验指导书

微型计算机原理与应用 实验指导书 上海大学通信学院 2010 年 4 月

PC微机原理实验一 一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的 功能。 二、要求:在PC机上完成下列程序的调试运行,并写出运行结果。1.DEBUG的基本操作:(详细容请参阅教材“4.5程序的调试,P173”和“附 录F调试程序DEUBG的使用,P499”) (1)从WINDOWS进入DOS之后,输入命令启动DEBUG: C:>DEBUG 回车 (2)输入R命令,查看和记录CPU各个寄存器的容: -R回车 看到什么? (3)输入A命令,汇编下面的字符“WINDOWS”显示程序: -A100 ;从偏移地址是0100H处开始写指令 MOV AH,2 MOV DL, 57 ;57H 是“W”的ASCII码 INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能 ;这3句合起来的功能是:显示DL中的字符 MOV DL, 49 INT 21 MOV DL, 4E INT 21 MOV DL, 44 INT 21 MOV DL, 4F INT 21 MOV DL, 57 INT 21 MOV DL, 53 INT 21 INT 3 ;功能是产生一个断点,不要省略 (4)输入U命令反汇编上面的程序: -U 100 问:这里100代表什么? (5)输入G命令连续运行上面的程序,记录运行结果: -G=100 (6)输入E命令把上面程序中的数据57,49,4E,44,4F,57,53依次分别改为57,45,4C,43,4F,4D,45: -E 103 回车(以下同) -E 107 -E 10B

微机原理实验指导书

微机原理实验指导书汕头大学机电系摘录

实验一P1口实验及延时子程序设计 1.实验目的 利用单片机的P1口作为I/O口进行实验验证,掌握利用P1口作为输入口和输出口的编程方法,理解并掌握延时子程序的设计方法。 2.实验设备及器件 IBM PC机一台 DP-51PRO单片机综合仿真实验仪一台 3.实验内容 (1)编写一段程序,用P1口作为控制端口,使D1区的LED轮流点亮。 (2)编写一段程序,用P1.0~P1.6口控制LED,P1.7控制LED的亮和灭(P1.7接按键,按下时LED 亮,不按时LED灭)。 图 1 4.实验要求 学会使用单片机的P1口作I/O口。如果时间充裕,也可以考虑利用P3口作I/O口来做该实验。 5.实验步骤 ①用导线把A2区的J61接口与D1区的J52接口相连。原理如图1所示。 ②先编写一个延时程序。 ③将LED轮流点亮的程序编写完整并调试运行。 ④使用导线把A2区J61接口的P1.0~P1.6与D1区J52接口的LED1~LED7相连,另外A2区J61接口的P1.7与D1区J53的KEY1相连。原理如图3.2(b)所示。 ⑤编写P1.7控制LED的程序,并调试运行(按下K1看是否全亮)。 ⑥A2区J61接口P1.7与D1区J54的SW1相连,然后再运行程序,拨动开关SW1查看结果。

6.实验预习要求 阅读附录内容,理解实验的硬件结构。可以先把程序编好,然后在Keil C51环境下进行软件仿真。 7.实验参考程序 程序1: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP M ain ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main: MOV A,#0FFH CLR C MainLoop: CALL Delay RLC A MOV P1,A ;把A的值输出到P1口 SJMP MainLoop Delay: MOV R7, #0 ;延时 Loop: MOV R6, #0 DJNZ R6, $ DJNZ R6, $ DJNZ R6, $ DJNZ R7, Loop RET ; END 程序2: ORG 8000H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0000H LJMP Main ORG 8100H ;此为硬件仿真调试程序,使用软件仿真或直接运行,应改为0100H Main:JB P1.7,SETLED ;按键没有按下时,跳转到SETLED CLRLED: CLR P1.0 CLR P1.1 CLR P1.2 CLR P1.3 CLR P1.4 CLR P1.5 CLR P1.6 SJMP Main SETLED: SETB P1.0 SETB P1.1

微机原理实验讲义资料

微机原理实验讲义 程曙艳编 厦门大学自动化系 2016年10月

汇编语言的上机过程 1、建立汇编语言的工作环境 至少有以下程序文件: 编辑程序,文件名https://www.doczj.com/doc/306929269.html,,使用https://www.doczj.com/doc/306929269.html,编辑程序代码生成*.asm。 汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件 连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件 调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行 (1)编辑 可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。 (2)汇编 在DOS状态执行masm 文件名,则屏幕显示与操作如下: (3)连接 汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下: (4)运行、调试

>DEBUG 文件名.exe Debug运行后,出现状态提示符短划线- 常用debug命令: D,显示内存单元内容 R,显示与修改寄存器内容 T、P,单步执行命令 G,连续执行指令 U,反汇编 Q,退出DEBUG程序 2. 汇编语言程序格式 汇编语言由若干个段组成: 堆栈段(保存数据、断点等信息) 代码段(存放指令)必需 数据段(定义数据,分配存储单元) 附加段(定义数据,分配存储单元) 每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾 STACK SEGMENT ...... STACK ENDS DATA SEGMENT ...... DATA ENDS ESEG SEGMENT ...... ESEG ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA,SS:STACK,ES:ESEG START:mov ax, data mov ds, ax mov ax, eseg mov es, ax mov ax, stack mov ss, ax ………. CODE ENDS END START

微机原理实验指导

微机原理实验一简单I/O口扩展实验 一、实验目的 1. 熟悉74LS273、74LS244的应用接口方法。 2. 掌握用锁存器、三态门扩展简单并行输入输出口的方法。 二、实验内容 用逻辑电平开关作为74LS244(U10)的输入,用发光二极管作为74LS273的输 出,编写程序,使得逻辑电平开关的输入状态从发光二极管上显示出来。 三、实验器材 微机、EL型微机教学实验箱 四、实验原理图 4LS273 4 4LS02 S O S I C S U 1 R K1-K8是开关的输出插孔,L1-L8是发光二极管的输入插孔,SI0-SI7是74LS244 的输入插孔,SO0-SO7是74LS273的输出插孔,CSU10\是74LS244的地址译码输入插孔,CSU8\是74LS273译码输入插孔,以上插孔实验时均需连线,原理图中其它已注的和未标注的引脚均以连好或实验不需要。 74LS244

五、实验步骤 1.连线:将74LS244的输入SI0-SI7分别与逻辑电平开关电路的 K1-K8相连,从I/O地址片选信号 CS0\~CS7\中任选一个与 U10的片选信号相连(例如CS0\)。将74LS273(U8或U9)的输出(CS0\~CS7\)分别与发光二极管电路的 L1~L8相连,从I/O地址片选信号CS0\~CS7\中任选一个与U8或U9的片选信号相连。(如CS1\)2.编辑程序,单步运行,调试程序 3.调试通过后,全速运行,观察实验结果 4.编写实验报告 六、编程提示 逻辑电平开关拨上时为5V,拨下时为0V,发光二极管输入‘1’为亮,‘0’为灭。从U10读入的数据后从输出口输出。 七、程序框图

2013微机原理实验指导书

微机原理实验报指导书 实验一数据传送实验 1.实验名称实验一数据传送实验 2.实验目的 1、掌握微型计算机汇编软件调试汇编源程序的基本操作; 2、熟悉传送指令、简单运算类指令来编写汇编语言源程序; 3、掌握调试过程及实验结果分析; 3.实验仪器 微型计算机一台 4.实验原理或内容 1.数据段从3500H单元开始建立0---15共16个数据区,程序中见此段存入 数据00H,01H,02H---0AH---0FH,运行之,检查并记录结果。 2.将内存3500H开始的共10个单元内容传送到3600H单元开始的数据区中,运行之,记录结果。 5.实验步骤 1.启动Masm for Windows 集成实验环境2009.6。显示如下: 2.输入源程序 在模板处将程序完成,其中模板中段名可以自己修改定义,没有涉及的段可省略不写。 输入汇编语言源程序后,保存程序(规定扩展名为.asm)

3.汇编 编译/汇编成目标文件,单击运行菜单下“编译成目标文件(obj)”,等待系统汇编,若有错误,修改再编译,直至无错误为止。

4.连接 生成可执行文件。单击运行菜单下“生成可执行文件(exe)”,等待系统对汇编生成的.obj文件进行连接,生成相应的可执行文件。若有错误,修改错误重复3和4操作,直至无错误为止。

5.在DEBUG调试环境下进行程序的调试 1、反汇编。u回车 -u0000回车 2、单步运行。-T=0000回车 -T回车 3、连续运行。G=起始偏移地址结束偏移地址 4、内存单元内容显示。-Dds:3500回车 5、内存单元内容的修改。-EDS:3500回车.键入修改后内容再空格 完成后回车 6、查看修改寄存器。-R回车 -R跟寄存器名,显示寄存器内容:后可跟修改内容 -R IP 可查看修改IP值 7、退出debuf。Q命令 6.数据与结果 将运行结果记录于此处

微机原理实验答案汇总

1.题目:编程将(AX)=2387、(BX)=192FH、(CX)=9256中的无符号数按由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 CODE SEGMENT ASSUME CS:CODE START: MOV AX,2387 MOV BX,192FH MOV CX,9256 CMP AX,BX JAE NEXT1 XCHG AX,BX NEXT1: CMP AX,CX JAE NEXT2 XCHG AX,CX NEXT2: CMP BX,CX JAE NEXT3 XCHG BX,CX NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 2.题目:编程将(BX)=8600H、(CX)=3489H、(DX)=9235按有符号数由大到小排序,上机编程调试出程序,并将程序及排序结果记录在下面。 ;CODE SEGMENT ASSUME CS:CODE START: MOV BX,8600h MOV CX,3489H MOV DX,9235 CMP BX,CX JGE NEXT1 XCHG BX,CX NEXT1: CMP BX,DX JGE NEXT2 XCHG BX,DX NEXT2: CMP CX,DX JGE NEXT3 XCHG CX,DX NEXT3:

MOV AH,4CH INT 21H CODE ENDS END START 3.题目:在数据段中定义如下数据:32,34,89H,,编程将以上数据按有符号数进行排序,并将程序和结果记录下来。 DATA SEGMENT NUM DB 32,34,89H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DAT START: MOV AX,DATA MOV DS,AX ;初始化DS LEA BX,NUM ;取有效地址到BX,以便访问要排序的数 MOV AL,[BX] CMP AL,[BX+1] JGE NEXT1 ;若第一个数大则跳转,否则将第一个与第二个数交换 XCHG AL,[BX+1] MOV [BX],AL NEXT1: CMP AL,[BX+2] JGE NEXT2;若第一个数大则跳转,否则将第一个与第三个数交换 XCHG AL,[BX+2] MOV [BX],AL NEXT2: MOV AL,[BX+1];将第二个和第三个数比较 CMP AL,[BX+2] JGE NEXT3;若第二个数大则跳转,否则将第二个与第三个数交换 XCHG AL,[BX+2] MOV [BX+1],AL NEXT3: MOV AH,4CH INT 21H CODE ENDS END START 4.题目:在数据段中定义如下数据:99,25,86,编程将以上数据按无符号数进行排序,上机调试出程序,并将程序和结果记录下来。 data segment num db 99h,25h,86h data ends code segment assume cs:code,ds:data start:mov ax,data

微机原理实验报告

西安交通大学实验报告 课程_ 微机与接口技术第页共页 系别__ 生物医学工程_______ __ 实验日期: 年月日 专业班级___ __组别___ __ 交报告日期: 年月日 姓名__ 学号_ _报告退发 ( 订正、重做 ) 同组人_ 教师审批签字 实验一汇编语言程序设计 一、实验目的 1、掌握Lab6000p实验教学系统基本操作; 2、掌握8088/8086汇编语言的基本语法结构; 3、熟悉8088/8086汇编语言程序设计基本方法 二、实验设备 装有emu8086软件的PC机 三、实验内容 1、有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。编程并显示结果: 如果数组是无符号数,求出最大值,并显示; 如果数组是有符号数,求出最大值,并显示。 2、将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:” 3、将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII是:” 4、两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。在移动的过程中,显示移动次数1,2 ,3…0AH…64H(16进制-ASCII码并显示子

程序) 5、键盘输入一个小写字母(a~z),转换成大写字母 显示:请输入一个小写字母(a~z): 转换后的大写字母是: 6、实现4字节无符号数加法程序,并显示结果,如99223344H + 99223344H = xxxxxxxxH 四、实验代码及结果 1.1、实验代码: DATA SEGMENT SZ DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H;存进数组 SHOW DB 'THE MAX IS: ','$' DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA ;把数据的基地址赋给DS MOV DS,AX MOV DX,OFFSET SHOW ;调用DOS显示字符串 MOV AH,09H INT 21H MOV SI ,OFFSET SZ ;数组的偏移地址赋给SI MOV CX,10 ;存进数组的长度给CX MOV DH,80H ;将数组的第一个数写进DH NEXT: MOV BL,[SI] ;将数组的第一个数写进BL CMP DH,BL ;比较DH和BL中数的到校 JAE NEXT1 ;如果DH中的数大于BL中,将跳转到NEXT1 MOV DH,BL ;如果DH中的数小于BL中,将BL中的数赋给DH NEXT1: INC SI ;偏移地址加1 LOOP NEXT;循环,CX自减一直到0,DH中存数组的最大值 ;接下来的程序是将将最大值DH在屏幕上显示输出 MOV BX,02H NEXT2: MOV CL,4 ROL DH,CL ;将DH循环右移四位

微机原理实验指导

实验一 MASM For Windows 的使用及顺序程序设计 一、实验目的 1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。 2、熟悉masm for windows调试环境及DEBUG常用命令的使用 二、实验内容 1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用 2.编程实现两个16位无符号数的加、减、乘、除运算。 有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 三、实验设备 PC机一台、masm for windows 汇编语言集成环境 四、实验准备 1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。 4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。 2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、学生实验报告的要求 1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。

3) 说明主要符号和所用到寄存器的功能。 4) 上机调试过程中遇到的问题是如何解决的。 5) 对调试源程序的结果进行分析。 4) 说明标志位CF、SF和OF的意义。 DEBUG的常用命令 1、R 显示或修改寄存器的内容命令格式:-R 2、 D 显示存储单元的内容命令格式:-D[地址1, 地址2] 3、E修改存储单元的内容 命令格式:-E[地址1, 地址2] 4、U反汇编 命令格式:-U[地址1, 地址2] 5、T单步执行 命令格式:-T 6、G连续执行 命令格式:-G[=起始地址, 结束地址] A小汇编 命令格式:-A 7、Q退出DEBUG,返回DOS 实验一源程序 EXAM1-2 .ASM DATA SEGMENT A D B 34H,18H,2 DUP(0),’$’ B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL

微机原理与接口技术实验指导书1_[1]...

微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月

目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)

实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:

步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车

步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。

微机原理实验参考答案(航大)

《微机原理》实验参考答案 实验1 汇编基本指令及顺序程序设计实验 实验2 分支与DOS中断功能调用程序设计实验 实验3 循环结构程序设计实验 实验4 存储器扩展实验 实验5 8259应用编程实验 实验1汇编基本指令及顺序程序设计实验 一、实验目的 1、掌握汇编语言的开发环境和上机过程; 2、掌握DEBUG命令; 3、掌握顺序程序设计方法; 4、掌握寻址方式; 5、理解和掌握汇编基本指令的功能。 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H;请编一程序段将AX和BX的内容进行交换。要求:用3种方法实现。 答:方法一CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H MOV CX,AX MOV AX,BX MOV BX,CX CODE ENDS END START 方法二CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H XCHG AX,BX CODE ENDS END START

方法三CODE SEGMENT ASSUME CS:CODE START: MOV AX,3000H MOV BX,5000H PUSH AX PUSH BX POP AX POP BX CODE ENDS END START 2、分别执行以下指令,比较寄存器寻址,寄存器间接寻址和相对寄存器寻址间的区别。 MOV AX,BX 寄存器寻址,将BX内容送AX MOV AX,[BX] 寄存器间接寻址,将DS:BX内存单元内容送AX MOV AX,10[BX] 寄存器相对寻址,将DS:BX+10内存单元内容送AX 在DEBUG调试模式,用A命令直接编辑相应指令并用T命令单步执行,执行后查询相应寄存器的值并用D命令查内存。 3、已知有如下程序段: MOV AX,1234H MOV CL,4 在以上程序段的基础上,分别执行以下指令: ROL AX,CL AX=2341H ROR AX,CL AX=4123H SHL AX,CL AX=2340H SHR AX,CL AX=0123H SAR AX,CL AX=0123H RCL AX,CL 带进位标志位的循环左移 RCR AX,CL 带进位标志的循环右移 4、设有以下部分程序段: TABLE DW 10H,20H,30H,40H,50H ENTRY DW 3 ┇ LEA BX,TABLE ADD BX,ENTRY MOV AX,[BX] ┇ 要求:(1)将以上程序段补充成为一个完整的汇编程序。

微机原理实验报告材料

微型计算机原理及单片机 实验报告 班级: 学号: :

实验一 汇编语言程序设计 1 分支程序设计实验 1.1.1 实验目的 1. 掌握分支程序的结构。 2. 掌握分支程序的设计、调试方法。 1.1.2 实验设备 PC 机一台,TD-PITE 实验装置一套。 1.1.3 实验容 设计一数据块间的搬移程序。设计思想:程序要求把存中一数据区(称为源数据块)传送到另一存储区(成为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1.1所示。 源数据块 目的数据块0H FFFFFH 源数据 块目的数据块0H FFFFFH 源数据 块 目的数据块0H FFFFFH (a ) (b ) (c ) 图1.1 源数据块与目的数据块在存储中的位置情况 对于两个数据块分离的情况,如图1.1(a ),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论: 当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图1.14(b )所示。 当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图1.14(c )所示。 实验程序流程图如图1.5所示。 1.1.4 实验程序如下 SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START:

MOV CX, 0010H图1.5 程序流程图 MOV SI, 6000H Array MOV DI, 7000H CMP SI, DI JA A2 ADD SI, CX ADD DI, CX DEC SI DEC DI A1: MOV AL, [SI] MOV [DI], AL DEC SI DEC DI DEC CX JNE A1 JMP A3 A2: MOV AL, [SI] MOV [DI], AL INC SI INC DI DEC CX JNE A2 A3: JMP A3 CODE ENDS END START 1.1.5 实验步骤 1. 按流程图编写实验程序,经编译、无误后装入系统。 2. 用E命令在以SI为起始地址的单元中填入16个数。 3. 运行程序,待程序运行停止。 4. 通过D命令查看DI为起始地址的单元中的数据是否与SI单元中数据相同。 5. 通过改变SI、DI的值,观察在三种不同的数据块情况下程序的运行情况,并验证程 序的功能。

相关主题
文本预览
相关文档 最新文档