微机原理软件实验步骤说明

微机原理软件实验步骤说明
微机原理软件实验步骤说明

汇编语言程序设计的实验环境及实验步骤

淮北师范大学

苗曙光

图示操作步骤:

1、开始-运行

2、在运行窗口输入cmd

3、进入DOS操作界面

3、改变盘符路径cd..

4、改成了试验程序所在的路径

(1)编辑源程序(生成.ASM文件) 输入:D:\shiyan>masm 1-1

直接按回车

(2)连接目标程序(.OBJ → .EXE )输入:D:\shiyan>link 1-1

(3)运行可执行程序1-1.exe

文字说明部分:

知识提要:

本章主要进行汇编语言实验环境及实验步骤,涉及到的知识点包括:

1、汇编语言源程序编写好以后, 必须经过下列几个步骤才能在机器上运行: 

(1) 编辑源程序(生成.ASM文件) 

(2) 汇编源程序(.ASM → .OBJ) 

(3) 连接目标程序(.OBJ → .EXE ) 

(4) 调试可执行程序(使用调试程序Debug调试生成的.EXE文件)

(5) 运行程序输出结果。

2、 Windows环境下的汇编语言集成编程环境的使用

实验一 DOS环境下的汇编语言编程环境使用(基础与验证型)

一、实验要求和目的

1、掌握汇编语言程序设计的基本方法和技能;

2、熟练掌握使用全屏幕编辑程序EDIT编辑汇编语言源程序;

3、熟练掌握宏汇编程序MASM的使用;

4、熟练掌握连接程序LINK的使用。

二、软硬件环境

1、硬件环境:微机CPU 486以上,500MB以上硬盘,32M以上内存;

2、软件环境:装有MASM 5.0、DEBUG、LINK、EDIT、CREF.EXE和EXR2BIN.EXE等应用程序。

三、实验涉及的主要知识单元

1、汇编语言源程序的汇编过程

汇编语言源程序的汇编过程是是利用汇编程序(MASM)对已编辑好的源程序文件(.ASM)进行汇编,将源程序文件中以ASCII码表示的助记符指令逐条翻译成机器码指令,并完成源程序中的伪指令所指出的各种操作,最后可以建立3个文件:扩展名为 .OBJ的目标文件、扩展名为 .LST 的列表文件和扩展名

为 .CRF 的交叉索引文件。目标文件是必须建立的,它包含了程序中所有的机器码指令和伪指令指出的各种有关信息,但该文件中的操作数地址还不是内存的绝对地址,只是一个可浮动的相对地址。列表文件(.LST)中包含了源程序的全部信息(包括注释)和汇编后的目标程序,列表文件可以打印输出,可供调试检查用。交叉索引文件(.CRF)是用来了解源程序中各符号的定义和引用情况的。.LST和.CRF两个文件不是必须建立的,可有有无,可以通过汇编时的命令加以选择。

在对源程序文件(ASM文件)汇编时,汇编程序将对ASM文件进行两遍扫描,若程序文件中有语法错误,则结束汇编,汇编程序将指出源程序中存在的错误,这时应返回编辑环境修改源程序中的错误,再经过汇编,直到最后得到无错误的目标程序,即OBJ文件。因此,汇编程序的主要功能可以概括为以下三点:(1) 检查源程序中的语法错误,并给出错误信息;(2) 产生目标程序文件(OBJ文件),并可给出列表文件(.LST文件);(3) 展开宏指令。

汇编程序是系统提供的用于汇编的系统软件,目前常用的汇编程序有Microsoft公司推出的宏汇编程MASM(MACRO ASSEMBLER)和BORLAND公司推出的TASM(TURBO ASSEMBLER)两种。Microsoft公司推出有宏汇编程序MASM和小汇编程序ASM两种,二者的区别在于:MASM有宏处理功能,而ASM没有宏处理功能,因此,MASM比ASM的功能强大,但MASM需要占据较大的内存空间,当内存空间较小时(如64 KB),只能使用ASM。

2、目标程序的连接过程

汇编后产生的目标程序(OBJ文件)并不是可执行程序文件(EXE文件),还不能直接运行,它必须通过连接程序(LINK)连接成一个可执行程序后才能运行。连接程序进行连接时,其输入有两个部分:一是目标文件(.OBJ),目标文件可以是一个也可以是多个,可以是汇编语言经汇编后产生的目标文件,也可以是高级语言(例如C语言)经编译后产生的目标文件;另一是库文件(.LIB),库文件是系统中已经建立的,主要

是为高级语言提供的。连接后输出两个文件,一是扩展名为 .EXE的可执行文件,另一个是扩展名为 .MAP 的内存分配文件,它是连接程序的列表文件,又称为连接映像(Link Map),它给出每个段在存储器中的分配情况,该文件可有可无。连接程序给出的“无堆栈段的警告性错误”并不影响程序的运行。所以,到此为止,连接过程已经结束,可以在操作系统下执行该.EXE程序了。

3、汇编语言和DOS操作系统的接口

编写的汇编语言源程序是在DOS环境下运行时,必须了解汇编语言是如何同DOS操作系统接口的。

