当前位置:文档之家› 电科11级微机原理与接口上机实验自编教材

电科11级微机原理与接口上机实验自编教材

电科11级微机原理与接口上机实验自编教材
电科11级微机原理与接口上机实验自编教材

《微机原理与接口上机实验自编教材》

电气学院电子教研室李东

一、本实验课的性质、任务与目的

汇编语言程序设计是电子信息科学与技术专业的一门重要的计算机技术基础课程和必修的专业基础课,是操作系统、计算机接口技术、计算机系统结构、单片机原理、计算机控制技术等课程的先修课。在众多的程序设计语言中,汇编语言是面向机器的低级语言。由于汇编语言可以直接对硬件资源进行编程,因而汇编语言具有更高的执行效率。与高级与语言相比,它更适合于对执行速度和代码长度要求较高的场合。可见,汇编语言一方面可以帮助学生理解计算机工作原理,为后续课程的学习打下基础,同时也可以直接应用于实时控制及与硬件资源京密结合的其它领域。

汇编语言程序设计是一门实践性很强的课程,程序设计如何,是否达到要求,必须通过上机运行和调试。在具体学习实践中,很多人普遍感到汇编语言程序改错、上机调试使学生操作上的难点,应此,我们编写了本实验教材,具有通俗易懂的特点,希望对大家的学习有所帮助。

三、考核方式与评分办法:

1.每次实验必须有指导教师点名,不得无故缺席或迟到;

2.实验结束后,学生向指导教师上交实验报告;

3.平时成绩占50%,上机考核占50%。

四、本实验课教材或实验指导参考书

[1] 李东《微机原理与接口实验自编教材》

[2] 王智文、蔡启先等《微机原理及汇编语言程序设计》2005年10月

执笔人:李东教研室:电气学院电子教研室

《微机原理与接口技术上机实验》实验报告

学院:;班级:;姓名:;学号:;指导教师:李东;实验时间:;实验成绩:;

实验1调试程序DEBUG 的使用

DEBUG.EXE是DOS提供的用于调试可执行程序的工具软件,是汇编语言程序设计中常用的调试工具。在DEBUG环境下,不但可以调试经汇编、连接后生成的可执行程序,也可以编写简单的程序。

一、实验目的

1.熟悉debug 常用命令的使用方法

2.了解上机操作环境

二、实验内容

1.按照提供的《debug》电子版补充教材进行学习训练

2.用汇编语言编写一个计算“3+5”的加法程序

3.利用debug运行简单的汇编程序。

4.熟悉debug 常用命令的使用方法

三、实验实现的程序及上机操作步骤

MOV AL, 33H ; 将3的ASCII码送入AL寄存器中

MOV DL, 35H ; 将5的ASCII码送入DL寄存器中

ADD DL, AL ; 做“3+5”,结果送DL寄存器

SUB DL, 30H ; 将“3+5”的结果进行调整,得到8的ASCII码,送DL寄存器MOV AH, 2 ;

INT 21H ; 输出DL寄存器中的字符

INT 20H ; 中断当前执行的程序

该程序是将两个十进制数3和5的ASCII码送入寄存器AL和DL,当ASCII码进行相加时必须通过条调整后才能得到其结果。如例中,33H+35H等于68H,68H-30H=38H,38H才是十进制8的ASCII码,再将结果在显示器上显示DL寄存器中的字符,该字符应该是将字符的ASCII码放在DL寄存器中。INT 20H 是中断正常结束程序。

运行步骤如下:

1.进入DEBUG状态

点击“开始”→“程序”→“附件”→“命令提示符”,进入DOS操作环境。然后运行DEBUG程序:(说明:本课程实验假设是在c盘上建立了masm子目录,且masm.exe、link.exe、debug.exe、cref.exe、lib.exe都在该目录中。)

C:\﹍\﹍>CD\↙

C:\>CD MASM↙

C:\>MASM>DEBUG↙

屏幕显示:

_

“_”为已进入DEBUG状态,在该提示符下可键入DEBUG命令。(下划线部分表示用户键入的字符或命令,↙为回车符号)

2.键入程序并汇编

用DEBUG的A命令送入程序:

_ A 100 ↙

XXXX:0100 MOV AL, 33 ↙

XXXX:0102 MOV DL, 35 ↙

XXXX:0104 ADD DL, AL ↙

XXXX:0106 SUB DL, 30 ↙

XXXX:0109 MOV AH, 2 ↙

XXXX:010B INT 21 ↙

XXXX:010D INT 20 ↙

XXXX:010F ↙

_

当键入A命令时,自动产生程序所送内存单元的段地址和偏移地址。通过偏移地址可以看到每条指令占内存单元多少字节。如“MOV AL, 33”占两个字节,···当程序送完时,只键入回车键↙,就退出汇编状态(A状态)回到DEBUG状态“-”。其中送入的数据为十六进制数,DEBUG状态下程序中的数据均按十六进制处理,不需要键入H来表示数据为十六进制数。

3.执行程序

用DEBUG的G命令执行刚刚汇编的程序:

- G=XXXX:0100 ↙

8

program terminated normally

4.反汇编

可以用反汇编U命令将键入的程序调出,并且可以得到每条汇编指令的机器码。

- U100 10E ↙

XXXX:0100 BO33 MOV AL, 33

XXXX:0102 B235 MOV DL, 35

XXXX:0104 00C2 ADD DL, AL

XXXX:0106 80EA30 SUB DL, 30

XXXX:0109 B402 MOV AH, 2

XXXX:010B CD21 INT 21

XXXX:010D CD20 INT 20

四、熟悉:E、D、R等其它debug常用命令

例:利用DEBUG的E命令向内存中写入机器码,D命令察看内存中的数据,用U命令查看内存中机器码的含义,用T命令执行内存中的机器码。

如何向内存中写入机器码呢?我们知道,机器码也是数据,当然也可以用E命令将机器码写入内存。比如要从内存1000:0单元开始写入这样一段机器码:

机器码对应的汇编指令

b8 01 00 mov ax, 0001

b9 02 00 mov cx, 0002

01 c2 add ax, cx

可以用下述的方法进行实验:

C: \ >DEBUG↙

- E1000:0000 B8 01 00 B9 02 00 01 C8 ↙

-

如何查看我们写入的或内存中原有的汇编指令呢?我们用D命令察看1000:0~1000:1F 中的数据(从数据的角度看一下我们写入的内容);最后用U命令查看从1000:0开始的内存单元中的机器指令和他们所对应的汇编指令。

- U1000:0000 0007 ↙

1000:0000 B8 01 00 MOV AX, 0001

1000:0003 B9 02 00 MOV CX, 0002

1000:0006 01 C8 ADD AX, CX

