当前位置:文档之家› 微机原理实验课程

微机原理实验课程

微机原理实验课程
微机原理实验课程

微机原理实验孝感学院电工电子实验教学中心

实验一两个多位十进制数相减实验

一、实验目的

1.学习数据传送和算术运算指令的用法。

2. 了解汇编语言的工作环境。

3.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。

二、实验内容

将两个多位十进制数(76582, 35496)相减, 要求被减数, 减数均以ASCII码形式按顺序存放在以DATAI和DATA2为首的5个内存单元中(低位在前), 求其差, 结果送回DATAI 处。修改程序求两数之和, 结果仍放回DA TAI处。

三、实验程序框图

四、实验参考程序(程序名:r1.asm)

DA TA SEGMENT

DA TA1 DB 33H,39H,31H,37H,38H ;

DA TA2 DB 36H,35H,30H,38H,32H ; MES1 DB '-','$'

MES2 DB '=','$'

DA TA ENDS

STACK SEGMENT ; STA DB 20 DUP(?)

TOP EQU LENGTH STA

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DA TA,SS:STACK,ES:DA TA START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV AX,STACK

MOV SS,AX

MOV AX,TOP

MOV SP,AX

MOV SI,OFFSET DA TA1

MOV BX,05

CALL DISPL ;

MOV AH,09H

LEA DX,MES1

INT 21H

MOV SI,OFFSET DATA2

MOV BX,05 ;

CALL DISPL

MOV AH,09H

LEA DX,MES2

INT 21H

MOV SI,OFFSET DA TA1

MOV DI,OFFSET DATA2

CALL SUBA ;

MOV SI,OFFSET DATA1

MOV BX,05 ;

CALL DISPL

MOV DL,0DH

MOV AH,02H

MOV DL,0AH

MOV AH,02H

INT 21H

INT 21H

MOV AX,4C00H

INT 21H

DISPL PROC NEAR ;

DSI: MOV AH,02

MOV DL,[SI+BX-1] ;

INT 21H

DEC BX ;

JNZ DSI

RET

DISPL ENDP

SUBA PROC NEAR

MOV DX,SI

MOV BP,DI

MOV BX,05

SU1: SUB BYTE PTR[SI+BX-1],30H

SUB BYTE PTR[DI+BX-1],30H

DEC BX ;

JNZ SU1 ;

MOV SI,DX

MOV DI,BP

MOV CX,05 ;

CLC ; SU2: MOV AL,[SI]

MOV BL,[DI]

SBB AL,BL ;

AAS ;

MOV [SI],AL ;

INC SI

INC DI ;

LOOP SU2 ;

MOV SI,DX

MOV DI,BP

MOV BX,05

SU3: ADD BYTE PTR [SI+BX-1],30H

ADD BYTE PTR [DI+BX-1],30H

DEC BX ;

RET

SUBA ENDP

CODE ENDS

END START

五、实验步骤

软件实验的源程序输入、编译、连接和可执行文件的运行方法如下:

1.打开计算机电源开关,当屏幕显示:

DOS

WINXP

时,选择WINXP,按Enter键进入Windows XP系统。

2.点击:开始\程序\附件\命令提示符,进入DOS状态;屏幕上显示DOS提示符:C:\Documents and Settings\Biuewater>

3.进入实验所需的文件夹(C:\MASM),在DOS提示符后输入如下命令:C:\Documents and Settings\Biuewater >cd\masm

C:\MASM>

4.用Q编辑软件输入源程序或打开已有的源程序,进行输入或修改:

(若要显示程序中的汉字,可先运行:tw 进入汉字系统)

C:\MASM>tw

C:\MASM>q r1.asm

源程序输入、修改好后,应存盘,存盘方法如下:

按Esc键,屏幕上方显示主菜单栏,用键盘上的左、右移动键将光标移到“Quit”上,选“eXit all files”中的“Save changes”保存文件后返回到DOS命令行。

在Windows中建立r1.asm源程序文件的方法:

打开C盘中的MASM文件夹,点右键选“新建”中的“文本文档”,然后将文件名更改为r1.asm,打开该文件即可进行程序输入、修改和存盘。

5.用MASM汇编程序编译源程序,产生扩展名为.obj的二进制目标文件,命令行格式为:masm <文件名>;

本实验应为:C:\MASM>masm r1;

(带“;”号后,程序生成目标文件时不询问目标文件名)

正常情况下,屏幕上显示以下信息:

Microsoft(R) Nacro Assembler Version 5.00 Copyright(c)

Microsoft corp 1981—1985,1987 all right reserved

0 Warning Errors

0 Severs Errors

编译无错误时,在当前文件夹中生成了一个r1.obj的目标文件。如果源文件有严重错误则不能进行汇编,必须重新对源文件进行检查、修改、编辑和存盘,然后再进行汇编。

Link连接程序把目标文件转换成可执行文件(.exe), 命令行格式为:

Link <文件名>

本实验操作应为:C:\MASM>link r1

正常情况下,屏幕上显示内容为:

Microsoft(R) overlay Linker Version 3.60 Copyright(c)

Microsoft corp 1983—1987 all right reserved

LINK: Warning: No STACK sayment