用编辑程序把源程序输入到机器中,用汇编程序把它转换为目标程序,用连接程序对其进行连接和定位时,操作系统为每一个用户程序建立了一个程序段前缀区PSP,其长度为256个字节,主要用于存放所要执行程序的有关信息,同时也提供了程序和操作系统的接口。操作系统在程序段前缀的开始处(偏移地址0000H)安排了一条INT 20H软中断指令。INT 20H中断服务程序由DOS提供,执行该服务程序后,控制就转移到DOS,即返回到DOS管理的状态。因此,用户在组织程序时,必须使程序执行完后能去执行存放于PSP开始处的INT 20H指令,这样便返回到DOS,否则就无法继续键入命令和程序。

DOS在建立了程序段前缀区PSP之后,将要执行的程序从磁盘装入内存。在定位程序时,DOS将代码段置于PSP下方,代码段之后是数据段,最后放置堆栈段。内存分配好之后,DOS就设置段寄存器DS 和ES的值,以使它们指向PSP的开始处,即INT 20H的存放地址,同时将CS设置为PSP后面代码段的段地址,IP设置为指向代码段中第一条要执行的指令位置,把SS设置为指向堆栈的段地址,让SP指向堆栈段的栈底,然后系统开始执行用户程序。为了保证用户程序执行完后能返回到DOS状态,可使用如下两种方法。

(一)标准方法

首先将用户程序的主程序定义成一个FAR过程,其最后一条指令为RET。然后在代码段的主程序(即FAR过程)的开始部分用如下三条指令将PSP中INT 20H 指令的段地址及偏移地址压入堆栈:PUSH DS ;保护PSP段地址

MOV AX,0 ;保护偏移地址0

PUSH AX

这样,当程序执行到主程序的最后一条指令RET时,由于该过程具有FAR属性,故存在堆栈内的两个字就分别弹出到CS和IP,从而执行INT 20H指令,使控制返回到DOS状态。返回DOS的标志就是程序运行完后出现一个DOS的标识符,如C:\>。

(二)非标准方法

也可在用户的程序中不定义过程段,只在代码段结束之前(即CODE ENDS之前)增加两条语句:MOV AH,4CH

INT 21H

则程序执行完后也会自动返回DOS状态。

此外,由于开始执行用户程序时,DS并不设置在用户的数据段的起始处,ES同样也不设置在用户的附加段起始处,因而在程序开始处使用以下方法重新装填DS和ES的值使其指向用户的数据段:MOV AX,段名

MOV 段寄存器名,AX ;段寄存器名可以是DS、ES、SS之一

四、实验内容与步骤

1、实验内容

编写程序,判断一个年份是否是闰年。

2、实验步骤

汇编语言程序设计上机过程如图1.1所示。

图1.1 汇编语言程序上机过程

(一)用编辑程序EDIT建立汇编语言源程序文件(ASM文件)

例如,编写程序,判断一个年份是否是闰年的汇编语言源程序,可以在DOS模式下用编辑程序EDIT.EXE建立汇编语言源程序文件ABC.ASM,注意文件名的扩展名必须是.ASM。也可以在Windows 2000或者在Windows XP环境下鼠标单击“开始”→“运行”,在“运行”中输入“CMD”进入DOS模式,运行EDIT软件,例如:

C> EDIT ABC.ASM

进入EDIT的程序编辑画面时,输入汇编语言源程序如下:

DATA SEGMENT

INFON DB 0DH,0AH,'Please input a year: $'

Y DB 0DH,0AH,'This is a leap year! $'

N DB 0DH,0AH,'This is not a leap year! $'

W DW 0

BUF DB 8

DB ?

DB 8 DUP(?)

DATA ENDS

STACK SEGMENT 'stack'

DB 200 DUP(0)

STACK ENDS

CODE SEGMENT

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

START: MOV AX,DATA

MOV DS,AX

LEA DX,INFON

MOV AH,9

INT 21H

LEA DX,BUF

MOV AH,10

INT 21H

MOV CL, [BUF+1]

LEA DI,BUF+2

CALL DATACATE

CALL IFYEARS

JC A1

LEA DX,N

MOV AH,9

INT 21H

JMP EXIT

A1: LEA DX,Y

MOV AH,9

INT 21H

EXIT: MOV AH,4CH

INT 21H

DATACATE PROC NEAR

LEA SI,BUF+2

MOV BX,0

X3:

MOV AL ,[SI]

SUB AL ,30H

MOV AH,0

XCHG AX,BX

MOV DX,10D

MUL DX

XCHG AX,BX

ADD BX,AX

INC SI

LOOP X3

MOV W,BX

RET

DATACATE ENDP

IFYEARS PROC NEAR

PUSH BX

PUSH CX

PUSH DX

MOV AX,W

MOV CX,AX

MOV DX,0

MOV BX,4

DIV BX

CMP DX,0

JNZ LAB1

MOV AX,CX

MOV BX,100

DIV BX

CMP DX,0

JNZ LAB2

MOV AX,CX

MOV BX,400

DIV BX

CMP DX,0

JZ LAB2

LAB1: CLC

JMP LAB3

LAB2: STC

LAB3: POP DX

POP CX

POP BX

RET

IFYEARS ENDP

CODE ENDS

END START

(二)用汇编程序MASM将ASM文件汇编成目标程序文件(OBJ文件)