1000:0008 ···

由此,我们可以再一次看到内存中的数据和代码没有任何区别,关键在于如何解释。

如何执行我们写入的机器指令呢?使用DEBUG的T命令可以执行一条或多条指令,简单的使用T命令,可以执行CS:IP指向的指令:

接前面实验:

- R ↙

···

- RCS ↙

CS XXXX

: 1000 ↙

- RIP ↙

IP XXXX

: 0000 ↙

- R ↙

- T ↙

···

- P ↙

这个例子中,我们先用E命令向1000:0000开始的内存单元中写入了8个字节的机器码,然后用R命令查看CPU中寄存器的状态,可以看到,CS=XXXX,IP=YYYY,指向内存XXXX:YYYY;若要用T命令控制CPU执行我们写到1000:0000的指令,必须先让CS:IP 指向1000:0000;接着用R命令修改CS、IP中的内容,使CS:IP指向1000:0000 完成上面的步骤后,我们就可以使用T命令来执行我们写入的指令了(此时CS:IP指向我们的指令所在的内存单元)。执行T命令后,CPU执行CS:IP指向的指令,则1000:0处的指令B8 01 00 (MOV AX, 0001)得到执行。指令执行后,DEBUG显示输出CPU中寄存器的状态。

注意:指令执行后,AX中的内容改写为1,IP改写为IP+3(因为(MOV AX, 0001的指令长度为3个字节),CS:IP指向下一条指令。

接着我们可以继续使用T命令执行下面的指令,注意每条指令执行后,CPU相关寄存器内容的变化。

五、实验运行结果及实验后的心得体会

实验2汇编语言程序的编辑、汇编、链接、调试、运行

一、实验目的

1. 了解上机操作环境;

2. 了解上机操作流程;

3.熟悉EDIT编辑程序的使用方法,利用EDIT编辑简单的汇编程序;

4.熟悉汇编语言程序的编辑、汇编、链接、调试、运行

二、本实验上机操作环境:

这里列出了本实验的上机操作环境。包括:

操作系统:Window 9x的MS-DOS方式,MSDOS6.22、MSDOS7.0,Window 2000及以上“命令提示符”的运行等。

文本编辑器:记事本,https://www.doczj.com/doc/4b16106832.html,等

汇编程序:MASM.EXE、ASM.EXE等

连接程序:LINK.EXE

调试程序:DEBUG.EXE

此外还有:

索引程序:CREF.EXE

库管理程序:LIB.EXE

假定在C盘上建立了MASM子目录,且上述程序都在该目录中。

三、上机操作流程

整个上机过程包括:①建立与编辑源程序;②原程序汇编产生目标文件;③连接目标程序产生可执行程序;④调试运行可执行程序这么四个步骤。

①进入MS-DOS,建立与编辑源程序

点击“开始”→“程序”→“附件”→“命令提示符”,进入DOS操作环境:

C:\﹍\﹍>CD\MASM↙

C:\>MASM>DIR↙

C:\>MASM的目录

200X-XX-XX XX-XX

200X-XX-XX XX-XX

···

200X-XX-XX XX-XX 39,100 MASM.EXE

200X-XX-XX XX-XX 39,100 LINK.EXE

200X-XX-XX XX-XX 39,100 CREF.EXE

200X-XX-XX XX-XX 39,100 LIB.EXE

200X-XX-XX XX-XX 39,100 DEBUG.EXE

XX个文件 XXX,XXX字节

X个目录 X,XXX,XXX,XXX可用字节

现在我们利用EDIT编辑程序:

C: \ > MASM>EDIT ↙

进入EDIT编辑状态,在EDIT文本编辑器中输入源程序:

DATA SEGMENT

X DB 0E5H ;定义变量X、Y、W

Y DB 34H

W DW ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX, DATA ;装填DS端地址

MOV DS, AX

XOR AH, AH ;AH清零,为高字节加作准备

MOV AL, X ;AX=X+Y

ADD AL, Y

ADC AH, 0

MOV W, AX ;送结果

MOV AH, 4CH ;返回DOS

INT 21H

CODE ENDS

END START

程序输入完毕,要给输入的程序起一个文件名,其扩展名必须为.ASM。按下ALT健,在file菜单中用方向健选择“save”,再出现的对话框中的“file name:[--------]”中输入“test1.asm”并即点击ok或按回车。

按下ALT健,在file菜单中用方向健选择“Exit”并退出EDIT回到DOS状态。

②原程序汇编产生目标文件

C: \ MASM> MASM TEST1.ASM ↙

Microsost (R) Macro Assembler Version 5.00

Copyright (C) Microsost Corp 1981-1985, 1987

Source filename[.ASM]: TEST1 ↙

Object filename[TEST1.ASM]:↙

Source listing[NUL.LST]:↙

50722+410046 Byte symbol space free

0 Warning Errors

0 Severe Errors

汇编成功,形成TEST1.OBJ文件。若不需要列表文件和交叉索引文件可直接回车跳过。

③连接目标程序产生可执行程序

C: \ MASM> LINK TEST1 ↙

IBM Personal Computer Linker

Version 2.00 (C) Copyright IBM Corp 1985、1986、2000

Object Modules [.OBJ]: TEST1 ↙

Run File [TEST1.EXE]: ↙

List File [NUL.MAP]: ↙

Libraries [.LIB]: ↙

Warning: No Stsck Segment

(表明用户程序没有设置堆栈,将由系统自动设置,此警告错误一般不会影响可执行程序的

产生和运行。)下面我们进行程序的运行与结果检查:

④.调试运行可执行程序

C: \ MASM> TEST1.EXE ↙;执行该程序

C: \ MASM>

由于程序执行的结果存放在内存单元中,因而屏幕看不到任何结果。因此,必须启动DEBUG 调试程序,来了解运行的结果。

C: \ >MASM> DEBUG ↙

屏幕显示“-”号是DEBUG系统提示符。

- N TEST1.EXE ↙;用N命令来指定要调试的文件名

- L ↙;用L命令装入该文件到内存中

- U ↙;用U命令反汇编该文件

注意:下面的段值(如1407、1406等)不同的电脑给出的值是不一样的,不要照搬1407:0000 B80614 MOV AX,1406

1407:0000 B80614 MOV DS,AX

···

- D 1406:0,F↙

1406:0000 E5 34 00 00 00 00 00 00-00 00 00 00 00 00 00 00

说明按照程序的DATA数据段的要求它排了变量X的数据E5H和Y的数据34H,接下来使用G命令执行程序:

- G=1407:0 ↙;该命令表示要执行地址为1407:0开始的程序

Program terminated normally

- D 1406:0,F ↙;查看结果

1406:0000 E5 34 19 01 00 00 00 00-00 00 00 00 00 00 00 00

(可见W的值为0119H,结果是正确的)

- Q ↙;退出DEBUG

下面介绍DEBUG另一种启动方法:

C: \ >MASM> DEBUG TEST1.EXE ↙;将指定文件装入内存

- U ↙

13C8:0000 B8C713 MOV AX, 13C7

13C8:0000 8ED8 MOV DS, AX

···

- G=13C8:0000 ↙

Program terminated normally

下面用单步调试来运行调试程序:

所谓单步调试,是指逐条执行程序指令,每执行完当前一条指令后,系统会暂停,此时用户可以用D命令来查看内存,或用R命令查看寄存器内容,从而了解程序是否按设计要求正常运行,再用DEBUG将.EXE程序装入并用U命令反汇编了解有关信息后,执行程序时不用G命令而用T命令。

下面以TEST1.EXE程序为例:

- T=13C8:0 ↙

此时屏幕显示各个寄存器内容及下一条要执行的指令,依次使用T命令就可以观察每一条指令执行后的寄存器,内存的具体情况:

AX=13C3 BX=XX DX= XX ···

···

13C4:0003 8ED8 MOV DS, AX

-T ↙

···

-T ↙

···

13C4:0014 B44C MOV AH, 4C

说明遇到子程序、中断程序、循环程序时,没有必要跟踪下去。下面用P命令来避免(把它当作一条指令来执行)

-P ↙

···

或者用G命令一直运行到程序结束(或断点处)

-G ↙

Program terminated normally

四、实验后的心得体会

实验3-1 顺序结构程序设计

一、实验目的

掌握8086/8088汇编语言程序设计和调试方法。本实验应用顺序结构程序设计方法,上机编程调试汇编语言程序。

二、实验内容

设A、B、C、均为无符号字节数据,编程求Y=(A+B)×C的值。

(A+B)×C

三、程序流程

分析:由题意知,A、B、C均为无符号字节数据,其值在0~255范围内,A+B的值有可能超过8位的字节范围,即在字范围之内。因此,产生的和与C相乘时,应选择16位相乘指令。按A、B、C、均为最大数(255)分析,乘积有可能超过16位,在双字的范围内。从题意可分析应按“顺序结构”设计程序。

四、实验步骤

用连续或单步方式运行程序,检查Y变量地址中的结果是否正确。

五、实验思考

六、实验参考程序

方法1:

DATA SEGMENT

A D

B 201

B DB 174

C DB 240

Y DW ?,?

DATA ENDS

;----------------------------------------------------- CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX ;为数据段寄存器装入值

MOV AH,0

MOV AL,A ;取变量A的值

ADD AL,B ;求变量A与B的8位之和

ADC AH,0 ;产生的进位送入AH,16位的和在AX中

MOV BL,C

MOV BH,0 ;变量C的值取入BX寄存器

MUL BX ;DX,AX←和×C

MOV Y,AX ;送32位积的低字位

MOV Y+2,DX ;送32位积的高字位

MOV AH,4CH

INT 21H ;返回DOS状态

CODE ENDS

END START

方法2:

DATA SEGMENT

NUM DB 201,174,240

Y DW ?,?

DATA ENDS

;----------------------------------------------------- CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX ;为数据段寄存器装入值

MOV SI,OFFSET NUM ;设地址指针

MOV AH,0

MOV BH,AH ;AX和BX的高8位清零

MOV AL,[SI] ;数据A、B、C都是DB定义的字节数据

MOV BL,[SI+1] ;因此它们的值只能取入8位寄存器

ADD AX,BX ;AL←A+B,AH←若有进位

MOV BL,[SI+2] ;取数据C的值到BL

MUL BX ;DX,AX←和×C

MOV Y,AX ;送32位积的低字位

MOV Y+2,DX ;送32位积的高字位

MOV AH,4CH

INT 21H ;返回DOS状态

CODE ENDS

END START

实验3-2 分支机构程序设计

一、实验目的

掌握8086/8088汇编语言程序设计和调试方法。本实验应用分支结构程序设计方法,上机编程调试汇编语言程序。

二、实验内容

设X为字节变量,其值在DS:0400H单元存放,Y的值存于0041H单元中,编程求下面的函数值,并画出程序流程图:

1 ( X>0 )

Y = 0 ( X=0 )

-1 ( X<0 )

三、程序流程

分析:依题意知这是三分支程序,因此在程序中应判断两次,根据变量X值的大小,决定函数 Y的值。程序流程图如下所示:

四、实验步骤

五、实验思考

六、实验程序

编程:数据段程序中为字节变量X定义一个-128~+127范围内的任一值,为函数Y保留一个字节单元,存放Y的值。参考程序如下:

DATA SEGMENT

ORG 0040H

A D

B -27

B DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX ;为数据段寄存器装入值

MOV AL,A ;取字节变量X的值

AND AL,AL ;影响出SF和ZF标志位的状态

JS M1

JZ M2

MOV B,1 ;若结果为正,Y值取+1

JMP DONE

M1: MOV B,-1 ;若结果为负,Y值取-

JMP DONE

M2: MOV B,0 ;若结果为0,Y值取0

DONE: MOV AH,4CH

INT 21H ;返回DOS状态

CODE ENDS

END START

实验4-1 循环结构程序设计

一、实验目的

掌握8086/8088汇编语言程序设计和调试方法。本实验应用循环结构程序设计方法,上机编程调试汇编语言程序。

二、实验内容

已知内存DS:0010H~0031H单元中存放的是带符号的字节数据,编程求它们的绝对值,仍存于原单元中。

三、程序流程

四、编程分析及步骤

分析:求绝对值只对负数进行处理,正数和0不用动。等待处理的字节数据的个数可由算式0031H-0010H+1求得,是22H个。由于对多个数据进行相同的处理,因此本程序是“循环结构”。

编程:字节数据用 DB伪指令定义。求一个负数的绝对值,就是求它的相反数,因此

可用NEG指令。本体控制循环结束的方法有两种:一种是用CX寄存器与LOOP指令配合,控制循环22H次。另一种是看住结束地址0031H,若0031H单元的数据处理完,则循环结束。

五、实验思考

六、实验程序

方法1:

DATA SEGMENT

ORG 0010H

ARRAY DB -8,+40,+63,+120,-19,-47,-99,+82,+77,+10

DB +67,+34,+22,-79,+125,-101,+21,+63,-119,0

DB +48,+100,+92,+11,+102,-50,-23,-16,+64,+15

DB -20,-9,+81,+5

DATA ENDS ;为调试程序准备带符号数若干

;-----------------------------------------------------

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX ;数据段寄存器装入值

MOV CX,22H ;将循环34次

MOV BX,OFFSET ARRAY ;设立指针,指向数据段首地址

AGAIN: MOV AL,[BX] ;取出一个数据

AND AL,AL ;自身相“与”,其值不变,影响SF

JNS NEXT ;若结果非负,准备检查下一个数据

NEG AL ;否则求相反数

MOV [BX],AL ;送回原单元

NEXT: INC BX ;指针指向下一个数据

LOOP AGAIN ;检查处理完?未完则继续

MOV AH,4CH

INT 21H ;处理完返回DOS状态

CODE ENDS

END START

方法2:

DATA SEGMENT

ORG 0010H

ARRAY DB -8,+40,+63,+120,-19,-47,-99,+82,+77,+10

DB +67,+34,+22,-79,+125,-101,+21,+63,-119,0

DB +48,+100,+92,+11,+102,-50,-23,-16,+64,+15

DB -20,-9,+81,+5

DATA ENDS ;为调试程序准备带符号数若干

;-----------------------------------------------------

CODE SEGMENT

ASSUME CS:CODE,DS:DATA

START: MOV AX,DATA

MOV DS,AX ;数据段寄存器装入值

MOV BX,OFFSET ARRAY ;设立指针,指向数据段首地址

AGAIN: MOV AL,[BX] ;取出一个数据

AND AL,AL ;自身相“与”,其值不变,影响SF

JNS NEXT ;若结果非负,准备检查下一个数据

NEG AL ;否则求相反数

MOV [BX],AL ;送回原单元

NEXT: INC BX ;指针指向下一个数据

CMP BX,0031H ;没超过最后一个数据的地址?

JBE AGAIN ;是则继续

MOV AH,4CH

INT 21H ;处理完返回DOS状态

CODE ENDS

END START

实验4-2 系统功能调用

一、实验目的

掌握8086/8088汇编语言程序设计和调试方法。本实验应用系统功能调用程序设计方法,上机编程调试汇编语言程序。

二、实验内容

1. 应用系统功能调用程序设计方法,上机编程调试一个给定的”hao are you”程序,在屏幕上显示”hao are you”;

2. 应用系统功能调用程序设计方法,上机编程调试完成日期的读取与设置:把系统的当前年、月、日均加1。

三、实验步骤

四、实验思考

五、实验程序

;”hao are you”程序

data segment

s1 db 'how are you','$'

data ends

stack segment para stack

db 64 dup(?)

stack ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov ah,9h

mov dx,offset s1

int 21h

mov ah,4ch

int 21h

code ends

end start

;日期的读取与设置:把系统的当前年、月、日均加1 data segment

data ends

code segment

assume cs:code,ds:data

start: mov ax,data

mov ds,ax

mov ah,2ah

int 21h

inc cx

inc dh

inc dl

mov ah,2bh

int 21h

code ends

end start

微机原理与接口技术实验汇总

实验要求 1、带预习报告上机 根据实验要求,作好充分预习,设计实验硬件原理及接线图(必须标出相关的管脚号,以备硬件连线及测试),画出程序流程图,写出源程序清单,规划好调试步骤,上机时带预习报告。注意:无预习报告者不得做实验。 2、认真实验,经教师检查后,方可离开 注意掌握软、硬件调试方法,提高分析问题、解决问题的能力。对所编写的程序必须十分清楚,作到知其然,亦知其所以然,硬件电路原理清楚,熟练应用常规的仪器(如万用表、示波器等)检查测试硬件电路。指导教师还会根据实验要求,提出问题。3、按时提交实验报告 实验结束后,在预习报告的基础上,完成实验报告,并于下次实验时交给指导教师。 实验报告格式 实验* ***** ***** ***** 一、实验目的 二、实验内容 三、硬件原理及接线图 四、程序流程图 五、程序清单 六、实验步骤 七、实验结果及现象分析 八、收获及建议 测13实验安排: 地点:综合实验楼0701 实验周次星期小节 一 6 五1,2 二8 五1,2 三10 五1,2 四12 五1,2 五14 五1,2

实验一汇编语言程序的调试 一、实验目的 1、掌握8086汇编程序的编辑、编译、连接及运行过程。 2、掌握使用HQFC软件调试程序的方法。 二、实验内容:编制程序并调试 1、上机调试P45 项目1程序。 要求:1)写出调试步骤 2)记下代码段数据。 3)记下数据段数据 4)用单步调试法调试,记下每句程序目的操作数执行结果。观察每句程序 执行过程中CS、 IP、 FLAGS寄存器的变化。 2、上机调试P54 项目2程序,用单步调试法指出每句程序的调试结果。 要求:1)记下代码段数据。 2)记下数据段数据 3)记下程序执行前附加段数据、程序执行后附加段数据。 3)用单步调试法调试,记下lop句之前每句程序目的操作数执行结果。 观察其它句程序的执行结果,观察每句程序执行过程中CS、 IP、 FLAGS寄存器的 变化。 三、调试步骤 1、编辑源程序,形成****.ASM文件(可用HQFC软件或XP系统下的记事本编辑源程序) (注:在E:盘上建立一个你自己的文件夹,保存你自己的文件) 2、编译,形成****.OBJ文件(可用HQFC软件的编译功能) 3、链接,形成****.EXE文件(可用HQFC软件的构建功能) 4、运行(或调试)(可用HQFC软件的重构运行功能或开始调试) 四、调试步骤参考 1、编译(编译) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择编译选项则程序对当前ASM源文件进行编译,编译调试窗口中输出汇编的结果,若程序汇编有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 2、构建(汇编+链接) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接选项则程序对当前ASM源文件进行汇编与链接,编译调试窗口中输出汇编与链接的结果,若程序汇编或链接有错,则详细报告错误信息。双击输出错误,集成开发环境会自动将错误所在行代码显示。 3、重构运行(汇编+链接+执行) 在当前运行环境下,选择菜单栏中的“ASM文件编译”菜单,选择汇编+链接+执行选项则程序对当前ASM源文件执行,程序自动运行。