连接成功后,在当前文件夹中就生成了一个可执行文件r1.exe。如果连接失败则应再次检查、修改源程序,并重新进行汇编和连接。

7.程序的执行:产生了可执行文件后可在DOS下直接运行:

C:\MASM>r1 (运行程序时,扩展名.exe可以不输入)

记录、分析程序运行的结果。

8.退出DOS系统,返回到Windows的方法:

C:\MASM>exit

六、实验仪器

微型计算机和MASM汇编软件。

七、实验报告要求

1.实验前要充分作好实验预习,独立画出程序框图,列出源程序清单和调试步骤。

2.实验报告要按以下要求书写:

(1)程序设计说明:程序名

功能(在“;”号后给出程序段的注释)

(2)调试说明;

(3)程序使用说明;

(4)程序清单;

(5)运行结果及分析

实验二学生成绩名次表实验

一、实验目的

1. 研究循环程序的设计方法。

2. 掌握用汇编语言编写气泡排序程序的思路和方法。

3.学习用debug调试程序。

二、Debug的主要命令介绍

1.Debug程序的调用,在DOS状态下,输入如下命令:

Debug [盘符][文件夹名]

其中filename.exe是被调试的文件名,Debug将指定的文件装入内存,用户可对其进行调试。

2.Debug的主要命令

⑴反汇编命令U (Unassemble)

①格式:-U [address]

②功能:从指定地址开始反汇编32个字节,若地址省略则以上一个U命令的最后一条指令的下一个单元开始反汇编32个字节。

③例:C:\MASM>debug sw.exe

-u ;从头开始反汇编32个字节

(屏幕显示内容略)

-u ;接着上面反汇编32个字节

(屏幕显示内容略)

⑵运行命令G (go)

①格式:-G [=地址1][[地址2] [地址3]]

②功能:从地址1开始执行程序,如不指定则从当前的CS:IP开始执行。后面的均为断点地址,指令执行到断点地址时,就停止执行并显示当前寄存器及标志寄存器的内容和下一条将要执行的指令。

③例:-g

(屏幕显示内容略)

⑶显示存储单元的命令 D (dump)

①格式:-D [address] 或–D [range]

②功能:从指定地址开始显示连续80个单元的内容或显示指定范围内存单元的内容。

③例:-d 0 ;显示从0单元开始连续80个单元的内容

(屏幕显示内容略)

⑷修改存储单元内容的命令 E (edit)

①格式1:-E address [List]

格式2:-E address

②功能:格式1的功能为用给定的内容来代替指定范围单元中的内容。格式2的功能则是采用逐个单元相继修改的方法。

③例1:-d 00 10 ;显示修改前存储单元的内容

(屏幕显示内容略)

-d 00 10 ;显示修改后存储单元的内容

(屏幕显示内容略)

例2:-e29

3AFB: 0029 FF.

园点后面为修改的内容,可用显示命令查看。

-d29 2C

(屏幕显示内容略)

⑸检查和修改寄存器命令R (Regiszer)

①格式1:-R

②功能:显示所有寄存器的内容。

③例:-r

(屏幕显示内容略)

④格式2:-R register name

⑤功能:显示和修改某个寄存器的内容。

⑥例:-r ax

AX 000 ;显示原内容

:19FF ;修改

-r ax ;显示所有内容

AX 19FF

⑹跟踪命令T (Trace)

①格式:-T [=address]

②功能:从指定地址起执行一条指令后停下来并显示寄存器的内容,若未指定地址,则从当前CS:IP开始。

③例:-t

(屏幕显示内容略)

⑺退出Debug命令Q (Quit)

①格式:-Q

②功能:退出Debug ,返回DOS状态。

三、实验内容

根据提示将0~100之间的10个成绩存入首址为1000H的单元,1000H+ⅰ表示学号为ⅰ的学生成绩,编写程序能在2000H开始的区域排出名次表,2000H+ⅰ为学生号ⅰ的学生的名次,并将其显示在屏幕上。

四、实验程序框图

五、设计并调试实验程序,并查出运行结果(参考程序名:r2.asm)

CRLF MACRO

MOV AH,02H

MOV DL,0DH

INT 21H

MOV AH,02H

MOV DL,0AH

INT 21H

ENDM

DA TA SEGMENT

STUNUM EQU 10

MESS1 DB '请依次输入1-10号学生的成绩',0DH,0AH,'$'

ERROR DB '输入错误,请重新输入!',0DH,0AH,'$'

MESS2 DB '1-10号学生名次依次为:',0DH,0AH,'$'

EMARK DB ?

ORG 1000H

SCORE DB 30 DUP(?)

ORG 2000H

SEQU DB 30 DUP(?)

DA TA ENDS

STACK SEGMENT

STA DW 32 DUP(?)

TOP DW ?

STACK ENDS

CODE SEGMENT

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

START: MOV AX,DATA

MOV DS,AX

MOV ES,AX

MOV SP,TOP ;初始化

MOV AH,09H

MOV DX,OFFSET MESS1

INT 21H ;显示提示信息

MOV SI,OFFSET SCORE ;

MOV CX,STUNUM ;

MOV EMARK,0

UUU: CALL GETNUM ;

CMP EMARK,01H

JE START

MOV [SI],DL ;

MOV CX,STUNUM ;