当源程序建立以后,仍以ABC.ASM程序为例,我们用汇编程序MASM对ABC.ASM源程序文件进行汇编,以便产生机器码的目标程序文件ABC.OBJ,其操作步骤如下:

C>MASM ABC

Microsoft (R) Macro Assembler Version 5.00

Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.

Object filename [ABC.OBJ]:

Source listing [NUL.LST]:ABC

Cross-reference [NUL.CRF]:ABC

50674 + 450574 Bytes symbol space free

0 Warning Errors

0 Severe Errors

由此可知,汇编程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Object filename [ABC.OBJ]:

这是询问目标程序文件名,方括号内为机器规定的默认的文件名,通常直接按回车键,表示采用默认的文件名(如上所示),这是我们汇编的主要目的。

第二个提示行为: Source listing [NUL.LST]:

这是询问是否建立列表文件。若不建立,直接回车;若要建立,可以输入文件名ABC再回车,表示要建立名为ABC的列表文件。列表文件中同时列出源程序和机器语言程序清单,并给出符号表,有利于程序调试。

第三个提示行为:Cross-reference [NUL.CRF]:

这是询问是否要建立交叉索引文件。若不建立,则直接回车;若要建立,可以输入文件名ABC,表示要建立ABC.CRF文件。由于.CRF是非文本文件,为了建立交叉索引文件,还必须调用CREF.EXE程序,即输入:

C>CREF ABC

Microsoft (R) Cross-Reference Utility Version 5.00

Copyright (C) Microsoft Corp 1981–1985,1987. All rights reserved.

listing [ABC.REF]:

17 Symbols

这时首先显示版本号,然后出现一个提示行:Listing [ABC.REF]:

这是询问交叉索引文件名。这时可用回车承认方括号内机器默认的文件名,如上所示。这样就建立了ABC.REF文件。其内容是用户定义的所有符号(包括变量),并给出每个符号定义所在的行号(附以#)以及引用的行号。如下是ABC.REF文件的内容:

Microsoft Cross-Reference Version 5.00 Sat Dec 01 18:49:42 2007

Symbol Cross-Reference (# definition, + modification) Cref-1

A1 . . . . . . . . . . . . . . . 42 47#

BUF. . . . . . . . . . . . . . . 15# 35 38 39 55

CODE . . . . . . . . . . . . . . 28# 29 111

DATA . . . . . . . . . . . . . . 1# 21 29 30

DATACATE . . . . . . . . . . . . 40 53# 80

EXIT . . . . . . . . . . . . . . 46 50#

IFYEARS. . . . . . . . . . . . . 41 82# 110

INFON. . . . . . . . . . . . . . 2# 32

LAB1 . . . . . . . . . . . . . . 92 103#

LAB2 . . . . . . . . . . . . . . 97 102 105#

LAB3 . . . . . . . . . . . . . . 104 106#

N. . . . . . . . . . . . . . . . 10# 43

STACK. . . . . . . . . . . . . . 22# 22 27 29

START. . . . . . . . . . . . . . 30# 112

W. . . . . . . . . . . . . . . . 14# 76+ 86

X3 . . . . . . . . . . . . . . . 60# 73

Y. . . . . . . . . . . . . . . . 6# 47

17 Symbols

调入汇编程序,当我们回答了上述各提示行的询问之后,汇编程序就对源程序进行汇编。若汇编过程中发现源程序有语法错误,则列出有错误的语句和错误的代码。错误分警告错误(Wraning Errors)和严重错误(Severe Errors)。警告错误是指汇编程序认为的一般性错误;严重错误是指汇编程序认为无法进行正确汇编的错误,并给出错误的个数及行号、错误的性质等。这时,就要对错误进行分析,找出问题和原因,然后再调用编辑程序加以修改,修改后重新汇编,直到汇编后无错误为止。

(三) 用连接程序LINK生成可执行程序文件(EXE文件)

经汇编后产生的二进制的目标程序文件(OBJ文件)并不是可执行程序文件(EXE文件),必须经连接以后,才能成为可执行文件。连接程序并不是专为汇编语言程序设计的。如果一个程序是由若干个模块组成的,也可通过连接程序LINK把它们连接在一起。这些模块可以是汇编程序产生的目标文件,也可以是高级语言编译程序产生的目标文件。

连接过程如下:

C>LINK ABC

Microsoft (R) Overlay Linker Version 3.60

Copyright (C) Microsoft Corp 1983-1987. All rights reserved.

Run File [ABC.EXE]:

List File [NUL.MAP]:ABC

Libraries [.LIB]:

在连接程序调入后,首先显示版本号,然后出现三个提示行。

第一个提示行为:Run File [ABC.EXE]:

这是询问要产生的可执行文件的文件名。一般直接回车采用方括号内规定的隐含文件名。

第二个提示行为:List File [NUL.MAP]:

这是询问是否要建立连接映象文件。若不建立,则直接回车;若要建立,则输入文件名再回车。如果要建立该文件,可以输入文件名ABC。

第三个提示行为:Libraries [.LIB]:

这是询问是否用到库文件。若无特殊需要,则直接回车即可。

上述提示行回答后,连接程序开始连接。若连接过程中有错,则显示错误信息,错误分析清楚后,要重新调入编辑程序进行修改,然后重新汇编,再经过连接,直至无错为止。连接以后,便产生了可执行程序文件(EXE文件)。

(四) 程序的执行

当我们建立了可执行文件ABC.EXE后,就可直接在DOS下执行该程序:

C>ABC

根据程序提示,输入一个年份,计算机会输出是否闰年的结果。

五、实验要求与提示

1、实验要求

(1)掌握汇编语言程序设计上机过程;

(2)回答思考问题;

(3)记录实验结果。

2、实验提示

按照图1.1的上机过程进行实验。

六、思考与练习以及测评标准

(1)汇编过程中 MASM ABC和 MASM ABC.ASM的结果是否一致。(2)连接过程中 LINK ABC和LINK ABC.OBJ的结果是否一致。(3) 使用Word如何录入汇编语言源程序。

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

微机原理及应用实验 实验一开发环境的使用 一、实验目的 掌握伟福开发环境的使用方法,包括源程序的输入、汇编、修改;工作寄存器内容的查看、修改;内部、外部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机一台。

北邮微机原理中断程序报告

北京邮电大学实验报告 题目:微机原理软件实验 学院:信息与通信工程 专业:信息工程______ 中断实验报告 一、实验目的 1、初步掌握中断程序的设计方法; 2、初步掌握修改 DOS 系统中断,以适应实际使用的方法。

二:实验要求 编一程序,在显示器上显示时、分、秒。 1:借用计数器8253的Timer0作为中断源,通过8259A下向CPU发中断,每10ms 产生一次中断。 2:在中断服务程序中管理刷新时、分、秒。 3:输入文件名(如:CLK)后清屏显示 Current time is XX:XX:XX(时分秒键盘输入) 打回车,时、分、秒开始计时,时钟不停的刷新。 4:当键入CTRL+C时,停止计时,返回系统,且系统正常运行不死机。 提示: 1、8253的初始化程序段可借用。 2、口地址为40H、41H、42H、43H,控制字为36H=00110110B 3、时间常数TC=11932:1.1932MHz/11932=100Hz,输出方波频率为100Hz,其周期为1000/100=10ms 三:设计思路 这个实验需要用到中断控制器8259A和计数器8253。我们先初始化8253的工作方式,利用工作方式3来计数时间,让其分频后产生100hz的方波,每100个周期即为1s,将这个方波作为中断源,通过8259A每10ms向CPU发出一次中断。然后我们将子程序Timer0的地址(CS以及IP)设置为中断向量,每次中断即执行这个子程序,在这个之程序中编写相应代码,看时间是否到1S,没到则跳出中断,等待下一次(1ms之后)中断到来,到1S则让时间+1并且重置计数值,再加上相应的时间显示程序,这样即可实现时间的自动增加与显示,可以当做一个计时器来用,这即是这个工程的主体部分。 除此之外,还需要一部分程序来实现键盘输入相应时间,这里要注意时间的每一位都有取值方面的要求,这里就要通过一系列的CMP/JMP指令的组合来达到正确输入的效果,将顺序输入的时间存储起来,配合Timer0子程序即可输出当前设置的时间并且实现时间刷新。当然,如果选择不输入时间直接回车的话,程序可以从0开始计时,可以当成一个秒表。 还有一些细节的设计如在计时过程中输入S可以重新设置时间,Ctrl+C可以退出这些也是利用CMP/JMP组合来实现。最后整个程序可以实现以下功能:可以设置开始时间然后自动计时,也可以当做秒表来使用,可以正常退出。 四:实验流程

微机原理实验 源程序

《微机原理及接口技术》 实验指导书 杨霞周林英编 长安大学电子与控制工程学院 2009年9月

前言 本实验指导是为适应各大、中专院校开设微机原理及应用方面的课程需做大量软硬件实验的需要而编写的,供学生编程用。完成本实验指导中的实验,可使学生基本掌握8086/8088的结构原理、接口技术、程序设计技巧。手册中详细叙述了各实验的目的、内容,列出了接线图、程序框图和实验步骤。 主要学习内容为80X86语言实验环境配置、汇编源语言格式、输出字符、循环结构、子程序调用,以及加减乘除等指令操作、通用接口芯片的接口编程与使用。所有实验都是相互独立的,次序上也没有固定的先后关系,在使用本书进行教学时,教师可根据教学要求,选择相应实验。学习结束后,要求学生能够独立编写出综合加减乘除等指令,以及循环结构、子程序调用等程序控制程序、看懂一般接口芯片电路图。

目录 实验一清零程序 (4) 实验二拆字程序 (6) 实验三数据区移动 (8) 实验四多分支程序设计 (10) 实验五多字节减法运算 (13) 实验六显示程序 (16) 实验七 8251串口实验 (20) 实验八步进电机控制 (26) 附录一汇编语言的存储模型 (36) 附录二 8279键值显示程序 (37)

实验一清零程序 一、实验目的 掌握8088汇编语言程序设计和调试方法。 二、实验设备 STAR系列实验仪一套、PC机一台。 三、实验内容 把RAM区内4000H-40FFH单元的内容清零。 四、程序框图 五、源程序清单 .MODEL TINY .STACK 100 .DATA .CODE ORG 0100H START: MOV BX,4000H MOV AX,0000H MOV CX,80H L1: MOV [BX],AX INC BX INC BX LOOP L1 JMP $ END START 六、实验步骤

微机原理及应用实验

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

内蒙古工业大学微机原理实验指导答案.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.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来? 答:要屏显0-9的数码,可以调用02h中断,然后将要显示的数码的ASCII码存进DL 里,然后执行INT 21H就可以打印字符。当然,若不只一个数,调用09h中断(显示字符串)更好,但要将DS:DXZ指向要显示的数字在内存中的首地址,并要求以$结束。 2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法? 答:CMP X,0 检验标志位CF CF=1,X为负数 CF=0接着检验ZF:ZF=1,X为零,ZF=0,X为正数 二、实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS 功能调用. 三、实验内容: 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9. 2.编写一个程序统计数据区中正数,负数和零的个数. 四、实验源代码 assume cs:code,ds:data data segment buff db 1,2,3,4,5,-1,-2,-3,0,0 ;安排的数据区 string db '>0:' plus db 0 ;用变量plus来存储正数的个数 db 0ah,0dh string1 db '=0:' zero db 0 ;用变量zero来存储零的个数 db 0ah,0dh string2 db '<0:' minus db 0 ;用变量minus来存储负数的个数 db '$' data ends code segment start:movax,data movds,ax mov cx,10 ;初始化,并将CX赋为10,因为共有10个数 mov dx,0 ;将计数器dx,ah初始化为0 mov ah,0 lea bx,buff compare:cmp byte ptr [bx],0 ;取出一个数与0进行比较 jgeplu ;大于等于0,跳至plu执行 inc ah ;小于0,用ah暂存小于0的个数,ah+1 jmp next ;比完后进行下一个数的比较

微机原理实验报告软件实验1-4

微机原理实验报告 学院:算机科学与软件教育学院 1. 掌握存储器读写方法 2. 了解存储器的块操作方法 二、实验原理 存储器读写和块操作 三、实验设备仪器及材料 计算机,WA VE 6000软件 四、实验过程 S1.asm 代码流程图 data segment Block db 256 dup(55h) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov bx, offset Block ; 起始地址 mov cx, 256 ; 清256 字节Again: mov [bx], byte ptr 0 inc bx ; 地址+1 Loop Again ; 记数减一jmp $ ;死循环code ends end start

五、实验步骤 (1) 进入Wave6000,输入程序并检查,保存程序。 (2) “编译”程序。 (3) “全速执行”程序。 (4) “暂停”程序运行,在“数据窗口(MEMOREY)”查看0400H起始的单元内容,并记录。 (5) 在指令“jmp $”处设断点。“全速执行”程序。 (6) 在“数据窗口(MEMOREY)”查看0400H起始的单元内容,记录并分析实验结果。 六、实验结果及总结 运行前:运行后: 2、调试:如何将存储器块的内容置成某固定值(例全填充为0FFH)? 总结:通过本实验,我了解到单片机读写存储器的读写方法,同时也了解到单片机编程,调试方法。学会内存的移动方法,也加深对存储器读写的认识。

微机原理实验报告 学院:算机科学与软件教育学院 实验 课程 名 微机原理实验成绩实验 项目名称实验二、二进制到BCD码转换 指导老 师 1. 了解BCD值和ASCII值的区别。 2. 了解如何将BCD值转换成ASCII值。 3. 了解如何查表进行数值转换及快速计算。 二、实验原理 ASCII码表 三、实验设备仪器及材料 计算机,WA VE 6000软件 data segment Result db 3 dup(?) data ends code segment assume cs:code, ds:data start proc near mov ax, data mov ds, ax mov ax, 123 mov cl, 100 div cl mov Result, al ; 除以 100, 得百位数 mov al, ah mov ah, 0 mov cl, 10 div cl mov Result+1, al ; 余数除以 10, 得十位数 mov Result+2, ah ; 余数为个位 数 jmp $ code ends end start 代码流程图

北邮《微机原理与接口技术》阶段作业汇总

《微机原理与接口技术》作业汇总 1.若欲使RESET有效,只要A即可。 A.接通电源或按RESET键 2.8086微处理器中的ES是D寄存器 D.附加数据段 3.8086 微处理器中BP 寄存器是A A.基址指针寄存器 4.8086/8088 微处理器中的BX是A A.基址寄存器 5.8086/8088微处理器顺序执行程序时,当遇到C指令时, 指令队列会自动复位,BIU会接着往指令队列中装入新的程序段指令。C.JCXZ 6.8086微处理器读总线周期中地址信号AD15~AD0在A期间处于高阻。 A.T2 7.8086/8088 微处理器引脚中B信号线能够反映标志寄 存器中断允许标志IF的当前值。 B.S5 8.访问I/O端口可用地址线有B条。B.16 9.8086/8088 微处理器可访问内存储器地址为A A.00000~FFFFFH 10.字符串操作时目标串逻辑地址只能由B提供 B.ES、DI 11.8086/8088微处理器中堆栈段SS作为段基址,则偏移 量为B。 B.SP 12.若有两个带有符号数ABH和FFH相加,其结果使F 中CF和OF位为C。 C.1;0 13.8086微处理器内部通用寄存器中的指针类寄存器是B。 B.BP 14.8086/8088微处理器内部能够计算出访问内存储器的20位物理地址的附加机构是。B.BIU中的地址加法器15.当标志寄存器TF=1时,微处理器内部每执行完一条 指令便自动进行一次B。B.内部中断 16.8086/8088微处理器内部寄存器中的累加器是A寄存 器。 A.16位数据寄存器 17.8086微处理器中的BIU和EU是处于B的工作状态 B.并行 18.8086中指令队列和堆栈特点分别是C C.先进先出;后进先出 19.微型计算机各部件之间是用A连接起来的。 A.系统总线 20.若把组成计算机中的运算器和控制器集成在一块芯片 上称为C。 C.微处理器 21.相联存储器是指按C进行寻址的存储器。 C.内容指定方式 22.单地址指令中为了完成两个数的算术运算,除地址码 指明的一个操作数外,另一个数常需采用D。 D.隐含寻址方式 23.某存储器芯片的存储容量为8K×12位,则它的地址 线为C。 C.13 24.下列8086指令中,格式错误的是C。 C.MOV CS,2000H 25.寄存器间接寻址方式中,操作数处在C。C.主存单元 26.某计算机字长16位,其存储容量为2MB,若按半字 编址,它的寻址范围是C。 C.2M 27.某一RAM 芯片,其容量为1024×8位,其数据线和 地址线分别为C。 C.8,10 28.CPU在执行OUT DX,AL指令时,A寄存器的内容 送到数据总线上。 A.AL 29.计算机的存储器系统是指D。 D.cache,主存储器和外存储器 30.指令MOV AX, [3070H]中源操作数的寻址方式为C C.直接寻址 31.EPROM是指D D.光擦可编程的只读存储器 32.指令的寻址方式有顺序和跳跃两种方式,采用跳跃寻 址方式,可以实现D.程序的条件转移成无条件转移33.8086 CPU对存贮器操作的总线周期的T1状态, AD0~AD15引脚上出现的信号是A。A.地址信号 34.堆栈是按D组织的存储区域。D.先进后出原则 35.8086/8088中源变址寄存器是A。A.SI 36.8086/8088中SP是D寄存器。D.堆栈指针寄存器 37.8086/8088中FR是A寄存器。A.标志寄存器 38.8086/8088中IP是C寄存器。C.指令指针寄存器 39.假设AL寄存器的内容是ASCII码表示的一个英文字 母,若为大写字母,将其转换为小写字母,否则不变。 试问,下面哪一条指令可以实现此功能A。 A.ADD AL, 20H 40.逻辑右移指令执行的操作是A。 A.符号位填0,并 顺次右移1位,最低位移至进位标志位 41.假设数据段定义如下: DSEG SEGMENT DAT DW 1,2,3,4,5,6,7,8,9,10 CNT EQU ($-DAT)/2 DSEG ENDS 执行指令MOV CX,CNT后,寄存器CX的内容是D D.4 42.在下列段寄存器中,代码寄存器是B。B.CS 43.在执行POP[BX]指令,寻找目的操作数时,段地 址和偏移地址分别是B。B.在DS和BX中 44.设DS=5788H,偏移地址为94H,该字节的物理地址 是B。B.57914H 45.设AX=1000H NEG AX

微机原理实验程序

实验一两个多位十进制数相减实验 一、实验要求:将两个多位十进制数相减,要求被减数,减数均以ASCII码形式按顺序 存放在以DATAI和DATA2为首的5个内存单元中(低位在前>,结果送回 DATAI处。 二、实验目的:1.学习数据传送和算术运算指令的用法。 2.熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 三、实验步骤:连好实验箱后接通电源,打开上位机软件88TE进入软件调试界面: 点击“文件\打开”文件路径为C: \88TE\cai\asm\Ruanjian\Rjexp1.asm。具体操作如图所示: b5E2RGbCAP

点击编译连接生成可执行的exe文件。 通过单步运行调试程序,打开寄存器查看其变量变化情况。 四、实验程序框图: 五、实验程序:

文件路径为C:\88TE\cai\asm\Ruanjian\Rjexp1.asm DATA SEGMENT DATA1 DB 33H,39H,31H,37H,38H 。第一个数据<作为被减数)DATA2 DB 36H,35H,30H,38H,32H 。第二个数据<作为减数)MES1 DB '-','$' MES2 DB '=','$'p1EanqFDPw Array 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 ES,AX MOV AX,STACK MOV SS,AX MOV AX,TOP MOV SP,AX MOV SI,OFFSET DATA1 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 DATA1 MOV DI,OFFSET DATA2 CALL SUBA 。减法运算 MOV SI,OFFSET DATA1 MOV BX,05 。显示结果 CALL DISPL MOV DL,0DH MOV AH,02H INT 21H 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

微机原理实验报告

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

北邮微原软件实验报告

2013年微机原理软件实验报告 学院:信息与通信工程学院 班级:2011211104 姓名:

实验二分支,循环程序设计 一.实验目的: 1.开始独立进行汇编语言程序设计; 2.掌握基本分支,循环程序设计; 3.掌握最简单的DOS 功能调用 二.实验内容: 1.安排一个数据区,内存有若干个正数,负数和零.每类数的个数都不超过9. 2.编写一个程序统计数据区中正数,负数和零的个数. 3.将统计结果在屏幕上显示. 三.预习题 1.十进制数0 -- 9 所对应的ASCII 码是什么? 如何将十进制数0 -- 9 在屏幕上显示出来? 0-9的ACSII码为,30h,31h,32h,34h,35h,36h,37h,38h,39h, 将要显示的数加上30h,得到该数的ACSII码,再利用DOS功能调用显示单个字符 2.如何检验一个数为正,为负或为零? 你能举出多少种不同的方法? 利用cmp指令,利用TEST指令,将该数与0相与,将该数与0相减,观察标志位。

四.程序流程图

五.源程序 DATA SEGMENT ;数据段 NUM DB 1,2,-2,3,-3,5,2,4,-6,-11,100,0,0,34,-55,-33,0 ;待处理数据COUNT EQU $-NUM ;数据个数 MINUS DB 0 ;小于零的个数 ZERO DB 0 ;等于零的个数 PLUS DB 0 ;大于零的个数 RESULT DB 'NEGNUM=',?,0AH,0DH,'ZERONUM=',?,0AH,0DH,'POSNUM=',?,0AH,0DH,'$' ;结果显示字符串 DATA ENDS STACK SEGMENT STACK 'STACK' ;堆栈段 DW 50 DUP(?) STACK ENDS CODE SEGMENT ;代码段 ASSUME CS:CODE,DS:DATA,SS:STACK START: MOV AX,DATA MOV DS,AX MOV CX,COUNT MOV SI,OFFSET NUM AGAIN: MOV AL,[SI] ;循环比较 CMP AL,0 JGE NEXT1 INC MINUS JMP DONE NEXT1: JZ NEXT2 INC PLUS JMP DONE NEXT2: INC ZERO DONE: INC SI LOOP AGAIN ;返回结果 MOV DI,OFFSET RESULT MOV AL,MINUS ADD AL,30H MOV BYTE PTR[DI+7],AL MOV AL,ZERO ADD AL,30H MOV BYTE PTR[DI+18],AL MOV AL,PLUS ADD AL,30H MOV BYTE PTR[DI+28],AL

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 1)利用实验箱上的4x4键盘及6位数码管,实现两个16位宽的非负整数(0~65535)进行+、-、×运算,计算结果限制在范围-65535~65535,超过范围在数码管最低位显示E; 2)16个按键的分配可以自行指定; 【扩展要求】 1)按基本要求保持输入的范围不变(16位宽),扩展计算结果的范围到用足6位数码管,当计算结果超过-65535~999999时,显示E; 2)增加÷的功能,有小数显示; 【实验程序】 ;该程序实现了基本要求及扩展要求的2) DSEG SEGMENT BUFF DB 6 DUP(?) LED_7 DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7C H,39H,5EH,79H,71H,00H,40H POSITION DB 0DFH,0EFH,0F7H,0FBH,0FDH,0FEH UNIT10 DW 10000,1000,100,10,1 NEWNUM DB 0 COUNT DB 0 FLAG DB 0 ;是否有键按下的标志 NEGTI DB 0 ;是否为负数的标志 NUM DW 0 NUM1 DW 0 NUM2 DW 0 TAG DB 0 ;运算种类标志 POINT DB 0 ;除法结果添加小数点标志 RESULT DW 0 DSEG ENDS CSEG SEGMENT ASSUME DS:DSEG,CS:CSEG START: MOV AX,DSEG MOV DS,AX MOV DX,300CH ;8255初始化 MOV AL,81H OUT DX,AL LEA SI,BUFF MOV CX,6 NEXT: MOV BYTE PTR[SI],16 INC SI LOOP NEXT CALL SHOW ;将显示缓冲区中内容在LED上一次显示出来 MOV COUNT,0 ;记按下了几位数 NEXT2: CALL SHOW CALL SCAN ;判断是否有按键按下 CMP FLAG,1 JZ OK JMP NEXT2 OK: MOV FLAG,0 MOV POINT,0 MOV DX,3000H ;判断是哪一个键被按下 MOV AL,0FFH OUT DX,AL MOV CH,-1 ;CH用于保存当前被扫描的列号MOV CL,07FH XL: ROL CL,1 INC CH MOV DX,3000H MOV AL,CL .

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