微机原理及应用实验(题目)

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部RAM内容的查看、修改;PSW中个状态位的查看;机器码的查看;程序的各种运行方式,如单步执行、连续执行,断点的设置。二、实验内容 在伟福开发环境中编辑、汇编、执行一段汇编语言程序,把单片机片内的 30H~7FH 单元清零。 三、实验设备 PC机一台。 四、实验步骤 用连续或者单步的方式运行程序,检查30H-7FH 执行前后的内容变化。五、实验思考 1.如果需把30H-7FH 的内容改为55H,如何修改程序? 2.如何把128B的用户RAM全部清零? 六、程序清单 文件名称:CLEAR.ASM ORG 0000H CLEAR: MOV R0,#30H ;30H 送R0寄存器 MOV R6,#50H ;50H 送R6寄存器(用作计数器) CLR1: MOV A,#00H ;00 送累加器A MOV @R0,A ;00 送到30H-7FH 单元 INC R0 ;R0 加1 DJNZ R6,CLR1 ;不到50H个字节,继续 WAIT: LJMP WAIT END 实验二数据传送 一、实验目的 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H 中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、实验设备 PC机一台。

微机原理与接口技术实验报告

微机原理与接口技术实验报告

2

3

实验一:数据传送 实验学时:2 实验类型:验证 实验要求:必修 一.实验目的 1.学习程序设计的基本方法和技能,掌握用汇编语言设计、编写、调试和运行程序的方法; 学习用全屏幕编辑软件QEDIT.EXE建立源程序(.ASM文件); 学习用汇编软件MASM.EXE对源文件汇编产生目标文件(.OBJ文件); 学习用连接程序LINK.EXE对目标文件产生可执行文件(.EXE文件); 学习用调试软件TD.EXE调试可执行文件; 2.掌握各种寻址方法以及简单指令的执行过程。 二.实验器材 PC机 三.实验组织运行要求 1.利用堆栈实现AX的内容与BX的内容进行交换。堆栈指针SP=2000H,AX=3000H,BX=5000H; 2.汇编、调试、观察、记录结果; ⑴用QEDIT.EXE软件输入汇编语言源程序,以.ASM格式文件存盘; ⑵用MASM对源程序进行汇编产生二进制目标文件(.OBJ文件),再用连接程序LINK产生可执行文件(.EXE文件); ⑶用调试软件TD调试、运行程序,观察、记录结果。 四.实验步骤 1.进入子目录E:>\SY86后,利用QEDIT.EXE(简称Q)送入以下汇编语言源程序,并以M1.ASM文件存盘 ⑴汇编语言程序的上机过程 ①进入\SY86子目录 E:>CD\SY86 E:\SY86> ②进入QEDIT.EXE 编辑界面 E:\SY86> Q ③输入文件名*.ASM(如M1.ASM)后,输入源程序 源程序 DATA SEGMENT PARA PUBLIC’DATA’ ;数据段定义 DB 512 DUP(0) DATA ENDS STACK SEGMENT PARA STACK’STACK’ ;堆栈段定义 DB 512 DUP( ?) 4