MOV DI,OFFSET SEQU ; VVV: CALL SCAN ;

MOV AL,STUNUM ;

SUB AL,CL

INC AL ;

MOV BX,DX

MOV [DI+BX],AL ;

LOOP VVV

MOV AH,09H

LEA DX,MESS2

INT 21H

MOV CX,STUNUM ;

MOV SI,OFFSET SEQU ; WWW: MOV AL,[SI]

CALL DISPI

PUSH DX

PUSH AX

MOV AH,02

MOV DL,20H

INT 21H

POP AX

POP DX

INC SI

LOOP WWW ;

MOV AX,4C00H

INT 21H

SCAN PROC NEAR ;

;

PUSH CX

MOV CX,STUNUM ;

MOV AL,00H ;

MOV BX,OFFSET SCORE

MOV SI,BX ; CCC: CMP AL,[SI]

JAE JJJ ;

MOV AL,[SI] ;

MOV DX,SI

SUB DX,BX ;

ADD BX,DX

MOV BYTE PTR [BX],00H ;

POP CX

RET

SCAN ENDP

DISPI PROC NEAR ;

PUSH CX

MOV BL,AL

MOV DL,BL

MOV CL,04

ROL DL,CL

AND DL,0FH

CALL DISPL

MOV DL,BL

AND DL,0FH

CALL DISPL

POP CX

RET

DISPI ENDP

DISPL PROC NEAR

ADD DL,30H

CMP DL,3AH

JB DDD

ADD DL,27H

DDD: MOV AH,02H

INT 21H

RET

DISPL ENDP

GETNUM PROC NEAR ;

PUSH CX

XOR DX,DX

GGG: MOV AH,01H

INT 21H

CMP AL,0DH

JZ PPP

SUB AL,30H

JB KKK

CMP AL,09H

JMP KKK

GETS: MOV CL,04

SHL DX,CL

XOR AH,AH

ADD DX,AX

JMP GGG

KKK: MOV AH,09H

MOV DX,OFFSET ERROR

INT 21H

MOV EMARK,01H

PPP: PUSH DX

CRLF

POP DX

POP CX

RET

GETNUM ENDP

CODE ENDS

END START

六、实验步骤

1.将实验室提供的DOS系统启动软盘插入到机箱软驱中,打开计算机电源开关,当屏幕上显示:

DOS

WINXP

时,选择WINXP或DOS均可,按Enter键启动软驱,进入纯DOS系统。

源程序的输入、修改、编译和连接的方法同实验一,程序存放在C:\MASM中:(若要显示程序中的汉字,可先运行:tw 进入汉字系统)

C:\MASM>q r2.asm

C:\MASM>masm r2;

C:\MASM>link r2

运行程序:C:\MASM>r2 (运行程序时,扩展名.exe可以不输入)

根据屏幕提示,输入10人的成绩分数,记录并分析程序执行的结果。

2.用Debug命令显示、修改、调试程序:

C:\MASM>debug r2.exe (文件名应输入全名,扩展名.exe不可省略) -u

-q

七、实验仪器

实验三 双色灯实验

一、实验目的

1. 学习单板方式下扩展简单I/O 接口的方法以双色灯的使用。

2. 进一步学习微处理器的编程技术。

二、实验要求

编写程序,以8255的PA 口为输出口,控制四个双色LED 灯按要求发光。

三、实验原理

8255的工作原理:

8255有三个8位的并行口,端口既可以编程为普通I/O 口,也可以编程为选通I/O 口和双向传输口。8255为总线兼容型,可以与CPU 的总线直接接口。其中,口地址取决于片选CS 和A1、A0。 选择如下:

8255方式字选择:

工作方式 字特征位

本实验中8255编程为PB口、PC口、PA口均输出,根据8255状态控制字选择方法。8255控制字应为80H。

四、实验电路及连线图

8255的CS55片选接至适配板上138译码处的200H~207H插孔。将HK958适配板上的A0、A1、A2分别与实验平台上的地址总线A0、A1、A2连接。

五、实验说明

1. 因为本实验是模拟交通灯控制实验,所以要先了解实际交通灯的变化规律。假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1南北绿灯通车,东西红灯。过一段时间转状态2,南北绿灯闪几次转亮黄灯,延时几秒,东西仍然红灯。再转状态,东西绿灯通车,南北灯灯。过一段时间转状态4,东西绿灯闪几次转亮黄灯,延时几秒,南北仍然红灯。最后循环至状态1。

2. 双色LED是由一个红色LED管芯和一个绿色LED管芯封装在一起,公用负端。当红色正端加高电平,绿色正端加低电平时,红灯亮;红色正端加低电平,绿色正端加高电平时,绿灯亮;两端都加高电平时,黄灯亮。

六、实验参考程序

文件名:tlamp2.asm

D1 EQU 10H

D2 EQU 200H

DATA SEGMENT

PB DB ?

DATA ENDS

STACK SEGMENT STACK

STA DW 50 DUP(?)

STACK ENDS

CODE SEGMENT

ASSUME CS:CODE,DS:DATA START:

PUSH CS

POP DS

MOV DX,203H ;

MOV AL,80H

OUT DX,AL

MOV DX,200H

MOV AL,00

OUT DX,AL ;

MOV DX,200H ;

MOV AL,0F0H