微原硬件实验报告 班级: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 进行调试。 四,程序流程图

北京理工大学自动化专业微机原理硬件软件实验

微机原理与接口技术 硬件实验报告 班级: 姓名: 学号: 实验一: 8259中断控制器实验 一、实验目的 1. 掌握8259的工作原理。 2. 掌握编写中断服务程序的方法。 3. 掌握初始化中断向量的方法。 二、实验内容 用单脉冲发生器的输出脉冲为中断源,每按一次产生一次中断申请,点亮或熄灭发光二极管。 三、实验设备 微机实验教学系统实验箱、8086CPU模块 四、连线 ①单脉冲发生器输出P+与8259的IR0相连 ②8259的片选CS8259与CS0相连 ③8259的INT与8086的INT相连 ④8259的INTA与8086的INTA相连 ⑤CS273与CS1相连 ⑥00与LED1相连 其它线均已连好如下图: 五、实验步骤 (1)连线。 (2)编辑程序,编译链接后,调试程序。 (3)调试通过后,在中断服务程序内设置断点,运行程序,当接收到中断请求后,程序停在中断服务程序内的断点处。 (4)撰写实验报告。

六、实验源程序 CODE SEGMENT PUBLIC ASSUME CS:CODE ORG 100H START: MOV DX,4A0H ;写ICW1 MOV AX,13H OUT DX,AX MOV DX,4A2H ;写ICW2 MOV AX,80H ;IR0的中断向量码为80H OUT DX,AX MOV AX,01 OUT DX,AX ;一般嵌套,非缓冲,非自动EOI MOV AX,0 ;写OCW1 OUT DX,AX ;允许中断 ;中断向量存放在(0000H:0200H)开始的四个单元里 MOV AX,0 MOV DS,AX MOV SI,200H ;中断类型号为80H MOV AX,OFFSET HINT ;中断服务程序的入口地址 MOV DS:[SI],AX ADD SI,2 MOV AX,CS MOV DS:[SI],AX STI ;开中断,设置IF=1 JMP $ ;原地跳转 HINT: ;中断服务程序 XOR CX,0FFH ;CX取反 MOV DX,4B0H ;CS273接口的地址,与8个LED灯相连 MOV AX,CX ;输出高低电平控制LED灯的亮灭 OUT DX,AX MOV DX,4A0H ;OCW2的地址 MOV AX,20H ;一般EOI命令,全嵌套方式 OUT DX,AX IRET ;中断返回 CODE ENDS END START 七、实验思考题 1.将P+连线连接到IR1—IR7任意一个;重新编写程序。 将P+接到IR1,在原程序的基础上,把写ICW2的控制字改为81H,再把中断向量的入口地址改为0204H即可。程序如下: CODE SEGMENT PUBLIC ASSUME CS:CODE