微机原理及应用实验

实验报告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。

微机原理与接口技术李珍香版十个实验程序说课讲解

微机原理与接口技术李珍香版十个实验程 序

实验一 1.实验目的:掌握汇编语言源程序的结构。 2.实验内容:显示一串字符串“hellow world! 班级,学号”。3.实验代码: DATA SEGMENT MS DB ' Hello,World!$' NS DB ' 151044A,151044106$' DATA ENDS STACK SEGMENT STACK DW 50 DUP(?) STACK ENDS CODE SEGMENT ASSUME DS:DATA,CS:CODE:CODE,SS:STACK START:MOV AX,DATA MOV DS,AX MOV DX,OFFSET MS MOV AH,9 INT 21H MOV AX,DATA MOV DS,AX

MOV DX,OFFSET NS MOV AH,9 INT 21H MOV AH,4CH INT 21H CODE ENDS END START 4.实验结果:

实验二 1.实验目的:熟悉汇编语言源程序的编辑、汇编、连接、调试 过程 2.实验内容:两个8位16进制数相加(生日+当天日期) 3.实验代码: DATA SEGMENT SR DD 19970925H RQ DD 20171111H DATA ENDS STACK SEGMENT STACK DB 50 DUP(0) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START:MOV AX,DATA MOV DS,AX MOV AX,WORD PTR SR ADD AX,WORD PTR RQ