OUT DX,AL

MOV BX,7FH

CALL DL Y

BG: MOV AL,01011010B ;

OUT DX,AL

MOV BX,D2

CALL DL Y

MOV CX,03H

XH1: AND AL,0F5H ;

OUT DX,AL

MOV BX,D1

CALL DL Y

OR AL,0AH ;

OUT DX,AL

MOV BX,D1

CALL DL Y

LOOP XH1

OR AL,0A0H ;

OUT DX,AL

MOV BX,D1

CALL DL Y

MOV BX,D1

CALL DL Y

MOV AL,10100101B ;

OUT DX,AL

MOV BX,D2

MOV CX,03

XH2: AND AL,0FAH

OUT DX,AL

MOV BX,D1

CALL DL Y

OR AL,05H

OUT DX,AL

MOV BX,D1

CALL DL Y

LOOP XH2

OR AL,50H

OUT DX,AL

MOV BX,D1

CALL DL Y

MOV BX,D1

CALL DL Y

JMP BG

DL Y PROC NEAR

PUSH CX

DDD: MOV CX,0FFFH

CCC: LOOP CCC

DEC BX

CMP BX,0

JNE DDD

POP CX

RET

DL Y ENDP

CODE ENDS

END STARTD1 EQU 2H

五、实验步骤

1.启动计算机,进入Windows XP系统,点击桌面上的―HK88TE‖图标,运行HKZK 系列实验机调试软件HK88TE。

2.连接电路:打开实验仪箱盖,用两端带插头的专用导线将8255扩展板上的CS55插孔与HK958适配小板上的200-207插孔相连,用三根导线将HK958适配板上的A0、A1、A2插孔分别与实验平台地址总线中的A0、A1、A2端口相连接。

3.测试串行通讯口:打开实验箱背后的电源开关,点击“调试软件的设置\通讯口”,选择COM2口,再点击“测试串口”,正常情况下,屏上应显示“测试串口通过”,点“确定”结束测试。若测试串口通不过,应检查串口数据线和电脑的串口插座,按一下小键盘上的“RST”复位键再测试。

HK88TE\88asm\tlamp2.asm,打开此文件,熟悉、修改程序。

5.编译、连接:点击HK88TE调试软件菜单栏中的“编译\编译并连接(Ctrl+F9)”,也可以点击“调试\加载调试”,完成编译和连接。

6.运行:点击菜单栏中的“调试\全速运行(F9)”,即可运行,观察并记录四只LED 双色灯的变化规律。点击“调试\退出调试”,按一下小键盘上的“RST”复位键可停止运行。

7.根据指导老师要求,修改源程序,改变双色灯的变化规律。

8.在调试选项下,选择单步调试、设置断点、全速执行等方法动态调试实验程序。

六、实验仪器

超想-3000TB单片机/微机原理与接口综合仿真实验仪,微型计算机和HK88TE调试软件。

实验四定时器/计数器实验

一、实验目的

了解8253定时器的硬件连接方法及时序关系。掌握8253的各种模式编程及原理。

二、实验内容

编程将8253定时器0设定为方式3,定时器1设定在方式2,定时器0输出作为定时器1的输入,定时器1的输出接在一个LED上,运行后可观察到该LED在不停闪烁。

三、实验原理

8253可编程计数/定时器的原理:

8253是INTEL公司微型计算机系统中的一个部件,可以将8253作为一个具有四个输入/输出接口的器件处理,其中三个是计数器,一个是可编程序工作方式的控制寄存器。其内部结构图以及8253芯片管脚图如下:

8253可编程计数/定时器编程要点;

8253 的全部功能是由CPU 编程设定的。CPU 通过输出指令给8253装入控制字,从而设定其功能。8253控制字格式如下:

各位的功能见表1~表4:

表1 SC、SC-计数器选择

8253的三个计数器是独立的16位减法计数器。计数器的工作方式由工作方式寄存器确定。计数器在编程写入初始值后,在某些方式下计数到0后自动预置,计数器连续工作。CPU访问计数器时,必须先设定工作方式控制字中的RL1、RL0位。计数器对CLK计数输入端的输入信号进行递减计数。选通信号GA TE控制计数工作的进行,其功能如表5所

微机原理及应用实验

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

微机原理学习心得

微机原理学习心得 本学期的微机原理课程即将要结束,以下是关于微机这门课程的心得体会: 初学《微机原理》时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。“麻雀虽小,五脏俱全”可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。 《微机原理》课程有许多的新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的有很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。 学习过程中,我发现许多概念很接近,为了更好的掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部

分,它与微型计算机、微型计算机系统是完全不同的概念。 在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要。在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。比如,最近闹得沸沸扬扬的珊瑚虫一案,其软件制作的核心人物就是使用汇编语言来创造闻名遐迩的QQ查IP软件-----珊瑚虫,并成立了有名的珊瑚虫工作室,其威力可见一斑。 然而,事物就是有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较复杂的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。 汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单的基础开始的。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对学习其他语言很有促进作用。 汇编语言在本学期微机学习中有核心地位。本学期微机原理课程内容繁多,我认为在学习中要考虑到“学以致用”,不能过分强调课程的系统性和基本理论的完整性,而应该侧重于基本方法和应用实例。从微机应用系统的应用环境和特点来看,微机系统如何与千变万化的外部设备、外部世界相连,如何与它们交换信息,是微机系统应用中的关键所在,培养一定的微机应用系统的分析能力和初步设计能

