微机原理综合实验报告

微机原理综合实验报告
微机原理综合实验报告

滨江学院

微机原理综合实验

实验报告

学生姓名

学号

专业信息工程

班级2016级

二O一八年十二月三十日

微机原理综合实验

实验一利用DEBUG调试程序调试程序段

1、实验目的

1)熟悉DEBUG有关命令的使用方法。

2)利用DEBUG掌握有关指令的功能。

3)利用DEBUG运行简单的程序段。

2、实验内容

1)进入和退出DEBUG程序。

2)学会DEBUG中的D命令、E命令、R命令、T命令、A命令、G命令等的使用。对于U命令、N命令、W命令等,也应试一下。

3)利用DEBUG,验证乘法、除法、加法、减法、带进位加、带借位减、堆栈操作指令、串操作指令的功能。

3、实验准备

1)仔细阅读有关DEBUG命令的内容,对有关命令,都要事先准备好使用的例子。2)作为例子,准备用A命令,输入在显示器上显示字符“S”的系统调用程序段。3)阅读将AX左移9位的程序段。

4、实验步骤

1)在DOS提示符下,进入DEBUG程序。

2)在DOS目录下启动DEBUG。

3)详细记录每一步所用的命令,以及查看结果的方法和具体结果。

5、实验报告要求

1)如何启动和退出DEBUG程序。

2)整理每个DEBUG命令使用的方法,实际示例及执行结果。

3)启动DEBUG后,要装入某一个.EXE文件,应通过什么方法实现?

实验结果:

实验二分支程序实验

1、实验目的

1)掌握分支程序的设计方法。

2)掌握利用DEBUG修改参数、检查结果的方法。

3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。

2、实验内容

1)编写一个程序,显示AL寄存器中的两位十六进制数

2)编写一个程序,判别键盘上输入的字符;若是1-9字符,则显示之;若为A-Z 或a-z字符,均显示“c”;若是回车字符(其ASCII码为0DH),则结束程序,若为其它字符则不显示,继续等待新的字符输入。

3、实验准备

1)编写实验内容要求的两个程序。

2)写出调试以上程序,即修改程序参数,检查结果的操作方法。

3)熟悉源程序汇编、连接命令的使用方法即要回答的内容。

4、实验步骤

1)用EDIT或其它编辑软件,编写.ASM源程序,例如HEXASC.ASM及DSPKEY.ASM。2)对其进行汇编及连接,产生.EXE文件。

13

3)对.EXE文件进行调试运行。

(1)用DEBUG调试运行,学会修改AL内容的方法。

(2)对DSPKEY.EXE键入不同的字符,分别进行调试。

(3)在MS-DOS下运行这两个.EXE文件。

5、实验报告要求

1)画出两个程序的流程图,若要独立编写程序,应列出相应的程序清单。

2)说明本实验是如何利用DEBUG进行调试的。

6、参考程序清单

1)显示AL中两位十六进制数程序:

;DISPHEX.ASM

CODE SEGMENT

ASSUME CS:CODE

START: MOV AL,3EH

MOV BL,AL

MOV DL,AL

MOV CL,4

SHR DL,CL

CMP DL,9

JBE NEXT1

ADD DL,7

NEXT1: ADD DL,30H

MOV AH,2

INT 21H ;显示高位ASCII码MOV DL,BL

AND DL,0FH

CMP DL,9

JBE NEXT2

ADD DL,7

NEXT2: ADD DL,30H

MOV AH,2

INT 21H ;显示低位ASCII码MOV AH,4CH

INT 21H

CODE ENDS ;返回DOS

END START

2)显示键入字符程序

;DISPKEY.ASM

CODE SEGEMENT

ASSUME CS:CODE

START: MOV AH,1

INT 21H ;等待键入字符,送AL CMP AL,0DH ;是否是回车符?JZ DONE ;是则转DONE退出程序CMP AL,’0’

JB NEXT

CMP AL,’9’

JA CHARUP

实验结果:MOV DL,AL

MOV AH,2

INT 21H

JMP START CHARUP: CMP AL,41H JB NEXT

CMP AL,5AH

JA CHRDN DISPC: MOV DL,’C’MOV AH,2

INT 21H

NEXT: JMP START CHRDN: CMP AL,61H JB NEXT

CMP AL,7AH

JA NEXT

JMP DISPC DONE: MOV AH,4CH INT 21H

CODE: ENDS

END START

实验三循环程序实验

1、实验目的:

1)掌握循环程序的设计方法

2)进一步熟悉利用DEBUG程序修改参数的方法,并检查和验证结果的正确性。3)学会针对不同的问题,选用不同的组织循环的方法。

2、实验内容

1)将字符串STRN(以“$”结尾)中的每一个字符均加上偶校验位,并统计有多少个字符因含有奇数个“1”而加上了校验位。统计结果存于N单元中。

2)存储单元DAT1及DAT2中各有10字节的二进制数,高位字节放在高位地址中。试编写一程序将这两个数据相加,结果存放在从DAT3开始的单元中。并思考减法和BCD码的运算程序的编写。

3、实验准备

1)预习循环程序的两种基本结构及应用场合,学会正确地组织循环。

2)写出实验程序清单,并画出程序流程图。

3)思考用不同的程序去实现同一个功能。

4、实验步骤

1)编写、汇编和连接源程序,产生可执行的.EXE文件

2)程序调试成功后,修改有关参数进行调试运行并验证结果的正确性。

3)对多字节二进制数加法,用另一个程序加以实现。

5、实验报告要求

1)画出两个程序的流程图,独立编写程序,列出相应的程序清单。

2)总结循环程序的结构和组织循环的方法。

6、参考程序清单

1)偶校验程序清单:

;EX56.ASM

DESG SEGMENT

STRN DB ‘ASCDEfghijkLMNOPQuvw’,‘$’N DB ?

DSEG ENDS

ASSUME CS: CSEG SEGMENT START CSEG, DS: DSEG

: MOV AX, DSEG

MOV DS, AX

LEA SI, STRN MOV DL, 0 AGAIN: MOV AL, [SI] CMP AL, ‘$’

JE DONE

TEST AL, 0FFH

JPE NEXT

OR AL, 80H

MOV [SI], AL

INC DL

NEXT: INC SI

JMP AGAIN DONE: MOV N, DL MOV AH, 4CH INT 21H CSEG ENDS END START

;以上是条件控制的循环。因为事先不知道字符串STRN共有多少字符,故采用条件控制的循环程序实现。

2)加法程序清单:

;ADDHEX.ASM

CODE SEGMENT ASSUME CS: CSEG, DS: DSEG START: MOV AX, CS

MOV DS, AX

LEA SI, DAT1

LEA DI, DAT2

LEA BX, DAT3

MOV CX, 10

XOR AL, AL ;0→CF AGAIN: MOV AL, [SI]

ADC AL, [DI]

MOV [BX], AL

INC SI INC DI

INC BX

LOOP AGAIN

MOV AH, 4CH

INT 21H