微机原理上机实验(一)实验报告数据传输传送实验

微机原理上机实验(一)实验报告 主题:数据传送 一、实验目的 熟悉星研集成环境软件的使用方法。熟悉Borland公司的TASM编译器 熟悉8086汇编指令,能自己编写简单的程序,掌握数据传输的方法。 二、实验内容 1、熟悉星研集成环境软件。 2、编写程序,实现数据段的传送、校验。 三、实验代码 _STACK SEGMENT STACK DW 100 DUP() _STACK ENDS DATA SEGMENT DATA ENDS CODE SEGMENT START PROC NEAR ASSUME CS:CODE, DS:DATA, SS:_STACK MOV AX, DATA ;将数据段的地址存入AX寄存器。AX=004DH MOV DS,AX ;对DS段寄存器赋值。DS=004DH MOV ES,AX ;对ES段寄存器赋值。ES=004DH NOP ;空指令

MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CALL Move ;调用Move子程序 MOV CX,100H ;把100H送到CX寄存器。CX=0100H MOV SI,3000H ;把3000H送到SI寄存器。SI=3000H MOV DI,6000H ;把6000H送到DI寄存器。DI=6000H CLD ;将DF标志位置0。设置SI、DI为递增移动,DF=0 REPE CMPSB ;比较[SI]和[DI],CX减1,ZF=0或CX=0跳出 ;若ZF=0或CX=0不成立,则继续比较。SI和DI持续递增 1 JNE ERROR ;若ZF=0,跳到ERROR子程序 TRUE: JMP $ ;跳到目前地址 ERROR: JMP $ ;跳到目前地址 Move PROC NEAR ;Move子程序 CLD ;将DF标志位置0。设置SI、DI为递增移动。DF=0 CMP SI,DI ;比较SI、DICF=SF=PF=1,仅有该三个标志位变化JZ Return ;如果相等,跳到Return JNB Move1 ;如果SI大于等于DI,跳到Move1 ADD SI,CX ;SI=SI+CX。SI=3100H DEC SI ;SI减1。SI=30FFH

微机原理实验报告

西安交通大学实验报告 课程_微机与接口技术第页共页 系别__生物医学工程_________实验日期:年月日 专业班级_____组别_____交报告日期:年月日 姓名__ 学号__报告退发 ( 订正、重做 ) 同组人_教师审批签字 实验一汇编语言程序设计 一、实验目的 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循环右移四位

微机原理及应用实验报告81487

实 验 报 告 课 程 名 称 实 验 名 称 实 验 日 期 学 生 专 业 学 生 学 号 学 生 姓 名 教 师 姓 名 成 绩 南京理工大学机械工程学院 微机原理及应用 实验1 DEBUG 操作实验 实验2 汇编程序设计实验 实验3 8253定时/计数器实验 实验4 8255 并行接口实验 年 月 日 至 年 月 日