微机原理实验答案汇总

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)

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

目录 1.实验一微机实验平台介绍及IO的使用 (3) 1.1.实验目的 (3) 1.2.实验内容及要求 (3) 1.3.实验环境及背景 (3) 1.4.实验步骤 (4) 1.4.1.使用debug的I、O命令读写端口 (4) 1.4.2.使用文本编辑器edit和编译器masm (5) 1.5.思考题 (11) 1.6.心得体会 (11) 参考资料 (12) 声明与致谢 (12)

1.实验一微机实验平台介绍及IO的使用 1.1.实验目的 1.1.1通过实验了解和熟悉实验台的结构,功能及使用方法; 1.1.2通过实验掌握直接使用debug的I、O命令来读写IO端口; 1.1.3学会debug的使用及编写汇编程序。 1.2.实验内容及要求 1.2.1学习使用debug命令,并用I、O命令直接对端口进行读写操作, 1.2.2用汇编语言编写跑马灯程序。(可以使用EDIT编辑工具。)要求实现以下两个功能:A.通过读入端口状态(ON为低电平),选择工作模式(灯的闪烁方式、速度等);B.通过输出端口控制灯的工作状态(低电平灯亮)。 1.2.3使用时要注意,电源打开时不得插拔电缆及各种器件,一定要在断电的情况下连接电路,否则可能会烧坏整个实验系统。 1.3.实验环境及背景 我们使用PCI_IDE50扁平电缆将PC机与实验扩展模块连接起来。在扩展实验平台上,有八个发光二极管、八个拨码开关。读取拨码开关和写发光二极管的端口地址已经被做成了0E8E0h。连接的PC机上安装有DOS操作系统,并有MASM5开发工具。