DAT1 DB 70H, 80H, 90H, A0H, A1H, A2H, A3H

DB 74H, 65H, 56H

DAT2 DB 45H, 67H, 89H, 1AH, 2BH, 3CH DB 4DH, 5EH, 6FH, 04H

DAT3 DB 10 DUP(?)

CODE ENDS

END START

;本程序中,DS及CS同处一个逻辑段CODE中,所以,应将CS值送至DS中。实验结果:

实验四子程序实验

1、实验目的

1)掌握主程序与子程序之间的调用关系及调用方法。

2)掌握子程序调用过程中近程调用与远程调用的区别。

3)掌握通过堆栈转送参数的方法。

2、实验内容

1)将BUF开始的10个单元中的二进制数转换成两位十六进制数的ASCII码,在屏幕上显示出来。要求码型转换通过子程序HEXAC实现,在转换过程中,通过子程序DISP实现显示。

2)编写一个主程序,从键盘接收若干个字符,然后用远调用的方法,调用子程序统计字符串中字符’b’的个数.子程序的参数是字符串的首地址TABLE,字符串长度N及字符”b”.子程序返回字符"b”的个数.参数传送采用堆栈实现.主程序在子程序返回后,显示字符”b”及其个数(设为一位十六进制数)。

3、实验说明

1)第一个实验程序用子程序的近程调用实现。由于在调用HEXASC子程序时,子程序又调用了DISP子程序,这叫子程序的嵌套调用。实验过程中可以从堆栈的内容看到两个子程序的返回地址值。由于是近调用,地址值只包括返回地址的段内偏移量。在每个子程序的执行中,检查CS值是不变的。

2)第二个程序是利用远调用的方法调用子程序的。在远调用情况下,主程序与子程序处在不同的逻辑代码段中,可在子程序执行中查看CS值,它与主程序中的CS值是不同的。子程序调用后,堆栈中保留了返回地址的段地址及段内偏移量。

3)第二个程序中,主程序与子程序之间参数的传送是由堆栈实现的。一段是将参数(此处是串首址TABLE,串的长度N及待统计的字符“b”)顺序压如堆栈,在子程序调用后,通过BP指针对堆栈中的参数访问,并将统计的结果通过堆栈返回。有关该方法的原理此处不再介绍。

4、实验准备

1)预习子程序设计的基本方法,根据实验内容要求,画出子程序及主程序的流程图。

2)熟悉键盘键入字符串及用堆栈传送参数的程序段编制方法。

5、实验步骤

1)编辑、汇编两个源程序,生成相应的可执行文件(.EXE)。

2)用DEBUG的R 命令,T 命令或G命令和D命令检查远程调用及近程调用时堆栈的变化。特别是通过堆栈传送的参数和子程序取出的参数是返回参数的详细

过程。

3)检查程序执行的结果是否正确。

6、实验报告要求

1)分析远程调用与近程调用的区别,在用DEBUG有关命令观察时,执行过程有何不同。

2)说明用堆栈传送参数的过程及其具体方法。

3)分析实验结果及所遇到问题,并说明解决的方法。

7、参考程序清单

1)码型转换程序清单:

;CONV.ASN

DATA SEGMENT

BUF DB 0ABH,0CDH,0DEH,01H,02H,03H DB 3AH,4BH,5CH,6FH

DATA ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START: MOV AX,DATA

MOV DS,AX

MOV CX,10

LEA BX,BUF

AGAIN: MOV AL, [BX]

CALL HEXASC

INC BX

LOOP AGAIN

MOV AH,4CH

INT 21H

HEXASC PROC NEAR

MOV DL,AL

PUSH CX MOV CL,4

SHR DL,CL

POP CX

CALL DISP ;显示高位HEX数MOV DL,AL

AND DL,0FH

CALL DISP

RET

HEXASC ENDP

DISP PROP

CMP DL,9

JBE NEXT

ADD DL,7

NEXT: ADD DL,30H

MOV AH,2

INT 21H ;显示

RET

DISP ENDP

CODE ENDS

END START

2)统计并显示某键入字符的个数的程序:

:COUNTER.ASM

DATA SEGMENT

CHAR DB ‘b’

BUF DB 50H, ? 50H DUP(?) DATA ENDS MCODE SEGMENT ASSUME CS: MCODE, DS: DATA START: MOV AX,DATA

MOV DS,AX

LEA DX,BUF

MOV AH,9

INT 21H

LEA SI BUF

MOV CL, [SI+1]

MOV CH, 0 ;CX中为字符串长度INC SI

INC SI ;SI指向串首址TABLE MOV AL,CHAR

MOV AH,0 ;AX中为待查字符PUSH SI

PUSH CX

PUSH AX ; 参数送堆栈

18

CALL CHECK

POP AX ;统计个数在AL中MOV DL,CHAR

MOV AH,2

INT 21H

MOV DL,AL

AND DL, 0FH

CMP DL,9

JBE NEXT

ADD DL,7

NEXT: ADD DL,30H

MOV AH,2 INT 21H ;显示统计个数MOV AH,4CH

INT 21H

M CODE ENDS SCODE SEGMENT ASSUME CS:SCODE CHECK PROC FAR PUSH BP

MOV BP,SP

MOV SI,[BP+10]

MOV CX,[BP+8]

MOV AX,[BP+6]

XOR AH,AH AGAIN: CMP AL,[SI] JNE NEXT1

INC AH

NEXT1: INC SI

LOOP AGAIN

MOV AL,AH

MOV [BP+10],AX POP BP

RET

CHECK ENDP

END START

实验结果:

实验五字符处理程序实验

1、实验目的

1)熟悉串操作指令的功能与应用。

2)掌握串操作指令的寻址方式及使用方法,编写常用的字符串处理程序。

2、实验内容

1)字符串统计。自STRN开始的存储区中,有一个字符串,统计其中含有小写字母的个数,将统计结果以两位十进制数显示在屏幕上。

19

2)在给定的字符串中,删除重复的字符,其余的字符向前递补。

3、实验准备

1)熟悉字符处理的方法和字符处理程序的设计。

2)认真预习有关串操作的指令极其寻址方式的特点,能够正确使用串操作指令,并准备好数据。

3)按正常的方法将删除字符程序编成子程序,规定子程序的入口和出口参数。

4、实验步骤

1)用1号系统调用从键盘键入一个字符串,然后统计其中小写字母的个数。程序每次执行,都能得到不同的结果。

2)实验2可参考教材的解法,但要编写一个在同一个字符串中删除字符,并将其余字符向前递补的程序。

5、实验报告要求

1)对照参考程序,画出程序流程图。

2)总结字符串处理的编程方法,提出改进和完善此类程序的设计方案。

6、参考程序清单

1)统计小写字母个数的程序清单:

;COUNTDC.ASM

DATA SEGMENT

STRN DB 80 DUP(?) DATA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DATA START: MOV AX, DATA MOV DS, AX

LEA DI, STAN