实验一DEBUG命令及其操作 一、实验目的 1.熟练掌握debug的常用命令,学会用debug来调试程序。 2.深入了解数据在存储器中的存取方法及堆栈中数据的压入与弹出。 3.掌握各种寻址方法以及简单指令的执行过程。 二、实验要求 1.实验前要作好充分准备,包括汇编程序清单、调试步骤、调试方法以及对程序结果的分析等。 2.本实验要求在PC机上进行。 3.本实验只要求在DEBUG调试状态下进行,包括汇编程序,调试程序,执行程序。三、实验内容 ●实验内容1:学习用DEBUG调试工具进行源程序的输入、汇编、调试和执行。 实验报告要求: 1.写出运行结果; 2.小结debug常用命令及使用体会 答:1.原文已给出(略) 2.a 汇编 d显示内存单元内容 e修改单元内存内容 g执行命令 t单步(或多步)调试 n指定文件路径文件名(含扩展名) u反汇编 r查看寄存器值及修改 l加载程序 w写盘命令 体会:提升学习热情和动手能力有助于理解代码执行过程 ●实验内容2 设AX=3000H,BX=5000H,请编一程序段将AX的内容和BX的内容进行交换。请用堆栈作为两寄存器交换内容的中间存储单元,用DEBUG调试程序进行汇编与调试。 实验报告要求: 1.写出完成上述功能的程序段; 2.单步执行,并记录寄存器AX, BX及堆栈指针SP的值 答: A100 Mov ax,3000 ;ax:3000 bx:0000 sp:ffee Mov bx,5000 ;ax:3000 bx:5000 sp:ffee Push ax ;ax:3000 bx:5000 sp:ffec

微机原理与接口技术实验指导书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.分析实验结果及所遇到的问题,并说明解决的方法。

8086软硬件实验报告(微机原理与接口技术上机实验)

实验一实验环境熟悉与简单程序设计 实验目的 (1)掌握DEBUG调试程序的使用方法。 (2)掌握简单程序的设计方法。 实验内容 编程将BH中的数分成高半字节和低半字节两部分,把其中的高半字节放到DH中的低4位(高4位补零),把其中的低半字节放到DL中的低4位(高4位补零)。如: BH=10110010B 则运行程序后 DH=00001011B DL=00000010B 实验准备 (1)熟练掌握所学过的指令。 (2)根据实验内容,要求预先编好程序。 实验步骤 (1)利用DEBUG程序输入、调试程序。 (2)按下表要求不断地修改BH的内容,然后记录下DX的内容。 实验报告 (1)给出程序清单。 (2)详细说明程序调试过程。

程序: CODE SEGMENT START : MOV BH,00111111B MOV AL,BH MOV CL,4 SHR AL,CL MOV DH,AL MOV AL,BH AND AL,00001111B MOV DL,AL MOV CL,0 CODE ENDS END START

实验二简单程序设计 实验目的 (3)掌握DEBUG调试程序的使用方法。 (4)掌握简单程序的设计方法。 实验内容 试编写一个汇编语言程序,要求实现功能:在屏幕上显示:Hello world My name is Li Jianguo 参考程序如下:(有错) data segment out1 db 'Hello world' ax db 'My name is Li Jianguo' data ens code segment assume cs:code;ds:data lea dx,out1 mov ah,2 int 21h mov dl,0ah mov ah,2

微机原理上机实验答案

实验01A 将FFFFH送到AX,BX,CX,DX,SI,DI,BP寄存器 程序如下: CODE SEGMENT ASSUME CS:CODE START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX ;============================== MOV AX,0FFFFH MOV BX,AX MOV CX,AX MOV DX,AX MOV SI,AX MOV DI,AX MOV BP,AX ;============================== RET START ENDP CODE ENDS END STT 实验01B 将FFH送到内存1000H,1001H,1002H,1003H,1004H单元中程序如下: DA TA SEGMENT ORG 1000H H1 DB 5 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX ;============================== MOV AL,0FFH MOV DI,1000H MOV CX,5 ;循环5次 LP1:MOV [DI],AL ;FF放入1000H-1004H中 INC DI

DEC CX JNZ LP1 ;============================== RET START ENDP CODE ENDS END STT 实验02A 编写一个加法程序,在数据段偏移地址1000H处开始,存放有两个3字节长的数据(高位对应高地址,低位对应低地址),求这两数据(十六进制数)的和,并将结果放在两数据之后,利用DEBUG调试程序,并求解:CCBBAAH+223344H=?CCBBAA+554433H=? 程序如下: DA TA SEGMENT ORG 1000H H1 DB 10 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START PROC FAR STT:PUSH DS SUB AX,AX PUSH AX Mov ax,dseg Mov ds,ax ;============================== MOV SI,1000H ;不带最高位进位的全加器 MOV DI,1003H MOV BX,1006H MOV CX,3 CLC AA: MOV AL,[SI] ADC AL,[DI] MOV [BX],AL PUSHF ;保护FR,这里其实没有必要,因为INC不会产生进位 INC SI INC DI INC BX POPF LOOP AA

微机原理及应用 上机实验报告2 数据传送

课程名称:_________微机原理及应用___________指导老师:_____钟崴_______成绩:__________________ 实验名称:_________数据传送___________实验类型:________________同组学生姓名:__________ 一、实验目的和要求(必填)二、实验内容和原理(必填) 三、主要仪器设备(必填)四、操作方法和实验步骤 五、实验数据记录和处理六、实验结果与分析(必填) 七、讨论、心得 一、实验目的和要求(必填) 掌握MCS-51指令系统中的数据传送类指令的应用,通过实验,切实掌握数据传送类指令的各种不同的寻址方式的应用。 二、实验内容和原理(必填) 1.编制一段程序,要求程序中包含7中不同寻址方式。 2.编制一段程序,将片内RAM30H~32H中的数据传送到片内RAM38H~3AH中。 3.编制一段程序,将片内RAM30H~32H中的数据传送到片外RAM1000H~1002H中。 4.编制一段程序,将片内RAM40H~42H中的数据与片外RAM2000H~2002H中的数据互换。 三、主要仪器设备(必填) PC机一台。 四、操作方法和实验步骤 逐段编制程序,汇编无误后,用连续或者单步的方式运行程序,检查程序的运行结果,看是否达到预期的效果。 五、程序清单 1. ORG 0000H CLEAR MOV R0,#30H ;间接寻址 MOV A,#40H ;立即寻址 MOV @R0,A ;间接寻址 MOV A,30H ;直接寻址 MOV DPTR,#0100H ;间接寻址 MOV A,#36H MOVX @DPTR,A MOV R0,#50H ;立即寻址 MOV A,#10 MOVC A,@A+DPTR ;变址寻址 END

微机原理与接口技术实验报告