内蒙古工业大学微机原理实验指导答案.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、掌握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.掌握qtspim的调试技术 2.了解mips汇编语言与机器语言之间的对应关系 3.掌握mips汇编程序设计 4.了解c语言语句与汇编指令之间的关系 5.熟悉常见的mips汇编指令 6.掌握程序的内存映像 二、实验任务 用汇编程序实现以下伪代码:要求采用移位指令实现乘除法运算。 int main() { int k, y ; int z[50] ; y = 56; for(k=0;k50;k++) z[k] = y - 16 * ( k / 4 + 210) ; } 三、实验要求 1.完成汇编语言程序设计、调试、测试全过程 2.指出用户程序的内存映像,包括代码段和数据段 3.完成软件实验报告 四、实验过程 程序源代码: .data #定义用户数据段 z:.space 200 .text main: la $s0,z #$s0=addrz li $t0,0 #$s1=k=0 li $t1,56 #$s2=y=56 loop: slti $t2,$t0,50 #判断k是否小于50 beq $t2,$0,done #当k大于等于50时跳转 srl $t3,$t0,2 #k/4 addi $t3,$t3,210 #k/4+210

sll $t3,$t3,4 #16*(k/4+210) sub $t3,$t1,$t3 #y-16*(k/4+210) sw $t3,0($s0) #写进z[k] addi $s0,$s0,4 #地址移一位 addi $t0,$t0,1 #k加1 j loop #循环 done: li $v0 10 syscall 五、实验总结 通过这次实验,加深了我对理论学习的代码书写规范的理解,练习 了qtspim软件的使用,对以后的学习有很大的帮助。这次实验的内 容相对比较简单,原理容易理解,编译的过程中遇到了一点困难, 不过在同学的帮助下顺利解决了。 【篇二:微机原理与接口技术实验总结】 微机原理与接口技术实验总结 11107108徐寒黎 一、实验内容以及设计思路 1、①试编写一程序,比较两个字符串string1、 string2 所含字符 是否相同,若相同输出“match”,若不相同输出“no match”。 设计思路:定义一个数据段,在数据段中定义两个字符串作为 string1、 string2以及几个用于输入提示的和输出所需内容的字符串,定义一个堆栈段用于存放,定义代码段。关键步骤以及少量语句:第一步将string1和string2都实现用键盘输入,方法是 mov dx,offset string2 mov ah,0ah 并且显示在显示器上,显示方法将0ah改成09h,语句与上面类似。然后进行比较第一个单元, mov al,[string1+1] cmp al,[string2+1] jnz nomatch 若字符串长度不等,则直接跳转,输出输出“no match”; 若长度相等再逐个比较 lea si,[string1+2] lea di,[string2+2] mov cl,[string1+1]

微机原理实验报告

汇编语言程序设计实验 一、实验内容 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

微机原理实验