MOV CL, 0 AGAIN: MOV AH, 1 INT 21H

CMP AL,0DH

JZ DONE

MOV [DI],AL

INC DI

INC DL

JMP AGAIN DONE: LEA SI,STRN MOV CH,0

MOV BL,0

CLD

CYCLE: LODSB

CMP AL,61H

CMP AL,7AH

JA NEXT 20

INC BL

NEXT: LOOP CYCLE

MOV AL,BL

MOV AH,0

MOV CL,10

DIV CL ;十位数在AL中,个位数在AH中

XCHG AH,AL ;以下显示两位十进制数MOV DL,AH

OR DL,30H INT 21H MOV DL,AL OR DL,30H MOV AH,2 INT 21H MOV DL,AL OR DL,30H INT 21H MOV DL,AL OR DL,30H INT 21H MOV AH,4CH INT 21H CODE:ENDS END START

2)删除字符串中重复字符的源程序清单:

;DELD.ASM

DATA SEGMENT

STAN DB 80 DUP(?)

LEN DB ?

DATA ENDS

CODE SEGMENT

ASSUME CS: CODE,DS: DATA,ES: DATA ATART: MOV AX, DATA

MOV DS,AX

MOV ES,AX

LEA SI,STRN

MOV CL,0

AGAIN: MOV AH,1

INT 21H

CMP AL,0DH

JZ DONE

MOV [SI],AL

INC SI INC CL 21

JMP AGAIN

DONE: MOV CH,O

MOV LEN,[CL]

REPEAT: PUSH SI

PUSH CX ;CX为内循环记数

PUSH CX ;DX为外循环记数

POP DX

DEC CX

JE NEXT1 ;是最后一个字符,不再查找重复字符

MOV AL,[SI]

CMP AL,0

JE NEXT1

COMP: INC SI

CMP AL,[SI]

JNE GOON ;为非重复字符

MOV BUTE PTR[SI],0

GOON: LOOP COMP ;查出与该字符重复的所有字符,并用0替换

NEXT1: POP DX

POP SI