微机原理与接口技术课程设计报告题目:继电器控制实验设计 学院电子与信息工程学院 专业通信工程年级 10级 学生姓名 xx 学号 _ xxxxxxxx 指导教师 xx 完成时间 2012/11/9 二O一二年十一月

目录 摘要 (3) 一.实验目的 (4) 二.实验原理 (4) 1 实验基本原理 (4) 2.1继电器结构原理图 (5) 2.2继电器工作原理 (5) 3.1 8255A组成 (6) 3.2 8255A结构框图 (7) 3.3 8255A工作方式 (7) 三.实验内容 (11) 四.程序设计 (12) 4.1程序流程图 (12) 4.2程序代码 (12) 五.实验小结........................................................ 错误!未定义书签。 六.参考文献 ......................................................... 错误!未定义书签。

摘要 现代自动控制设备中,都存在一个电子电路与电气电路的互相连接问题,一方面要使电子电路的控制信号能够控制电气电路的执行元件,另一方面又要为电子线路的电气电路提供良好的电气隔离,以保护电子电路和人身的安全。继电器便能完成这一桥梁作用。 本课程设计主要采用了控制继电器和8255A芯片来完成。电路的控制端为高电平时,继电器工作常开触点吸合,连触点的LED灯被点亮。当控制端为低电平时,继电器不工作。执行时,对应的LED将随继电器的开关而亮灭。 关键词:控制继电器 8255A芯片

一.实验目的 1、进一步熟悉汇编语言的设计编写 2、掌握继电器控制的基本原理 3、掌握继电器控制编程方法 4、掌握8255芯片的应用 二.实验原理 1、利用8255A PA0输出高低电平,控制继电器的开合,以实现对外部装置的控制。 硬件线路原理图接线如下: 2、继电器 在现代工业中,人员和电子电路安全保障一直是首要考虑的问题,尤其在一些高危恶劣环境下,如高温高压等,如何在保障操作人员和电子电路安全的前提下对电路进行良好地控制便成为了工业进步不可回避的问题。一方面要使电子电路的控制信号能够控制电气电路的执行元件,另一方面又要为电子线路的电气电路提供良好的电气隔离,以保护电子电路和人身的安全,符合这种需求的元件便是继电器。 控制继电器是一种自动电子控制器件,它适用于远距离接通和分断交、直流小容量控制电路, 它具有控制系统和被控制系统,通常应用于自动控制电路中,

微机原理及应用实验报告