图1扩展实验模块 1.4.实验步骤 1.4.1.使用debug的I、O命令读写端口 进入DOS,在命令行模式下输入命令debug,用-a选项写入下列程序:CODE (debug mode) MOV DX, E8E0 MOV AL, FE OUT DX, AL MOV AH, 0B INT 21 OR AL, AL JZ 0100 INT 20 输入结束后,直接输入回车即可推出-a。然后,用-g选项运行程序,查看结果。发现最右边的LED亮,其他不亮。修改输出内容,再运行查看结果,可以发现:当输出位对应为1时,灯灭;输出为0时,灯亮。 下面,我们来分析一下以下这段程序的作用。

微机原理实验程序

硬件实验七 D/A转换实验 (2 锯齿波 --------------- ; 注意:进行本实验前, 请先装载运行 D/A 0V输出 (调基准电压程序Asm88\da_0v.asm ; 使 D/A输出端“ AOUT ” 输出电压为 0V , 再进行本实验。 CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 33F0H DAPORT EQU 0FFE0H H7: MOV DX,DAPORT MOV AL,00H P7: OUT DX,AL INC AL JMP P7 CODE ENDS END H7 串行通信 CODE SEGMENT ASSUME CS:CODE,DS:CODE,ES:CODE ORG 35C0H ;TX=RX

H11: JMP START Z8251 EQU 0FFE1H D8251 EQU 0FFE0H COM_MOD EQU 04EH COM_COM EQU 25H ZXK EQU 0FFDCH ZWK EQU 0FFDDH LED DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H DB 88H,83H,0C6H,0A1H,86H,8EH,0FFH,0CH,0DEH,0F3H BUF DB ?,?,?,?,?,? START: MOV BX,4000H MOV AL,[BX] CMP AL,00H JNZ SR0 SR8251: MOV DX,Z8251 MOV AL,COM_MOD OUT DX,AL MOV AL,COM_COM OUT DX,AL MOV AL,10

相关文档
最新文档