DEC DX`

JNZ REPEAT ;对所有重复字符都进行查找

LEA SI,STRN ;删除重复字符

MOV CL,LEN

MOV CH,0

CYCLE: MOV AL,[SI]

CMP AL,0 ;是重复字符吗?

JNZ NEXT ;不是,查找下一个字符DEC CX ;递补字串长度送CX

JZ DONE ;若是最后字符不递补CALL DELE ;删除该空字符并递补DEC SI ;对递补子串从头处理NEXT: INC SI

LOOP CYCLE

MOV AH,4CH

INT 21H

DELE PROC

PUSH SI

PUSH CX

CLD

MOV DI,SI ;空字符处为目的首址INC SI ;下一个地址为源串首址REP MOVSB

POP CX

POP SI 22

RET

DELE ENDP

CODE ENDS

END START

实验结果:

实验六DOS有关输入/输出的功能调用

1、实验目的

1)掌握DOS功能调用的设计方法。

2)掌握利用DEBUG修改参数、检查结果的方法。

3)掌握汇编语言源程序的编辑、汇编、连接及调试过程。

2、实验内容

1) 编程实现从键盘接受一个字符串,再从键盘接受一查找的字符(例如’g’),找到时提示’Yes,found !’,找不到时提示’No found !’。

2) 信息检索:已知有10组等长字符串,编程实现当用户输入0—9之间的任一数字时,输出对应的字符串。

3、实验准备

1)编写实验内容要求的程序。

2)写出调试以上程序,即修改程序参数,检查结果的操作方法。

3)熟悉在DOS下有关输入输出的功能调用。

4、实验步骤

1)用EDIT或其它编辑软件,编写.ASM源程序。

2)对其进行汇编及连接,产生.EXE文件。

3)对.EXE文件进行调试运行。

5、实验报告要求

1)画出程序的流程图,应列出程序清单。

2)说明本实验调试结果。

6、参考程序

DATA SEGMENT

STRBUF DB ‘Please input a string :’,’$’

KEYLEN DB 64

KEYNUM DB ?

KEYBUF DW 64 DUP(?)

DATA ENDS

STACK SEGMENT

DB 100 DUP(0)

TOP DW ?

STACK ENDS

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

MOV AX,DATA

MOV DS,AX

MOV AX,STACK

MOV SS,AX 23

MOV SP,OFFSET TOP

LEA DX,STRBUF

MOV AH,9

INT 21H ;显示一个字符串

LEA DX,KEYLEN

MOV AH,0AH

INT 21H ;从键盘接受一个字符串

CALL CRLF ;输出回车换行

MOV BL,KEYNUM ;得到实际输入的字符数

MOV BH,0

ADD BX,DX

MOV BYTE PTR[BX],’$’;在字符串末尾添一个‘$’MOV AH,9

INT 21H ;显示从键盘接受的字符串

CALL CRLF

MOV AH,4CH

INT 21H

CRLF PROC NEAR

PUSH AX

PUSH DX

MOV DL,0DH

MOV AH,2

INT 21H

MOV DL,0AH

MOV AH,2

INT 21H

POP DX

POP AX

RET

CRLF ENDP

CODE ENDS

END START

实验结果:

实验七 8255并行I/O 扩展实验

一、 实验要求

利用 8255可编程并行口芯片,实现输入、输出实验,实验中用 8255PA 口作读取开关状态输入,8255PB 口作控制发光二极管输出 二、 实验目的

1、了解 8255芯片结构及编程方法。

2、了解 8255输入、输出实验方法。 三、 实验电路及连线 1、Proteus 实验电路 2、硬件验证实验

四、 实验说明

1、8255A 芯片简介:8255A 可编程外围接口芯片是INTEL 公司生产的通用并行接口芯片,

它具有A 、B 、C 三个并行接口,用+5V 单电源供电,能在以下三种方式下工作: 方式 0:基本输入/ 输出方式 方式 l :选通输入/ 输出方式 方式 2:双向选通工作方式

2、使8255A 端口A 工作在方式0 并作为输入口,读取Kl-K8 个开关量,PB

工作在方式0

作为输出口。

五、实验步骤

1、Proteus 仿真

a.在Proteus 中打开设计文档8255_STM.DSN;

b.建立实验程序并编译,仿真;

c.如不能正常工作,打开调试窗口进行调试。参考程序:

CODE SEGMENT ;

ASSUME CS:CODE

IOCON EQU 8006H

IOA EQU 8000H

IOB EQU 8002H

IOC EQU 8004H

START:

MOV AL,90H

MOV DX,IOCON

OUT DX,AL

NOP

START1: NOP

NOP

MOV AL,0

MOV DX,IOA

IN AL,DX

NOP

NOP

MOV DX,IOB

OUT DX,AL

JMP START1

CODE ENDS

END START

实验结果:

实验八可编程定时/计数器8253 实验

一、实验要求

利用8086 外接8253 可编程定时/计数器,可以实现方波的产生。

二、实验目的

1、学习8086 与8253 的连接方法。

2、学习8253 的控制方法。

3、掌握8253 定时器/计数器的工作方式和编程原理

三、实验电路及连线

1、Proteus 实验电路

四、实验说明

8253 芯片介绍

8253 是一种可编程定时/计数器,有三个十六位计数器,其计数频率范围为0-2MHz,用+5V 单电源供电。

8253 的功能用途:

⑴延时中断⑸实时时钟

⑵可编程频率发生器⑹数字单稳

⑶事件计数器⑺复杂的电机控制器

⑷二进制倍频器

8253 的六种工作方式:

⑴方式0:计数结束中断⑷方式3:方波频率发生器

⑵方式l:可编程频率发生⑸方式4:软件触发的选通信号

⑶方式2:频率发生器⑹方式5:硬件触发的选通信号

五、实验步骤

1、Proteus 仿真

a.在Proteus 中打开设计文档“8253_STM.DSN”;

b.建立实验程序并编译,仿真;

c.如不能正常工作,打开调试窗口进行调试。

参考程序:

CODE SEGMENT ;H8253.ASM

ASSUME CS:CODE

START: JMP TCONT

TCONTRO EQU 0A06H

TCON0 EQU 0A00H

TCON1 EQU 0A02H

TCON2 EQU 0A04H

TCONT: MOV DX,TCONTRO

MOV AL,16H ;计数器0,只写计算值低8 位,方式3,二进制计数OUT DX,AL

MOV DX,TCON0

MOV AX,20 ;时钟为1MHZ,计数时间=1us*20=20us,输出频率50KHZ OUT DX,AL

JMP $

CODE ENDS

END START

实验结果:

实验九可编程串行通信控制器8251A实验

一、实验要求

利用8086 控制8251A 可编程串行通信控制器,实现向PC 机发送字符串“WINDWAY TECHNOLOGY!”。

二、实验目的

1、掌握8086 实现串口通信的方法。

2、了解串行通讯的协议。

3、学习8251A 程序编写方法。

三、实验电路及连线

1、Proteus 实验电路

四、实验说明

(1)8251 状态口地址:F002H,8251 数据口地址:F000H;

(2)8253 命令口地址:0A006H,8253 计数器0 口地址:0A000H;

(3)通讯约定:异步方式,字符8 位,一个起始位,一个停止位,波特率因子为1,波特率为19200;

(4)计算T/RXC,收发时钟fc,fc=1*19200=19.2K;

(5)8253 分频系数:计数时间=1us*50 =50 us 输出频率20KHZ,当分频系数为

52 时,约为19.2KHZ

五、实验步骤

1、Proteus 仿真

a.在Proteus 中打开设计文档“8251A_STM.DSN”;

b.建立实验程序并编译,仿真;

c.如不能正常工作,打开调试窗口进行调试。

参考程序:

CS8251R EQU 0F080H ; 串行通信控制器复位地址

CS8251D EQU 0F000H ; 串行通信控制器数据口地址

CS8251C EQU 0F002H ; 串行通信控制器控制口地址

TCONTRO EQU 0A006H

TCON0 EQU 0A000H 开始设置8253 工作方式,启动送“WINDWAY TECHNOLOGY”

CODE SEGMENT

ASSUME DS:DATA,CS:CODE

START:

MOV AX,DATA

MOV DS,AX

MOV DX,TCONTRO ;8253 初始化

MOV AL,16H ;计数器0,只写计算值低8 位,方式3,二进制计数

OUT DX,AL

MOV DX,TCON0

MOV AX,52 ;时钟为1MHZ,计数时间=1us*50 =50 us 输出频率20KHZ

OUT DX,AL

NOP

NOP

NOP

; 8251 初始化

MOV DX, CS8251R

IN AL,DX

NOP MOV DX, CS8251R

IN AL,DX

NOP

MOV DX, CS8251C

MOV AL, 01001101b ; 1 停止位,无校验,8 数据位, x1

OUT DX, AL

MOV AL, 00010101b ; 清出错标志, 允许发送接收

OUT DX, AL

START4:MOV CX,19

LEA DI,STR1

SEND: ; 串口发送' WINDWAY TECHNOLOGY '

MOV DX, CS8251C

MOV AL, 00010101b ; 清出错,允许发送接收

OUT DX, AL

WaitTXD:

NOP

NOP

IN AL, DX

TEST AL, 1 ; 发送缓冲是否为空

JZ WaitTXD

MOV AL, [DI] ; 取要发送的字

MOV DX, CS8251D

OUT DX, AL ; 发送

PUSH CX

MOV CX,8FH

LOOP $

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

微原硬件实验报告 班级:07118 班 学号:070547 班内序号:26 姓名:杨帆

实验一熟悉实验环境及IO的使用 一,实验目的 1. 通过实验了解和熟悉实验台的结构,功能及使用方法。 2. 通过实验掌握直接使用Debug 的I、O 命令来读写IO 端口。 3. 学会Debug 的使用及编写汇编程序 二,实验内容 1. 学习使用Debug 命令,并用I、O 命令直接对端口进行读写操作, 2.用汇编语言编写跑马灯程序。(使用EDIT 编辑工具)实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度 等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) 三,实验步骤 1.实验板的IO 端口地址为EEE0H 在Debug 下, I 是读命令。(即读输入端口的状态---拨码开关的状态) O 是写命令。(即向端口输出数据---通过发光管来查看) 进入Debug 后, 读端口拨动实验台上八位拨码开关 输入I 端口地址回车 屏幕显示xx 表示从端口读出的内容,即八位开关的状态ON 是0,OFF 是 1 写端口 输入O 端口地址xx (xx 表示要向端口输出的内容)回车 查看实验台上的发光二极管状态,0 是灯亮,1 是灯灭。 2. 在Debug 环境下,用a 命令录入程序,用g 命令运行 C>Debug -a mov dx, 端口地址 mov al,输出内容 out dx, al

mov ah, 0bh int 21h or al, al jz 0100 int 20h -g 运行查看结果,修改输出内容 再运行查看结果 分析 mov ah, 0bh int 21h or al, al jz 0100 int 20h 该段程序的作用 3.利用EDIT 工具编写汇编写跑马灯程序程序 实现功能 A.通过读入端口状态(ON 为低电平),选择工作模式(灯的闪烁方式、速度等)。 B.通过输出端口控制灯的工作状态(低电平灯亮) C>EDIT 文件名.asm 录入程序 按Alt 键打开菜单进行存盘或退出 编译文件 C>MASM 文件名.asm 连接文件 C>LINK 文件名.obj 运行文件或用Debug 进行调试。 四,程序流程图

微机原理实验报告

汇编语言程序设计实验 一、实验内容 1.学习并掌握IDE86集成开发环境的使用,包括编辑、编译、链接、 调试与运行等步骤。 2.参考书例4-8,P165 (第3版161页)以单步形式观察程序的 执行过程。 3.修改该程序,求出10个数中的最大值和最小值。以单步形式观 察,如何求出最大值、最小值。 4.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态。 二、实验目的 1.学习并掌握IDE86集成开发环境的使用 2.熟悉汇编语言的基本算法,并实际操作 3.学会利用IDE86进行debug的步骤 三、实验方法 1.求出10个数中的最大值和最小值 (1)设计思路:利用冒泡法,先对数据段的10个数字的前2个比 较,把二者中大的交换放后面。在对第二个和第三个数比较,把 二者中较大的交换放后面,依此类推直到第十个数字。这样第十 位数就是10个数里面最大的。然后选出剩下9个数字里面最大 的,还是从头开始这么做,直到第九个数字。以此类推直到第一 个数字。

(2)流程图 2.求1到100 的累加和,并用十进制形式将结果显示在屏幕上。 要求实现数据显示,并返回DOS状态

(1)设计思路:结果存放在sum里面,加数是i(初始为1),进行 100次循环,sum=sum+I,每次循环对i加1. (2)流程图: 四、 1.求出10个数中的最大值和最小值

DSEG SEGMENT NUM DB -1,-4,0,1,-2,5,-6,10,4,0 ;待比较数字 DSEG ENDS CODE SEGMENT ASSUME DS:DSEG,CS:CODE START:MOV AX,DSEG MOV DS,AX LEA SI,NUM MOV DX,SI MOV CL,9 ;大循环计数寄存器初始化 NEXT1:MOV BL,CL ;大循环开始,小循环计数器初始化MOV SI,DX NEXT2:MOV AL,[SI+1] CMP [SI],AL ;比较 JGGONE ;如果后面大于前面跳到小循环末尾CHANGE:MOV AH,[SI] ;交换 MOV [SI+1],AH MOV [SI],AL JMP GONE GONE:add SI,1 DEC BL JNZ NEXT2

微机原理课程设计 电压报警器实验报告

南通大学电子信息学院 微机原理课程设计 报告书 课题名: 班级: 姓名: 学号: 指导老师: 日期: xxx

目录 1.设计目的 (2) 2.设计内容 (2) 3.设计要求 (2) 4.设计原理 (3) 5.硬件电路图 (3) 6.程序代码 (5) 7.程序及硬件系统调试情况 (19) 8.设计总结与体会 (19) 一、设计目的

课程设计是培养和锻炼学生在学习完本门课后综合应用所学理论知识,解决实际工程设计和应用问题的能力的重要教学环节。它具有动手、动脑和理论联系实际的特点,是培养在校工科大学生理论联系实际、敢于动手、善于动手和独立自主解决设计实践中遇到的各种问题能力的一个重要教学环节。 通过课程设计,要求学生熟悉和掌握微机系统的软件、硬件设计的方法、设计步骤,使学生得到微机开发应用方面的初步训练。让学生独立或集体讨论设计题目的总体设计方案、编程、软件硬件调试、编写设计报告等问题,真正做到理论联系实际,提高动手能力和分析问题、解决问题的能力,实现由学习知识到应用知识的初步过渡。通过本次课程设计使学生熟练掌握微机系统与接口扩展电路的设计方法,熟练应用8086汇编语言编写应用程序和实际设计中的硬软件调试方法和步骤,熟悉微机系统的硬软件开发工具的使用方法。 通过课程设计实践,不仅要培养学生事实求是和严肃认真的工作态度,培养学生的实际动手能力,检验学生对本门课学习的情况,更要培养学生在实际的工程设计中查阅资料,撰写设计报告表达设计思想和结果的能力。 二、设计内容 设计一个电压报警器,要求采集实验箱提供的0~5V的电压,当输入电压在3V以内,显示电压值,如2.42。当输入电压超过3V,显示ERR,并报警。电压值可在七段数码管显示,点阵广告屏显示或液晶屏显示。报警形式自行设计,可用灯光闪烁表示,蜂鸣器鸣响报警等形式。(电压值以一种方式正确显示,无报警◆)(电压值以一种方式正确显示,且有一种形式的报警◆)(电压值以2 种方式正确显示,且有2种形式的报警★)(电压值以3种方式正确显示,且有2种形式的报警★☆) 三、设计要求 在课程设计时,2~4人一组,在教师指导下,各组可以集体讨论,但设计报告由学生独立完成,不得互相抄袭。教师的主导作用主要在于指明设计思路,启发学生独立设计的思路,解答疑难问题和按设计进度进行阶段审查。学生必须发挥自身学习的主动性和能动性,主动思考问题、分析问题和解决问题,而不应处处被动地依赖指导老师。同组同学要发扬团队协作精神,积极主动的提出问题、解决问题、讨论问题,互相帮助和启发。

微机原理实验报告

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

微机原理与单片机实验报告

北京联合大学信息学院实验报告 课程名称:微型计算机原理学号: 姓名: 2012 年 6 月 9 日

目录 实验1 EMU8086模拟器的使用 (3) 实验2 数据传送指令的使用 (5) 实验3 多位十六进制加法运算实验 (9) 实验5 循环程序实验 (11) 实验6 由1 到100 求和实验 (13) 实验7 求表中正数_负数_0 的个数实验 (14) 实验8 数据排列实验(冒泡排序) (16) 实验9 系统功能调用(大小写转换) (18) 实验10 阶乘(递归运算) (20) 实验11 ProteusIO工程文件的建立 (21) 实验12 IO口读写实验(245、373) (22) 实验13 8255 接口实验 (24) 实验14 声光报警 (25) 实验总结 (28)

实验1 EMU8086模拟器的使用 一实验要求 利用EMU8086模拟器环境,完成创建源程序文件,运行调试,实验结果的查看二实验目的: 熟悉EMU8086实验环境 三EMU8086环境: 1 模拟器编辑窗口 2 模拟器调试窗口

四实验内容 实验内容1:新建文件。 运行emu8086 1. 新建文件:单击“新建”按钮,选择COM模板,在模拟器编辑窗口中输入如下程序代码: MOV AX, 1020H MOV BX, 2030H MOV AX, BX ADD AX, BX MOV [BX], AX MOV [2032H], AX HLT 2. 编译:单击“编译”按钮,对程序段进行编译; 3. 保存:编译通过,单击“完成”按钮,将其以文件名“EXP1”保存在本地磁盘上。 4. 仿真:单击“仿真”按钮,打开模拟器调试窗口和源文件窗口。 5.在模拟器调试窗口中的寄存器组区,查看数据寄存器AX,BX,CX,DX;段寄存器CS,ES,SS,DS;指令指针寄存器IP;指针寄存器SP,BP;变址寄存器SI,DI;标志寄存器的值。 6.单击“单步前”按钮,单步执行程序,并观察每次单步执行后,相关寄存器值的变化。 7.单击“重载”按钮,将程序重载,并调整指令运行步进时延为400毫秒,单击“全速”按钮,运行程序, 8.程序运行之后,在程序调试窗口中,选择[view]/[memory],查看模拟器环境中,内存单元0700:0100开始的连续10个单元的内容 9.将“存储器”中的地址改为0700:2030,查看开始的四个字节的内容,并思考其内容与程序

北京邮电大学微机原理硬件实验报告

北京邮电大学微机原理硬件实验报告

实验报告一:I/0地址译码和简单并行接口 ——实验一&实验二 一、实验目的 掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。 二、实验原理及内容 a) I/0地址译码 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数 字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~ 287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔经过软件延时实现。 2、接线: Y4/IO地址接 CLK/D触发器

Y5/IO地址接 CD/D触发器 D/D触发器接 SD/D触发器接 +5V Q/D触发器接L7(LED灯)或逻辑笔 b) 简单并行接口 1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273插通 用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器, 8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电 路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码经过这 个输出接口输出,根据8个发光二极管发光情况验证正确 性。 3、按下面图4-2-2简单并行输入接口电路图连接电路 (74LS244插通用插座,74LS32用实验台上的“或门”)。 74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关 输出K0~K7,8个数据输出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这 个ASCⅡ码,并将其对应字母在屏幕上显示出来。 5、接线:1)输出 按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验 台逻辑或门) 2)输入 按图4-2-2接线(图中虚线为实验所需接线,74LS32为实 验台逻辑或门) 三、硬件连线图 1、I/O地址译码

四川大学微机原理实验报告..

微机原理实验报告 学院: 专业班级: 姓名 学号

实验一汇编语言编程基础 1.3汇编语言程序上机操作和调试训练 一.功能说明 运用8086汇编语言,编辑多字节非压缩型BCD数除法的简单程序,文件名取为*.ASM。 运用MASM﹒EXE文件进行汇编,修改程序中的各种语法错误,直至正确,形成*.OBJ文件。 运用LINK.EXE文件进行连接,形成*.EXE文件。 仔细阅读和体会DEBUG调试方法,掌握各种命令的使用方法。 运用DEBUG。EXE文件进行调试,使用单步执行命令—T两次,观察寄存器中内容的变化,使用察看存储器数据段命令—D,观察存储器数据段内数值。 再使用连续执行命令—G,执行程序,检查结果是否正确,若不正确可使用DEBUG的设置断点,单步执行等功能发现错误所在并加以改正。 二.程序流程图 设置被除数、商的地址指针 设置单位除法次数计数器 取被除数一位作十进制调整 作字节除法、存商 N 被除数各位已除完? Y 显示运算结果 结束 三.程序代码 修改后的程序代码如下: DATA SEGMENT A D B 9,6,8,7,5 B DB 5 C DB 5 DUP (0) N EQU 5 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA START: MOV AX,DATA MOV DS,AX

MOV ES,AX CLD LEA SI,A LEA DI,C MOV CX,N MOV AH,0 LP1: LODSB AAD DIV B STOSB LOOP LP1 MOV CX,N LEA DI,C LP2: MOV DL,[DI] ADD DL,30H MOV AH,2 INT 21H INC DI LOOP LP2 MOV AH,4CH INT 21H CODE ENDS END START 四.实验感想和收获 通过这次试验,我对微机原理上级试验环境有了初步的认识,可以较为熟练地对汇编语言进行编译,汇编及连接,同时也学会了用DEBUG调试程序,收获很大。 在这次试验中我也遇到了一些困难。在刚开始我发现自己无法打开MASM.EXE,计算机提示是由于版本不兼容。我这才想起来我的操作系统是64位的,和该软件版本不兼容。不过我并没有放弃,经过我的摸索之后,我发现用DOSBOX这个程序可以解决我的电脑运行不了该程序的问题。在解决了第一个难题后,我开始着手改正试验1.3中的语法错误和逻辑错误,但是无论我怎么修改却始终都无法通过编译,并且基本上每句话都有编译错误。根据我多年编程的经验来看,这应该是中文输入法在搞鬼,之后我耐心地把程序重新输了一遍,果然通过了编译,并且之后的连接也进行的很顺利。在用DEBUG调试时发现得出的结果也很正确。 尽管这次的实验内容非常简单,仅仅是教会我们一些基本的操作,但我却明显感觉到了汇编语言和C语言等高级语言所不同的地方。越是底层,基础的东西就越不人性化,用C语言一行代码就能实验的功能在汇编语言中可能要花上数十行。看来汇编语言的学习不是几周就能速成的,必须要有长年累月的积淀才能掌握。

微机原理实验报告

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

微机原理实验报告材料

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

实验一 汇编语言程序设计 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的值,观察在三种不同的数据块情况下程序的运行情况,并验证程 序的功能。

北京邮电大学微机原理与接口技术硬件实验报告

信息与通信工程学院 微机原理与接口技术硬件实验报告 班级: 姓名: 学号: 序号: 日期: 2015-10-30——2015-12-26

目录 实验一I/O地址译码 (3) 一、实验目的 (3) 二、实验原理及内容 (3) 三、硬件接线图与软件程序流程图 (3) 四、源程序 (4) 五、实验结果 (5) 六、实验总结 (5) 七、实验收获与心得体会 (5) 实验二简单并行接口 (5) 一、实验目的 (5) 二、实验原理及内容 (5) 三、硬件接线图与软件程序流程图 (6) 四、源程序 (6) 五、实验结果 (7) 六、实验总结 (7) 七、实验收获与心得体会 (7) 实验四七段数码管 (7) 一、实验目的 (7) 二、实验原理及内容 (8) 三、硬件接线图与软件程序流程图 (8) 四、源程序 (9) 五、实验结果 (11) 六、实验总结 (11) 七、实验收获与心得体会 (11) 实验八可编程定时器/计数器(8253/8254) (11) 一、实验目的 (11) 二、实验原理及内容 (11) 三、硬件接线图与软件程序流程图 (12) 四、源程序 (13) 五、实验结果 (17) 六、实验总结与思考题 (17) 七、实验收获与心得体会 (17) 实验十六串行通讯8251 (18) 一、实验目的 (18) 二、实验原理及内容 (18) 三、硬件接线图与软件程序流程图 (18) 四、源程序 (19) 五、实验结果 (22) 六、实验总结与思考题 (22) 七、实验收获与心得体会 (22)

实验一 I/O地址译码 一、实验目的 掌握I/O地址译码电路的工作原理。 二、实验原理及内容 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D 触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。2、接线: Y4/IO地址接 CLK/D触发器 Y5/IO地址接 CD/D触发器 D/D触发器接 SD/D角发器接 +5V Q/D触发器接 L7(LED灯)或逻辑笔 三、硬件接线图与软件程序流程图 硬件连接图如下:

微机原理 实验报告

微机原理与接口技术 实验指导书 班级 学号099074 姓名 安徽工业大学计算机学院

实验一存贮器读写实验 一、实验内容 对指定地址区间的RAM(4000H~4FFH)先进行写数据55AAH,然后将其内容读出再写到5000H~5FFH中。 二、实验步骤 l、将实验系统与PC机连接; 2、在PC机上启功DJ-8086k软件,实验系统进入联机状态; 3、在DJ-8086k软件环境下编辑、调试程序,将程序调试、编译通过; 4、运行程序。 5、稍后按RST键退出,用存贮器读方法检查4000H~43FFH中的内容和5000~53FFH中的内容应都是55AA。 三、实验程序清单 CODE SEGMENT ; ASSUME CS:CODE PA EQU 0FF20H ;字位口 PB EQU 0FF21H ;字形口 PC EQU 0FF22H ;键入口 ORG 1850h START: JMP START0 BUF DB ,,,,, data1: db0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h,88h,83h,0c6h,0a1 h db 86h,8eh,0ffh,0ch,89h,0deh,0c7h,8ch,0f3h,0bfh,8FH START0: MOV AX,0H MOV DS,AX MOV BX,4000H MOV AX,55AAH MOV CX,0200H RAMW1: MOV DS:[BX],AX ADD BX,0002H LOOP RAMW1 MOV AX,4000H MOV SI,AX MOV AX,5000H MOV DI,AX

微机原理实验内容及实验报告模板

实验一寻址方式 班级姓名学号成绩 一、实验目的 1、学习掌握调试软件(DEBUG)的基本使用方法; 2、掌握CPU8086的寻址方式 二、实验原理 运用masm软件在PC机上调试程序。 三、实验步骤 1、运用debug命令“E 地址”按照下面给定值更改内存单元内容 2、分别执行下列指令后,填入指定寄存器的当前内容 四、实验总结

实验二标志寄存器 班级姓名学号成绩 一、验目的 a)学习掌握调试软件(DEBUG)的基本使用方法; b)了解状态标志与控制标志的特点; c)掌握算术与逻辑运算指令如何影响标志位。 二、实验原理 运用masm软件在PC机上调试程序。 三、实验步骤

实验三十进制加法运算指令 班级姓名学号成绩 一、验目的 a)学习掌握调试软件(DEBUG)的基本使用方法; b)掌握组合BCD码和非组合BCD码; c)掌握十进制加法指令。 二、实验原理 运用masm软件在PC机上调试程序。 三、实验步骤 四、实验总结

实验四DOS系统功能调用 班级姓名学号成绩 一、实验目的 a)学习掌握调试软件(DEBUG)的基本使用方法; b)掌握在汇编程序中调用DOS系统功能。 二、实验原理 运用masm软件在PC机上调试程序。 三、实验步骤 1、单个字符的输入与显示 (1) 01H号调用 功能:读取键盘字符,并回显 调用:AH?01H INT 21H 输入字符的ASCII码送入AL中。 (2) 02H号调用 功能:显示字符 调用:DL?要输出显示的ASCII字符代码 AH?02H INT 21H (3) 00H号调用 功能:结束程序 调用:AH?00H INT 21H 在DEBUG窗口中输入下面程序 MOV AH, 1 INT 21H MOV DL, AL MOV AH, 2 INT 21H MOV AH, 0 INT 21H 然后输入命令G运行程序观察结果 2、字符串的输入与显示 (1) 0AH号调用 功能:读取键盘字符到缓冲区,直至回车结束 调用:AH?0AH INT 21H

微机原理实验报告冒泡排序

一、实验目的 (1)学习汇编语言循环结构语句的特点,重点掌握冒泡排序的方法。 (2)理解并掌握各种指令的功能,编写完整的汇编源程序。 (3)进一步熟悉DEBUG的调试命令,运用DEBUG进行调试汇编语言程序。 二、实验内容及要求 (1)实验内容:从键盘输入五个有符号数,用冒泡排序法将其按从小到大的顺序排序。 (2)实验要求: ①编制程序,对这组数进行排序并输出原数据及排序后的数据; ②利用DEBUG调试工具,用D0命令,查瞧排序前后内存数据的变化; ③去掉最大值与最小值,求出其余值的平均值,输出最大值、最小值与平均值; ④用压栈PUSH与出栈POP指令,将平均值按位逐个输出; ⑤将平均值转化为二进制串,并将这组二进制串输出; ⑥所有数据输出前要用字符串的输出指令进行输出提示,所有数据结果能清晰显示。 三、程序流程图Array (1)主程序:MAIN

(2)

就是 NAME BUBBLE_SORT DATA SEGMENT ARRAY DW 5 DUP(?) ;输入数据的存储单元 COUNT DW 5 TWO DW 2 FLAG1 DW 0 ;判断符号标志 FLAG2 DB 0 ;判断首位就是否为零的标志FAULT DW -1 ;判断出错标志 CR DB 0DH,0AH,'$' STR1 DB 'Please input five numbers seperated with space and finished with Enter:','$' STR2 DB 'The original numbers:','$' STR3 DB 'The sorted numbers:','$' STR4 DB 'The Min:','$' STR5 DB 'The Max:','$' STR6 DB 'The Average:','$' STR7 DB 'The binary system of the average :','$' STR8 DB 'Input error!Please input again!''$' DATA ENDS CODE SEGMENT MAIN PROC FAR ASSUME CS:CODE,DS:DATA,ES:DATA START: PUSH DS AND AX,0 PUSH AX MOV AX,DATA MOV DS,AX LEA DX,STR1 MOV AH,09H ;9号DOS功能调用,提示输入数据 INT 21H CALL CRLF ;回车换行 REIN: CALL INPUT ;调用INPUT子程序,输入原始数据CMP AX,FAULT ;判断就是否出错, JE REIN ;出错则重新输入

微机原理硬件实验报告

微机原理课程实验报告 实验题目 简易微型计算机控制系统的设计与接口芯片的使用,8259A、8254、8255A、8251A 的联合编程。 实验目的 掌握简易微型计算机控制系统的设计和搭建的步骤和方法,理解并使用8259A、8254、8255A、8251A接口芯片进行联合编程,实现双机通讯、基本输入输出、计数\定时、中断响应的基本功能,在此基础上,达到实验设计构想。 设计思路 1. 使用两台实验装置,一台为发送机,一台为接收机,进行两机间的串行通讯。 2. 运行各自对应程序后,发送机在DOS界面下显示开始信息“START”,接收机显示程序启动、等待接受的信息“BEGUN,RECEIVING INFO”。 3. 输入控制指令“TURN”(8路LED灯轮流闪动,每次灯闪0.5s),或“BLINK”(8路LED灯一同闪动,每次灯闪0.5s),或“FORWARD”(8路LED从两边向中间闪动,每次灯闪0.5s),回车后则接收机上8路LED灯出现各自对应效果,屏幕上显示“IT’S SHOW TIME”。 4. 显示15次(1min)后,演示结束,接收机LED灯出现OVER状态(每隔一灯亮),屏幕上显示“SHOW OVER”,并将结果传回发送机,发送机屏幕上显示同样内容。 5. 按ESC键退出程序。 程序思路 分为发送机程序和接收机程序两大部分 发送机程序思路(SENDER.ASM) 1. 程序启动时显示提示信息。指令字符串、提示信息的输入、显示、存储操作采用INT 21H的DOS中断功能调用。 2. 得到指令字符串后,判断其类型后,向发送机发送指令类型,功能实现通过8251A的双机通信,S/R(发送机、接收机,下同)设置相同的波特率、数据格式(1个停止位、偶检验、字符长度8位),均允许收发数据。 3. 发送完指令类型后,开始等待接收演示结束的指令。 4. 程序结束。 综上,发送机端主要用到8255的基本输入输出、8251A的双机串行异步通信、DOS功能调用等主要功能。 接收机程序思路(RECEIVER.ASM) 接收机程序中需要用到中断处理,因此设计思路分为主程序和中断处理子程序两部分。 接收机主程序

北京邮电大学微机原理硬件实验报告

实验报告一:I/0地址译码和简单并行接口 ——实验一&实验二 一、实验目的 掌握I/O地址译码电路的工作原理;掌握简单并行接口的工作原理及使用方法。 二、实验原理及内容 a)I/0地址译码 1、实验电路如图1-1所示,其中74LS74为D触发器,可直接使用实验台上数字电路实验区的D触发器,74LS138为地址译码器。译码输出端Y0~Y7在实验台上“I/O地址“输出端引出,每个输出端包含8个地址,Y0:280H~287H,Y1:288H~28FH,……当CPU执行I/O指令且地址在280H~2BFH范围内,译码器选中,必有一根译码线输出负脉冲。 例如:执行下面两条指令 MOV DX,2A0H OUT DX,AL(或IN AL,DX) Y4输出一个负脉冲,执行下面两条指令 MOV DX,2A8H OUT DX,AL(或IN AL,DX) Y5输出一个负脉冲。 利用这个负脉冲控制L7闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。 2、接线:Y4/IO地址接 CLK/D触发器 Y5/IO地址接CD/D触发器 D/D触发器接 SD/D触发器接+5V

Q/D触发器接L7(LED灯)或逻辑笔 b) 简单并行接口 1、按下面图4-2-1简单并行输出接口电路图连接线路(74LS273 插通用插座,74LS32用实验台上的“或门”)。74LS273为八D 触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LE D显示电路L0~L7。 2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接 口输出,根据8个发光二极管发光情况验证正确性。 3、按下面图4-2-2简单并行输入接口电路图连接电路(74LS244 插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓 冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输 出端分别接数据总线D0~D7。 4、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ 码,并将其对应字母在屏幕上显示出来。 5、接线:1)输出 按图4-2-1接线(图中虚线为实验所需接线,74LS32为实验台逻辑或 门) 2)输入 按图4-2-2接线(图中虚线为实验所需接线,74LS32为实验台逻辑或 门) 三、硬件连线图 1、I/O地址译码

微机原理实验报告记录

微机原理实验报告记录

————————————————————————————————作者:————————————————————————————————日期:

微机原理实验报告 班级:自动化72 组员梁慕佳 07054031 张乐 07054033 张林鹏 07054034

实验一:8255 并行接口实验 1 实验目的 1. 学习并掌握8255 的工作方式及其应用; 2. 掌握8255 典型应用电路的接法。 2 实验设备 PC机一台,TD-PITE 实验装置一套。 3 实验内容 1. 基本输入输出实验。编写程序,使8255 的A口为输入,B口为输出,完成拨动开关到数据灯的数据传输。要求只要开关拨动,数据灯的显示就发生相应改变。 2. 流水灯显示实验。编写程序,使8255 的A口和B口均为输出,数据灯D7~D0由左向右,每次仅亮一个灯,循环显示,D15~D8与D7~D0 正相反,由右向左,每次仅点亮一个灯,循环显示。 4 实验原理 并行接口是以数据的字节为单位与I/O 设备或被控制对象之间传递信息。CPU和接口之间的数据传送总是并行的,即可以同时传递8 位、16 位或32 位等。8255可编程外围接口芯片是Intel公司生产的通用并行I/O 接口芯片,它具有A、B、C 三个并行接口,用+5V单电源供电,能在以下三种方式下工作:方式0--基本输入/输出方式、方式1--选通输入/输出方式、方式2--双向选通工作方式。8255的内部结构及引脚如图2-6-1 所示,8255工作方式控制字和C口按位置位/复位控制字格式如图2-6-2所示。 图2-6-1 8255内部结构及外部引脚图

微机原理实验模板教学内容

实验一8086指令使用 实验目的 通过实验掌握下列知识: 1、8086指令: MOV,ADD,ADC,SUB,SBB,DAA,XCHG 2、DEBUG命令: A,D,E,F,H,R,T,U。 3、BCD码,ASCII码及用十六进制数表示二进制码的方法。 4、8086寄存器: AX,BX,CX,DX,F,IP。 内容及步骤 一、DEBUG 命令使用 1、键入 DEBUG 进入 DEBUG 控制状态,显示提示符 '- '。 2、用命令 F100 10F 'A' 将'A'的ASCII码填入内存。 3、用命令 D100 10F 观察内存中的十六进制码及屏幕右边的ASCII字符。 4、用命令 F110 11F 41 重复上二项实验,观察结果并比较。 5、用命令 E100 30 31 32 …… 3F将30H-3FH写入地址为100开始的内存单元中,再用D命令观察结果,看键入的十六进制数是什么字符的ASCII码? 6、用H命令检查下列各组十六进制数加减结果并和你的手算结果比较: (1)34H,22H (2)56H,78H (3)A5,79H (4)1284H,5678H (5)A758H,347FH 7、用R命令检查各寄存器内容,特别注意AX,BX,CX,DX,IP及标志位中ZF,CF和AF的内容。 8、用R命令将AX,BX内容改写为1050H及23A8H。 二、8086常用指令练习 1、传送指令 1)用A命令在内存100H处键入下列内容: -A 0100↙ ****:0100 MOV AX,1234↙

****:0103 MOV BX,5678↙ ****:0106 XCHG AX,BX↙ ****:0108 MOV AH,35↙ ****:010A MOV AL,48↙ ****:010D MOV DX,75AB↙ ****:010F XCHG AX,DX↙ ****:0111 ↙ - 注:****为段寄存器CS的值,是由计算机生成的;↙为回车操作。 2)用U命令检查键入的程序并记录,特别注意左边的机器码。 -U 0100↙ 3)用T命令逐条运行这些指令,每运行一行检查并记录有关寄存器及IP的变化情况。并 注意标志位有无变化。 -T=0100↙ -T↙ -T↙ ┇ 2、加减法指令: 1)用A命令在内存100H处键入下列内容: MOV AH,34 MOV AL,22 ADD AL,AH SUB AL,78 MOV CX,1284 MOV DX,5678 ADD CX,DX SUB CX,AX SUB CX,CX 2)用U命令检查键入的程序及对应的机器码。 3)用T命令逐条运行这些指令,检查并记录有关寄存器及标志位的情况。 思考:这次运行还是键入T,行不行?怎么办?用R命令检查一下IP的内容。注意T命令与

相关文档
最新文档