微机原理及应用实验报告标准化文件发布号:(9312-EUATWW-MWUB-WUNN-INNUL-DQQTY-

微机原理及应用实验报告 班级: 姓名: 学号: 中南大学 机电工程学院精密测控实验室

实验二软件程序设计 1.实验目的: 1、掌握MCS-51单片机指令系统及用汇编语言编程技巧; 2、了解和熟悉用MCS-51单片机仿真开发机调试程序的方法。 2.实验内容: 1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。 2.、编写多字节加法程序并上机调试通过。 8031内部RAM20H~22H单元中,存放了3字节被加数(低字节在前),在2AH~2CH单元中存放3字节加数(低字节在前),求两数之和,并将结 果存入以20H为起始地址的区域中(低字节在前)。 3.实验设备名称、型号: 4.画出软件程序流程图,写出上机调试通过的汇编语言程序清单: 程序1、编写排序程序并上机调试通过。 已知8031内部RAM60H~69H单元中,依次存放了 FFH,99H,77H,CCH,33H,DDH,88H,BBH,44H,EEH,它们均为无符号数,编程 将它们按递减次序排序,即最大数放在60H中,最小数放在69H中。

解:本设计采用冒泡排序法,使用双重循环,并在内循环中进行比较如果合乎从大到小的顺序则不动,否则两两交换,这样比较下去,比较9次 后,最小的那个数就会沉底,在下一次比较时将减少一次比较次数。如 果一次比较完毕,没有发生交换,说明已经按照从大到小的顺序排列 了。则可以退出循环,结束程序。 程序结构框图和程序代码如下:

微机原理与应用实验报告

微机原理及应用实验报告 班级:机械1301班 :黄佳清 学号:0801130117 座位号: 中南大学机电工程学院

实验一单片机仿真开发机操作和MCS-51指令系统应用 一.实验目的 1、熟悉MCS-51单片机仿真开发机和开发调试软件的操作使用和调整; 2、学会编写和输入汇编语言源程序、对输入的源程序进行汇编; 3、掌握程序的调试和运行的各种方法。 三.实验容及步骤(完成分值:60分) 本实验秩序运行Keil uVersion2程序,设置为keil为纯软件仿真 1.新建工程项目 2.设置工程文件参数 3.编写新程序事例 4.调试程序直至能够运行出结果。 四.实验程序 AJMP MAIN ORG 0030H MAIN: MOV R0,#20H MOV R2,#0FH MOV A,#00H A1: MOV R0,A INC R0 INC A DJNZ R2,A1 MOV R0,#20H ;暂停,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A2: MOV A,R0 MOVX DPTR,A INC R0 INC DPTR DJNZ R2,A2 MOV R0,#030H ;断点,观察并记录! MOV DPTR,#7000H MOV R2,#0FH A3: MOVX A,DPTR MOVX R0,A INC R0 INC DPTR DJNZ R2,A3 DO: LJMP DO END ;部存储器数据块赋值,搬运数据块到外部存储器,再搬运回部数据存储器。 五、附加题 1.将光标移到想要暂停的地方,MOV R0,#20H所在行,选择“执行到光

2.在MOV R0,#0A0H行设置断点,全速执行,暂停后观察并记录以下单元容 3.

微机原理与接口技术实验报告

微机原理与接口技术》 上机报告 学院:机电学院指导教师:胡勇学号:631424210229 姓名:鞠其林

实验一初级程序的编写与调试实验 、实验目的 1、熟练掌握DEBUG的常用命令,学会用DEBUG调试程序. 2、深入了解数据在存储器中的存取方法, 及堆栈中数据的压入与弹出 3、掌握各种寻址方法以及简单指令的执行过程. 二、实验内容 1、设堆栈指针SP=2000H,AX=3000H,BX=5000H请, 编一程序段将AX的内容和BX 的内容进行交换. 请用堆栈作为两寄存器交换内容的中间存储单元, 用DEBUG调试程序进行汇编与调试. 程序: MOV AX,3000 MOV BX,5000 MOV SP,2000 PUSH AX PUSH BX POP AX POP BX HLT

2、设AX=0002H,编一个程序段将AX的内容乘10, 要求用移位的方法完成程序: MOV AX,0002 MOV BX,AX MOV CL,2 SHL AX,CL ADD AX,BX MOV CL,1 SHL AX,CL HLT

三、心得体会 从这个程序的编辑过程中我感受到了汇编语言的强大,很直观的就可以读懂程 序的含义,但代码比较难记,而且语法严谨,我调试的过程中犯了一点错误, 修改的次数较多,希望我以后可以不再犯同样的错误,也是因为我练的比较的 少,还很生疏,我以后一定多加练习,把汇编学好 实验二 加法及判断程序的编写与调试 、实验目的 1、熟练掌握编写汇编语言源程序的基本方法和基本框架 2、学会编写顺序结构 , 分支结构和循环结构的汇编程序

3、掌握程序中数据的产生与输入输出的方法. 二、实验内容 1、用汇编语言编写一个加法程序: 1325+9839 请用ASCII 码的形式将加数与被加数存放在数据区DATA1和DATA2中, 并将相加结果显示输出. 程序: DATA SEGMENT DATA1 DB '5','2','3','1' DATA2 DB '9','3','8','9' DATA ENDS STACK SEGMENT PARA STACK 'STACK' DB 200 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV AX,STACK MOV SS,AX LEA SI,DATA1 LEA DI,DATA2 MOV CX,4 MOV AH,0 NEXT: MOV AL,[SI] ADC AL,[DI] ADC AL,AH MOV AH,0 AAA ADD AL,30H MOV [DI],AL INC DI INC SI LOOP NEXT MOV CX,5 ADD AH,30H MOV [DI],AH NEXT1:MOV DL,[DI] MOV AH,02 INT 21H DEC DI

微机原理上机实验报告3

201406 微机原理上机实验报告 实验三 班级:物联网1班 姓名:邓笑游 学号: 01210261y11 成绩:

实验3:8086 典型习题的上机求解实验 一、实验目的 1、了解8086指令的特点。 2、学会用Debug和源程序的上机方法求解作业答案的方法。 二、预习要点 1、习题的现场 2、选用工具的方法 三、实验项目 在DOS下利用Debug调试工具和MASM、LINK工具和模版验证求解典型习题的答案。 四、实验设备环境 PC机1台,DOS操作系统,Debug调试工具 五、实验方法 1.现有数据段如下: DAT1 SEGMENT ORG 0020H A1 DW 12H , 23H A2 DB 11H , 21H A3 EQU 1234H A4 EQU $+8 A5 DW 31H , A2 DAT1 ENDS 该数据段占有多少字节的存储空间?A5的偏移地址是何值?A4的值是多少? 2.若48H和93H是无符号数。 SOUR DB 48H,93H MZ DB ?

MOV AL,SOUR CMP AL,SOUR+1 JA K1 MOV AL,SOUR+1 K1: MOV MZ,AL 试问:①(MZ)=_____________ ②48H和93H是有符号数,JA K1指令应改为什么指令? 3.编程序统计某班100个学生英语考试分数高于等于85分以上的人数,结果存入MN字节中。 六、实验要求 将习题1、2、3改造上机求解答案

实验3报告习题1的上机源程序 习题1的汇编、链接

习题1的代码段 已看到答案,该数据段占有10个字节的存储空间?A5的偏移地址是0026H?A4的值是002EH 习题2的源程序

8086微机原理及接口技术实验教程(2017)

8086微机原理及接口技术 实验教程 合肥工业大学电气与自动化系

1 实验一 系统认识与存储器扩展实验 1.1 TD-PITE 实验装置简介 1.1 TD-PITE 功能特点 系统以具有PC104总线接口的i386EX 单板机和一个开放的微机接口教学实验平台,通过PC104总线组合插接方式构成的高性能80x86微机原理与接口技术教学实验系统,全面支持80x86实模式和保护模式的16/32位微机原理及接口技术的实验教学。开放的80386系统总线,不仅可以进行各种接口实验的学习,还可以进行基于386微处理器的嵌入式应用开发。I386EX 是一款嵌入式微处理器,其在Intel 386SX 微处理器的基础上集成了丰富的外围接口(如8259、8254、16C450和8237等),内部为32位总线,外部为16位数据总线,具有64MB 的寻址能力,保持与标准的32位80386CPU 相同的指令系统,可完全支持80X86微机原理及接口技术课程的教学,使教学内容与主流技术相一致,达到学以致用的目的。 系统提供开放的386系统总线,使用户可以充分学习并掌握系统总线的特点及操作方法。实验平台上提供丰富的实验单元,如中断控制器8259、DMA 控制器8237、定时/计数器8254、并行接口8255、串行通信接口8251、SRAM 、ADC0809、DAC0832、单次脉冲、键盘扫描及数码管显示、开关输入及发光管显示、电子发声器、点阵LED 显示、图形LCD 显示、步进电机、直流电机及温度控制单元电路。 1.2 TD-PITE 系统构成 TD-PITE 是一套80X86微机原理及接口技术实验教学系统,其主要系统构成如表1.1 所示。 表1.1 TD-PITE 系统构成

微机原理实验报告

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

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在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

微机原理与应用实验报告_2(汇编语言源程序的建立调试和运行)

西华大学实验报告 西华大学实验报告(理工类) 开课学院及实验室:电气信息学院6A-217 实验时间:年月日 装 订 线

五、实验过程记录(数据、图表、计算等) assume ds:data,cs:code,es:data data segment buffer1 db 1,2,3,4,5 ;定义字节 buffer2 db 6,7,8,9,0 ;定义字节 buffer3 db 100 dup(?) ;定义字节 data ends code segment main proc far begin: push ds mov ax,0000h push ax mov ax,data mov ds,ax ;初始化 mov es,ax lea si,buffer1 ;将buffer1的地址送给si lea bx,buffer2 ; 将buffer2的地址送给bx add bx,4 ;bx+4 code segment mainproc far assume cs:code go: mov si,300h ;将300h 给si mov di,400h ;将400h 给di mov cx,50 ;将50给cx next:mov al,[si] ;将[ds]:[si]处内存给al mov [di],al ;将al 送到ds:[di]处 inc di ;di+1 dec cx ;cx-1 jnz next ;cx 不到0,跳到next mov si,300h ;再将si 给300h mov cx,50 ;cx 赋予50 cld ;清除方向标志位 next1: lodsb ;将si 处内存读到al mov bl,al ;将al 复制到bl push cx ;cx 入栈 lea di,buffer3 ;将buffer2的地址送给bx mov cx,5 ;循环次数 m: mov al,[si] ;将ds:[buffer1]处的值给al add al,[bx] ;al=al+ds:[buffer2+4] mov [di],al ;将al 送给ds[buffer3]处 inc si ;si+1 dec bx ;bx-1 inc di ;di+1dec cx ;cx-1 jnz m ;cx>=0 则在m 处循环 mov ah,4c ;结束 int 21h ret main endp code ends end begin end

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