实验四:分支、循环程序设计 一. 实验目的 1.学习分支程序、循环结构程序的设计和调试方法; 2.学习子程序的定义和调试方法; 3.掌握分支、循环、子程序等程序的基本结构。 二. 实验设备 TDN 86/51或 TDN 86/88教学实验系统一台 三. 实验内容、步骤及要求 1. 设计一数据块间的搬移程序 数据块搬移的基本原则为: 对于两个分离的数据块,从首地址或从末地址开始传送均可。 对于有部分重叠的情况则: 当源数据块首地址>目的数据块首地址时,从数据块首地址开始传送数据。 当源数据块首地址<目的数据块首地址时,从数据块末地址开始传送数据。 2.求某数据区内负数的个数 设数据区的第一单元存放区内单元数据的个数,从第二单元开始存放数据,在区内最后一个单元存放结果。为统计数据区内负数的个数,需要逐个判断区内的每一个数据,然后将所有数据中凡是符号位为1的数据的个数累加起来,即得区内所包含负数的个数。 3.学生成绩名次表 将分数为1~100之间的10个成绩存入首址为3000H的单元中,3000H+I表示学号为I的学生成绩。编写程序能在3100H开始的区域排出名次表,3100H+I为学号I的学生名次。 4. 求无符号字节序列中的最大值和最小值 设有一字节序列,其存储首地址为3000H,字节数为08H。利用子程序的方法编程求出该序列中的最大值和最小值。 四. 编程练习 (A) 在3500H单元开始中输入数据:09H(数据个数)12H、80H、78H、C8H、00H、00H、FEH、99H、34H,编写程序使其能分别求出数据区中的正数和负数以及零的个数,正数的个数放在3510H单元中,负数的个数放在3511H单元中,零的个数放在3512H单元中. (B) 有三个8位二进制数连续存放在03200H开始的内存单元中,设它们之中至少有两个数是相同的。编写程序找出与另外两数不同的数,把该数所在的地址(段内偏移地址)送到03204H单元,若三个数都相同则送0FFFFH到03204H单元。 (C) 设数据段SCORE单元开始连续存放着20个学生成绩,编写程序统计其中<60,60~69、70~79、80~89,>90分数段的人数,并把统计结果存放到从TOT开始的数据块中。 (数据为:64H,61H,5DH,55H,52H,51H,44H,45H,47H,48H,4DH,4FH,3CH,3FH,40H,41H,33H,56H,59H,30H). (D) 找出一个数据块中的最大数。数据块从偏移地址3002H开始存放,数据块的长度以16位二进制形式存放在3000H、3001H单元,把找出的最大数放到3100H单元中,并把存放最大值的偏移地址存入3101H和3102H的存储单元中。假设数据块中的数都是8位无符号数。 (E) X的值(字节数)分别由3000H、3001H、3002H单元的数决定,对应的结果Y分别存放在3005H、3006H、3007H单元中,完成下列方程: A (X>0) Y= { 0 (X=0)

微机原理课程设计心得体会3篇

微机原理课程设计心得体会3篇课程设计是对课程的各个方面做出规划和安排,是连接课程基本理念和课程实践活动的桥梁。下面是为大家带来的微机原理课程设计心得体会,希望可以帮助大家。 微机原理课程设计心得体会范文1: 计算机网络的设计是一个要求动手能力很强的一门实践课程,在课程设计期间我努力将自己以前所学的理论知识向实践方面转化,尽量做到理论与实践相结合,在课程设计期间能够遵守纪律规章,不迟到、早退,认真完成老师布置的任务,同时也发现了自己的许多不足之处。 在课程设计过程中,我一共完成了11个实验,分别是1.制作直通电缆和交叉UTP、2.交换机Console口和Telnet配置、3.交换机端口和常规配置、4.虚拟局域网VLAN配置、5.路由器Console口Telnet 配置方法和接口配置、6.路由器静态路由配置、7单臂路由配置、8.动态路由协议配置、9.PPP协议配置、10路由器访问控制表(ACL)、11.网络地址转换(NAT)。 在制作直通电缆和交换UTP的实验中,我起初不能完全按照要求来剪切电缆,导致连接不通,后来在同学的帮助下,终于将实验完成。 在做到单臂路由配置和动态路由协议配置的实验,由于自身的基础知识掌握不牢,忘掉了一些理论知识,在重新翻阅课本和老师的指导之下,也成功的完成了试验。

从抽象的理论回到了丰富的实践创造,细致的了解了计算机网络连接的的全过程,认真学习了各种配置方法,并掌握了利用虚拟环境配置的方法,我利用此次难得的机会,努力完成实验,严格要求自己,认真学习计算机网络的基础理论,学习网络电缆的制作等知识,利用空余时间认真学习一些课本内容以外的相关知识,掌握了一些基本的实践技能。 课程设计是培养我们综合运用所学知识,发现、提出、分析、解决问题的一个过程,是对我们所学知识及综合能力的一次考察。随着科学技术日新月异的不断发展,计算机网络也在不断的变化发展当中,这就要求我们用相应的知识来武装自己,夯实基础,为将来走向工作岗位,贡献社会做好充分的准备。 微机原理课程设计心得体会范文2: "微机原理与系统设计" 作为电子信息类本科生教学的主要基础课之一,课程紧密结合电子信息类的专业特点,围绕微型计算机原理和应用主题,以Intelx86CPU为主线,系统介绍微型计算机的基本知识,基本组成,体系结构和工作模式,从而使学生能较清楚地了解微机的结构与工作流程,建立起系统的概念。 这次微机原理课程设计历时两个星期,在整整两星期的日子里,可以说得是苦多于甜,但是可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。以前在上课的时候,老师经常强调在写一个程序的时候,一定要事先把程序原理方框图化出来,但是我开始总觉得这样做没必

微机原理实验报告

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

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在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,查看开始的四个字节的内容,并思考其内容与程序

微机原理与接口技术试验学习总结

微机原理与接口技术试验学习总结 本学期微机原理的实验课程即将结束,关于微机原理课程实验的心得体会颇多。 初学《微机原理》时,感觉摸不着头绪。面对着众多的术语、概念及原理性的问题不知道该如何下手。在了解课程的特点后,我发现,应该以微机的整机概念为突破口,在如何建立整体概念上下功夫。“麻雀虽小,五脏俱全”,可以通过学习一个模型机的组成和指令执行的过程,了解和熟悉计算机的结构、特点和工作过程。 《微机原理》课程有许多新名词、新专业术语。透彻理解这些名词、术语的意思,为今后深入学习打下基础。一个新的名词从首次接触到理解和应用,需要一个反复的过程。而在众多概念中,真正关键的并不是很多。比如“中断”概念,既是重点又是难点,如果不懂中断技术,就不能算是搞懂了微机原理。在学习中凡是遇到这种情况,绝对不轻易放过,要力求真正弄懂,搞懂一个重点,将使一大串概念迎刃而解。 学习过程中,我发现许多概念很相近,为了更好地掌握,将一些容易混淆的概念集中在一起进行分析,比较它们之间的异同点。比如:微机原理中,引入了计算机由五大部分组成这一概念;从中央处理器引出微处理器的定义;在引出微型计算机定义时,强调输入/输出接口的重要性;在引出微型计算机系统的定义时,强调计算机软件与计算机硬件的相辅相成的关系。微处理器是微型计算机的重要组成部分,它与微型计算机、微型计算机系统是完全不同的概念。 在微机中,最基础的语言是汇编语言。汇编语言是一个最基础最古老的计算机语言。语言总是越基础越重要,在重大的编程项目中应用最广泛。就我的个人理解,汇编是对寄存的地址以及数据单元进行最直接的修改。而在某些时候,这种方法是最有效,最可靠的。然而,事物总有两面性,有优点自然缺点也不少。其中,最重要的一点就是,汇编语言很复杂,对某个数据进行修改时,本来很简单的一个操作会用比较烦琐的语言来解决,而这些语言本身在执行和操作的过程中,占有大量的时间和成本。在一些讲求效率的场合,并不可取。 汇编语言对学习其他计算机起到一个比较、对照、参考的促进作用。学习事物总是从最简单基础的开始。那么学习高级语言也当然应当从汇编开始。学习汇编语言实际上是培养了学习计算机语言的能力和素养。个人认为,学习汇编语言对学习其他语言很有促进作用。 汇编语言在本学期微机学习中有核心地位。本学期微机原理课程内容繁多,还学习了可编程的计数/定时的8253,可编程的外围接口芯片8255A等。学的都是芯片逻辑器件,而在名字前都标有“可编程”,其核心作用不可低估。 我想微机原理课程试验不仅加深和巩固了我们的课本知识,而且增强了我们自己动脑,自己动手的能力。但是我想他也有它的独特之处,那就是让我们进入一个神奇的世界,那就是编程。对我们来说汇编真的很新奇,很有趣,也使我有更多的兴趣学习微机原理和其

微机原理实验答案汇总

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

中南民族大学 微机原理实验答案

中南民族大学微机原理实验答案 实验一 第二题在debug中实现在屏幕上显示“0123456789” A 100 0100:mov cx,0a Mov dl,30 Mov ah,2 0106: int 21h Inc dl Loop 0106 Int 20h 第三题用int 21h 中的2号功能在屏幕上显示“122333444455555666666777777788888888999999999” a 100 0100: mov cx,9 mov dl,31h 0104: push cx xor cx,cx mov cl,dl sub cl,30h 010c: mov ah,2

int 21h loop 010c inc dl pop cx loop 0100 mov ax,4c00h int 21h int 20h 第四题用九号功能在屏幕上显示‘9876543210’ A 100 0100: db ‘9876543210’ 0106: Mov dx,0100 mov ah,9h int 21h Int 20h 实验二 第三题修改程序,在第一行连续显示4个“Hello,World!”每个以空格分开。 name hello sseg segment stack db 64 dup(0)

sseg ends dseg segment mess db 'hello World!',' ','$' dseg ends cseg segment assume cs:cseg,ds:dseg,ss:sseg,es:dseg main proc far begin:mov ax,dseg mov ds,ax mov es,ax mov ah,9 mov cx,4 s1: mov dx,offset mess int 21h loop s1 mov ax,4c00h int 21h main endp cseg ends end begin 第四题 name hello

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

微机原理与接口技术 实验报告 学院:计算机与通信工程学院 专业:计算机科学与技术 班级: 学号: 姓名:

实验一8259中断控制器应用实验 一、实验目的 1.掌握PC机中断处理系统的基本原理。 2. 掌握可编程中断控制器8259的应用编程方法。 二、实验内容 1.PC机内中断实验。使用单次脉冲模拟中断产生。验证中断处理程序,在显示器屏幕上显示一行预设定的字符串。 2.PC机内中断嵌套实验。使用单次脉冲模拟两个中断源的中断产生,填写中断处理程序,体会中断嵌套的过程。 3.扩展多中断源查询方式应用实验。利用实验平台上8259控制器作为中断扩展源,编写程序对8259控制器的中断请求进行处理。 三、实验步骤 1.实验1-1:PC机内中断应用实验 (1)按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,屏幕显示结果截图如下: (2)自设计实验。改变接线方式,将单次脉冲连到USB核心板上的IRQ10插孔上,参考本实验代码,编程实现IRQ10中断。(注意:考虑PC机内中断级联的方式,参看前面的原理说明),代码如下: DA TA SEGMENT MESS DB 'IRQ10 ',0DH,0AH, '$' DA TA ENDS

CODE SEGMENT ASSUME CS:CODE, DS:DA TA START: MOV AX, CS MOV DS, AX MOV DX,OFFSET INT10 MOV AX,2572H ;设置IRQ10对应的中断向量 INT 21H IN AL,21H ;读取中断屏蔽寄存器 AND AL,0F3H ;开放IRQ3中断和从片 OUT 21H,AL IN AL,0A1H ;从片的中断屏蔽寄存器 AND AL,0FBH ;开放IRQ10中断 OUT 0A1H,AL MOV CX,10 STI WAIT: JMP W AIT INT10: MOV AX, DATA ;中断服务程序 MOV DS, AX MOV DX, OFFSET MESS MOV AH, 09 ;在屏幕上显示每次中断的提示信息 INT 21H MOV AL, 20H ; 发出EOI结束中断到PC内主片的地址20H OUT 20H, AL LOOP NEXT IN AL, 21H ;读中断屏蔽寄存器,获取中断屏蔽字 OR AL, 08H ;关闭IRQ3中断 OUT 21H, AL ;将中断屏蔽字送到中断屏蔽寄存器 STI ;置中断标志位 MOV AH, 4CH ;返回DOS INT 21H NEXT: IRET ;中断返回 CODE ENDS END START 调用程序代码,观察实验现象,屏幕显示截图如下:

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

《微机原理》实验参考答案 实验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、熟悉 8086 指令系统的数据传送指令及 8086 的寻址方式。 2、利用 Turbo Debugger 调试工具来调试汇编语言程序。 实验任务 : 1.通过下述程序段的输入与执行来熟悉 Turbo Debugger 的使用,并通过显示器屏幕观察程序的执行情况。练习程序段如下: MOV BL , 08H MOV CL , BL MOV AX , 03FFH MOV BX , AX MOV DS : [0020H] , BX 2.用以下程序段将一组数据压入( PUSH )堆栈区,然后通过不同的出栈顺序出栈,观察出栈后数据的变化情况。压栈程序段如下: MOV AX , 0102H MOV BX , 0304H MOV CX , 0506H MOV DX , 0708H PUSH AX PUSH BX PUSH CX PUSH DX 出栈程序段请自行编写(用不同的出栈顺序)。 3、指出下列指令的错误并加以改正,上机验证之。

(1) MOV [BX] , [SI] (2) MOV AH , BX (3) MOV AX , [SI][DI] (4) MOV BYTE PTR[BX] , 2000H (5) MOV CS , AX (6) MOV DS , 2000H 4、设置各寄存器及存储单元的内容如下: (BX) = 0010H , (SI) = 0001H (10010H) = 12H , (10011H) = 34H , (10012H) = 56H , (10013H) = 78H (10120H) = 0ABH , (10121H) = 0CDH , (10122H) = 0EFH 说明下列各条指令执行完后 AX 寄存器中的内容,并上机验证。 (1) MOV AX , 1200H (2) MOV AX , BX (3) MOV AX , [0120H] (4) MOV AX , [BX] (5) MOV AX , 0110H[BX] (6) MOV AX , [BX][SI] (7) MOV AX , 0110H[BX][SI] 5、将 DS : 1000H 字节存储单元中的内容送到 DS : 2020H 单元中存放。试分别用 8086 的直接寻址、寄存器间接寻址、变址寻址、寄存器相对寻址传送指令编写程序段,并上机验证结果。 6、设 AX 寄存器中的内容为 1111H , BX 寄存器中的内容为 2222H , DS : 0010H 单元中的内容为 3333H 。将 AX 寄存器中的内容与 BX 寄存器中的内容交换, 然后再将 BX 寄存器中的内容与 DS : 0010H 单元中的内容进行交换。试编写程序段,并上机验证结果。

微机原理课设心得体会

微机原理课设心得体会 篇一:微机原理课程设计总结,手抄版 微机原理课程设计总结 以前从没有学过关于汇编语言的知识,起初学起来感觉很有难度。当知道要做课程设计的时候心里面感觉有些害怕和担心,担心自己不会或者做不好,但是但是当真的要做的时候也只好进自己最大的努力去做,做到自己最好的。 我们在这个过程中有很多自己的感受,我想很多同学都会和我有一样的感觉,那就是感觉汇编语言真的是很神奇,很有意思,我们从开始的担心和害怕渐渐变成了享受,享受着汇编带给我们的快乐,看着自己做出来的东西,心里面的感觉真的很好。虽然我们做的东西都很简单,但是毕竟是我们自己亲手,呵呵,应该是自己亲自做出来的,很有成就感。 我想微机原理课程设计和其他课程设计有共同的地方,那就是不仅加深和巩固了我们的课本知识,而且增强了我们自己动脑,自己动手的能力。但是我想它也有它的独特指出,那就是让我们进入一个神奇的世界,那就是编程,对于很多学过汇编或者其他类似程序的同学来说,这不算新奇,但是对于我来说真的新奇,很有趣,也是我有更多的兴趣学习微机原理和其他的汇编。 《微机原理实验与课程呢个设计指导书》,陆红伟编,

中国电力出版社,XX年 《8086微型计算机组成、原理及接口》,顾滨编,机械工业出版社,XX年 《微型计算机技术及应用》戴梅萼,清华大学出版社,XX 本次课程设计的总结与体会 微机原理与接口技术是一门很有趣的课程,任何一个计算机系统都是一个复杂的整体,学习计算机原理是要涉及到整体的每一部分,讨论某一部分原理时又要涉及到其他部分的工作原理,这样一来不仅不能再短时间内较深入理解计算机的工作原理,而且也很难孤立地理解某一部分的工作原理。所以,再循环渐进的课堂教学过程中,我总是处于“学会了一些新知识,弄清了一些原本保留的问题,又出现了一些新问题”的循环中,直到课程结束时,才把保留的问题基本搞清楚。学习该门课程知识时,其思维方法也和其他课程不同,该课程偏重于工程思维,具体地说,在了解了微处理器各种芯片的功能和外部特性以后,剩下额是如何将它们用于实际系统中,其创造性劳动在于如何用计算机的有关技术和厂家提供的各种芯片,设计使用的电路和系统,再配上相应程序,完成各种实际应用项目。 这次实验并不是很难,主要的困难来自对程序的理解。

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