文档库 最新最全的文档下载
当前位置:文档库 › 微机实验2

微机实验2

微机实验2
微机实验2

微机原理实验报告

实验二

班级:

姓名:

学号:

序号:

评阅分数:

一、实验目的

1.掌握不同进程数及编码相互转换的程序设计方法,加深对数码转换的解;

2进一步熟悉键盘使用方法; 3.进一步熟悉调试程序的方法。

二. 实验设备

装有汇编软件的IBMPC 机一台

三、实验内容及步骤

计算机输入设备输入的信息一般ASCii 码或BCD 码表示的数据或字符,CPU 处理信息一般均用二进制数进行计算或其它处理,处理结果输出的外设有必须一外设的要求变为ASCII 码,BCD 码或七段显示码等。因此,在应用软件中各累数制的转换和代码的转换是必不可少的。

计算机于外设间的数码转换关系如图2-1所示,数码对应关系如表2-1所示。

1、将ASCII 码表示的十进制数转换为二进制数 十进制数可表示为:

l n

l l n n n

n D D D D 10*10* (10)

*10*60

01

1∑=--=+++

L D 代表十进制1,2,3,···9,0;

((...(10*0=∑=l

n

l l D 012110*)...10*)10*)10*D D D D D n n l n +++++-- 由式(2)可归纳十进制数转换为二进制数的方法:从十进制的最高位Dn 开始作乘10加次位的操作,将结果再乘10再加下一个次位,如此重复,则可求出二进制的数结果来。程序流程图如图2-2。这里我们规定:被转换的ASCII 码十进制数存放在3500h ~3504h 单位中。而转换结果在3510~3511单位中。

实验步骤

(1) 输入程序并检查无误。

(2) 在3500~3504h 单元存入十进制12的ASCII 码,即e3500,并输入

3030303132。

(3) g =2000,运行程序,并用CTR+C 来中断程序返回监控态。 (4) 用d3510查看结果,应为3510 0C 00 (5) 反复试几组数,考查程序的正确性。 (6) 参考流程图如图2-2

2.将从键盘输入的五位十进制数的ASCII码已存在3500起始的内存单元中。把它转换成BCD码后,再按位分别存入350A起始的内存单元内。若输入的不是十进制的ASCII码,则显示FF.

程序流程图如图2-3

实验步骤

(1)输入程序并检查无误。

(2)在3500~3504H单元存入五位十进制数的ASCII码,即e3500 并输入31,32,33,34,35。

(3) G=2000,运行以上程序。

(4) D350A,显示结果为:0000:350A 01 02 03 04 CC…

(5)反复试几组数,考查程序的正确性。

(6)参考流程图如下

3.将十六位二进制数转换为ASCII码表示的十进制数。

十六进制数的值域为0~65535,最大可转换为五位十进制数。

实验步骤

(1)输入程序并检查无误。

(2)在3500~3501H单元中存放0C00,运行程序并检查结果,应看到3510~3514H单元中的数依次为3030303132。

(3)参考流程图见图2-4

4.十六进制数转换为ASCII码

设经过CPU处理后的十六进制存放在起始地址为3500H的内存中,把它们转换成ASCII码之后,再分别存入起始地址为3510的内存单元中。参考流程图如图2-5所示。

实验步骤

(1)输入程序并检查无误。

(2)在3500~3501H单元中存入四位16进制数203B,即:e3500,并输入3B,20。

(3) G=2000,运行程序

(4) D350A,显示结果为:

0000:350A 42 33 30 32 CC`

输入数与结果ASCII码对应顺序相反。

(5)参考流程图如下

5.BCD码转换为二进制码

设四个二位十进制的BCD码存放在起始地址为3500H的单元中,转换出的二进制数码存入起始为3510的内存单元中,程序流程图如图2-6。

实验步骤

(1)输入程序并检查无误

(2)在3500~3501H单元中存入四个十进制数(12,34,56,78)的BCD码,即e3500,输入01.02.03.04.05.06.07.08。

(3) G=2000,运行程序

(4) D3510,显示结果为3510 0C 00 22 00 38 00 4E 00

(5)参考流程图见图2-6 6.实验流程图:

图2-2

图2-3

2-4

图2-5

图2-6

四、程序与调试过程

1.

代码:

DA TA SEGMENT

ORG 3500H

SOURCE1 DB 31H,32H,33H,34H,35H ORG 3510H

DESTINATION1 DW ?

ORG 3520H

COUNT EQU 4

ORG 3530H

MULNUM DW 10

DA TA ENDS

CODE SEGMENT

ASSUME DS:DATA ,CS:CODE

START: MOV AX,DA TA

MOV DS,AX

MOV CL,COUNT

MOV SI,OFFSET MULNUM

MOV AX,0

MOV DX,0

MOV BX,OFFSET SOURCE1

ADD AL,BYTE PTR[BX]

SUB AX,30H

NEXT:MUL WORD PTR[SI] ;必须要用字来相乘

INC BX

ADD AL,BYTE PTR[BX]

XCHG AH,DH ;先保存AH数值

LAHF ;将标志位移到AH寄存器

AND AH,01H ;将CF取出

ADD AH,DH ;AH加上CF

SUB AX,30H

DEC CL

JNZ NEXT

MOV BX,OFFSET DESTINATION1

MOV [BX],AX

CODE ENDS

END START

调试:

2.

代码:

DA TA SEGMENT

ORG 3500H

SOURCE1 DB 5 DUP(?)

ORG 3510H

DESTINATION1 DB 5 DUP(?)

ORG 3520H

MESS DB 'FF$' ;字符串显示FF

DA TA ENDS

CODE SEGMENT

ASSUME DS:DATA ,CS:CODE

START: MOV BX,OFFSET SOURCE1

MOV SI,OFFSET DESTINA TION1

MOV AX,DATA

MOV DS,AX ;初始数据段

TRAN: MOV AH,1

INT 21H ;键盘输入1个字符存入AL

CMP AL,0DH ;是否是回车键

JE EXIT ;回车键,跳出输入,程序结束

CMP AL,30H ;是否大于或等于0

JAE SHOWFF ;大于或等于0,跳过显示‘FF’

CMP AL,39H ;是否小于或等于9

JLE SHOWFF ;小于或等于0,跳过显示‘FF’

MOV DX,OFFSET MESS

MOV AH,9

INT 21H ;显示字符串‘FF’

JMP TRAN ;重新输入

SHOWFF: MOV [BX],AL

INC BX

SUB AL,30H ;转化成BCD码

MOV [SI],AL

INC SI

JMP TRAN ;循环输入

EXIT :

CODE ENDS

END START

调试过程:

3.

代码:

DA TA SEGMENT

ORG 3500H

SOURCE1 DB 0CH,00H

ORG 3510H

DESTINATION1 DB 5 DUP(?)

DA TA SEGMENT

ORG 3500H

SOURCE1 DB 0CH,00H

ORG 3510H

DESTINATION1 DB 5 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME DS:DATA ,CS:CODE

START: MOV BX,OFFSET SOURCE1

MOV SI,OFFSET DESTINA TION1

ADD SI,5 ;目标存储地址末端+1

MOV AX,DATA

MOV DS,AX ;初始化数据段

MOV AX,[BX]

MOV CX,10 ;除数进入CX寄存器

TRAN: DEC SI ;指向目标存储地址末端

MOV DX,0

DIV CX

ADD DX,30H

MOV BYTE PTR[SI],DL ;将ACSII码存入存储器

DEC CL

TEST AX,65535 ;测试商是否为0

JNZ TRAN ;商不为0,跳转到TRAN处执行COMP: CMP SI,3510H ;高位是否有0

JZ EXIT ;高位没有0,退出

DEC SI

MOV BYTE PTR[SI],30H ;高位有0,将0的ACSII码存入

JMP COMP

EXIT:

CODE ENDS

END START

调试过程:

4.

代码:

DA TA SEGMENT

ORG 3500H

SOURCE1 DB 2 DUP(?)

ORG 3510H

DESTINATION1 DB 4 DUP(?)

COUNT EQU $-OFFSET DESTINATION1 ;存入目标地址字节DA TA ENDS

CODE SEGMENT

ASSUME DS:DATA ,CS:CODE

START: MOV DI,OFFSET DESTINATION1

MOV CH,COUNT

MOV AX,DATA

MOV DS,AX ;初始代码段

MOV CL,4 ;CL中装入移位次数

MOV DX,WORD PTR [SOURCE1]

TRAN: MOV AX,DX

AND AX,15 ;取低四位

CMP AL,10 ;0~9?

JL NUMBER ;0~9,跳转到NUMBER执行

ADD AL,7 ;A-Z,+7

NUMBER: ADD AL,30H

MOV BYTE PTR[DI],AL

INC DI

SHR DX,CL ;DX右移四次

DEC CH

CMP CH,0 ;CH=0?

JNZ TRAN ;CH≠0,跳转到TRAN处执行

CODE ENDS

END START

调试过程:

5.

代码:

DA TA SEGMENT

ORG 3500H

SOURCE1 DB 8 DUP(?)

ORG 3510H

DESTINATION1 DB 8 DUP(?)

DA TA ENDS

CODE SEGMENT

ASSUME DS:DATA ,CS:CODE

START: MOV SI,OFFSET SOURCE1

MOV DI,OFFSET DESTINATION1

MOV CX,4 ;转换代码长度

MOV AX,DATA

MOV DS,AX ;初始数据段

MOV BL,10

TRAN: MOV AL,[SI]

MUL BL

INC SI

ADD AL,[SI] ;BCD码个位十位相加

INC SI

MOV [DI],AL

ADD DI,2

LOOP TRAN

CODE ENDS

END START

调试过程:

微机接口实验

北京科技大学计算机与通信工程学院 实验报告 实验名称:实验一8259 中断控制器应用实验 实验二8254 定时/计数器应用实验 实验三8255 并口控制器应用实验学生姓名: 专业: 班级: 学号: 指导教师: 实验成绩: 实验地点:机电楼320 实验时间:2015 年12 月 4 日

一、实验目的与实验要求 1、实验目的 实验一 1.掌握PC 机中断处理系统的基本原理。 2.掌握可编程中断控制器8259 的应用编程方法。 实验二 1.掌握8254 的工作方式及应用编程。 2.掌握8254 典型应用电路的接法。 实验三 1.掌握8255 的工作方式及应用编程。 2.掌握8255 典型应用电路的接法。 2、实验要求 实验一 (1)实验1-1:PC 机内中断应用实验 ①按接线图连好接线,调用程序源代码8259-1.asm,观察实验现象,将屏幕显示结果以截图方式写在实验报告中。 ②自设计实验。改变接线方式,将单次脉冲连到USB 核心板上的IRQ10 插孔上,参考本实验代码,编程实现IRQ10 中断。(注意:考虑PC 机内中断级联的方式,参看前面的原理说明),将代码写在报告中。 (2)实验1-2:PC 机内中断嵌套实验 ①按接线图连好接线,调用程序源代码8259-2.asm,做如下操作,并将屏幕显示结果以截图的方式写在实验报告中,并分析产生该现象的原因: A.按下连接IRQ 的单次脉冲按键,屏幕上会显示10个3,在屏幕上10 次显示未结束之前,按下连接IRQ10 的单次脉冲按键,观察现象; B.按下连接IRQ10 的单次脉冲按键,屏幕上会显示10个10,在屏幕上10次显示未结束之前,按下连接IRQ3 的单次脉冲按键,观察现象。 ②程序中所有代码均没有注释,请在报告中补全注释,尽量详细。

微机原理实验简易计算器

【实验题目】 简易计算器设计 【实验目的】 综合测试学生微机接口技术及应用能力,包括系统构思设计、电路设计搭建、软件调试等; 结合应用实际,培养学生运用微机技术服务应用、服务实际的能力。 【基本要求】 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 .

微机原理实验

实验一简单的程序设计(视频教程)(实验代码)(实验软件) 一、实验目的 1、了解汇编语言程序设计的基本格式; 2、掌握常用寻址方式和简单指令的执行过程; 3、掌握DEBUG常用命令及调试过程。 二、实验内容 1、编写汇编语言程序,用DOS系统功能调用21H的02H功能显示字符?A?。 2、编写汇编语言程序,用DOS系统功能调用21H的09H功能显示字符串?MY NAME IS CHINESE?。 三、实验要求 1、实验前准备好汇编语言源程序; 2、掌握关于程序调试等内容。 四、说明上机调试的步骤,以及出现的问题,对问题的分析和解决。 【实验内容1】 代码: *** 输出: *** 【实验内容1】 代码: *** 输出: *** 实验二分支程序设计(实验代码) 一、实验目的 1、掌握分支程序的基本设计思想; 2、熟练掌握分支结构程序的设计过程和调试方法。 二、实验内容 编写汇编语言程序,用DOS系统功能调用21H的08H功能接收键盘字符(AL=字符),若是F,显示“This is the first word string.”;若是S,显“This is the second word string. ”,否则退出。 三、实验要求 1、实验前准备好汇编语言源程序(要求画出程序流程图); 2、掌握关于程序调试等内容。 四、说明上机调试的步骤,以及出现的问题,对问题的分析和解决。 【实验内容】 代码: *** 输出: *** 实验三循环程序的设计(实验代码1)(实验代码2) 一、实验目的 1、熟悉循环程序的设计方法; 2、学习乘法指令的用法。 二、实验内容 实现两个字节相乘的程序,并转换成十六进制数显示出结果。

微机原理与接口技术实验指导_4_循环程序设计实验

2.4 循环程序设计实验 2.4.1 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 2.4.2 实验预习要求 1、复习比较指令、条件转移指令和循环指令。 2、复习循环程序的结构、循环控制方法等知识。 3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.4.3 实验内容 计算1+2+……n=?,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1 627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示 的范围)。 1、编程指导 (1)键盘输入的十进 制数如368在计 算机中是以 33H,36H,38H 形式存放的,如 何将它们转换为 一个二进制数 101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下: DA TA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DA TA START: MOV AX, DA TA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0

【微机实验报告(含思考题)河畔下的哈】实验4

电子科技大学 实验报告 学号学生姓名: 课程名称: 任课老师: 实验项目名称

实验四基于ARM的嵌入式Linux开发环境建立 【实验目的】 1. 掌握嵌入式Linux开发环境的基本流程。 2. 熟悉Linux操作系统 3. 熟悉嵌入式开发平台 【实验内容】 在PC机虚拟机下的Linux系统中建立基于ARM的嵌入式Linux开发环境。 1.学会网口的配置 2.Minicom端口的使用 【预备知识】 1.了解ARM9处理器结构 2.了解Linux系统结构 3. 了解ARM开发板使用常识 【实验设备和工具】 硬件:PC 机Pentium100 以上,ARM嵌入式开发平台 软件:PC机Linux操作系统+MINICOM +AMRLINUX开发环境 【实验原理】 1.交叉编译器 在一种计算机环境中运行的编译程序,能编译出在另外一种环境下运行的代码,我们就称这种编译器支持交叉编译,这个编译过程就叫交叉编译。简单地说,就是在一个平台上生成另一个平台上的可执行代码。这里需要注意的是所谓平台,实际上包含两个概念:体系结构(Architecture)、操作系统(Operating System)。同一个体系结构可以运行不同的操作系统;同样,同一个操作系统也可以在不同的体系结构上运行。举例来说,我们常说的x86 Linux平台实际上是Intel x86体系结构和Linux for x86操作系统的统称;而x86 WinNT平台实际上是Intel x86体系结构和Windows NT for x86操作系统的简称。 交叉编译这个概念的出现和流行是和嵌入式系统的广泛发展同步的。我们常用的计算机软件,都需要通过编译的方式,把使用高级计算机语言编写的代码(比如C代码)编译(compile)成计算机可以识别和执行的二进制代码。比如,我们在Windows平台上,可使用Visual C++开发环境,编写程序并编译成可执行程序。这种方式下,我们使用PC平台上的Windows工具开发针对Windows本身的可执行程序,这种编译过程称为native compilation,中文可理解为本机编译。然而,在进行嵌入式系统的开发时,运行程序的目标平台通常具有有限的存储空间和运算能力,比如常见的 ARM 平台,其一般的静态存储空间大概是16到32MB,而CPU 的主频大概在100MHz到500MHz之间。这种情况下,在ARM平台上进行本机编译就不太可能了,这是因为一般的编译工具链(compilation tool chain)需要很大的存储空间,并需要很强的CPU运算能力。为了解决这个问题,交叉编译工具就应运而生了。通过交叉编译工具,我们就可以在CPU能力很强、存储空间足够的主机平台上(比如PC上)编译出针对其他平台的可执行程序。

微机实验指导书

机自学院自动化系2016.3.20

目录 实验一开关状态显示 (3) 实验二模拟交通灯实验 (6) 实验三8253定时器/计数器实验 (10) 实验四D/A转换器实验 (15) 实验五A/D转换器实验 (18) 实验六8259中断控制(1) (22) 实验七8259中断控制(2) (25)

实验一开关状态显示 一、实验目的 熟悉实验箱和软件开发平台的使用。了解基本I/O端口的操作方法和技巧,掌握编程和调试基本技能。 二、实验内容 利用74LS244作为输入口,读取开关状态,根据给定表格中开关状态对应的输出关系,通过74LS273驱动发光二极管显示出来。 三、实验区域电路连接图

参考上图连线: Y0~Y1接K1~K2(对应J1、J2);Q0~Q7接L1~L8(对应J3至J10);CS1接8000H 孔(对应J12);CS2接9000H孔(对应J11);IOWR→IOWR;IORD→IORD;然后用数据排线连接JX7→JX17(BUS2)。 四、编程指南 本实验要求编写程序将连接在74LS244芯片端口的开关状态读入,根据下面表格给出的开关状态对应的LED输出灯亮状态,控制74LS273芯片驱动LED。按下MON或系统复位键则返回监控。 五、程序框图

六、实验步骤 1. 按连线图连接好,检查无误后打开实验箱电源。 2. 在PC端软件开发平台上输入设计好的程序,编译通过后下载到实验箱。 3. 运行程序后,拨动K1-K2,L1-L8会跟着亮灭。 4. 如果运行不正常就要检查连线,程序。排查错误,修改程序,直到运行程序正常。 七、实验程序清单及注释 根据要求编写程序,最后记录调试成功的程序,写好注释便于自己或他人阅读。 八、实验报告 应包括画电路图、实验程序框图、编程(要有注释)、调试过程及心得体会等。问答题: 1. I/O端口的寻址方式有哪2种?在x86系统中,采用哪一种? 2. 在输入/输出电路中,为什么常常要使用锁存器和缓冲器?

微机原理

微机原理第四次上机实验循环程序设计实验 班级:电子0801班 姓名: 学号:日期:2011-6-12 2.4 循环程序设计实验

2.4.1 实验目的 1、掌握循环程序的设计方法。 2、掌握比较指令、转移指令和循环指令的使用方法。 3、进一步掌握调试工具的使用方法。 2.4.2 实验预习要求 1、复习比较指令、条件转移指令和循环指令。 2、复习循环程序的结构、循环控制方法等知识。 3、读懂“2.4.3 实验内容”中给出的将十进制数转换为二进制数以及将二进制数转换为十进制数的程序。 4、根据“2.4.3 实验内容”中给出的流程图和程序框架编写源程序,以便上机调试。 5、从“2.4.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.4.3 实验内容 计算1+2+……n=?,其中n通过键盘输入。要求在屏幕上提供如下信息: Please input a number(1~627): ;出现此信息后通过键盘输入一个小于628的无符号整数 1+2+…..n=sum;其中n为用户输入的数,sum为所求的累加和 程序运行情况如下图所示(说明:图中所运行程序允许累加和不大于一个32位二进制数所能表示的范围)。 1、编程指导 (1)键盘输入的十进制数如368在计算机中是以33H,36H,38H形式存放的,如何将它们转换为一个二进制数101110000B,以便对累加循环的循环次数进行控制是本程序首先要解决的问题。将键盘输入的十进制数转换为二进制数的程序清单如下: DA TA SEGMENT INF1 DB "Please input a number (0-65535):$" IBUF DB 7,0,6 DUP(?) DA TA ENDS CODE SEGMENT ASSUME CS: CODE, DS:DATA START: MOV AX, DATA MOV DS, AX MOV DX, OFFSET INF1 MOV AH, 09H INT 21H MOV DX, OFFSET IBUF ;键入一个十进制数(<65535) MOV AH, 0AH INT 21H MOV CL, IBUF+1 ;十进制数的位数送CX MOV CH, 0 MOV SI, OFFSET IBUF+2 ;指向输入的第一个字符(最高位) MOV AX, 0 ;开始将十进制数转换为二进制数 AGAIN: M OV DX, 10 ;((0?10+a4) ?10+…) ?10+a0 MUL DX AND BYTE PTR [SI], 0FH ADD AL, [SI] A DC AH, 0 I NC SI

微机原理实验

;实验一汇编程序、链接程序、编辑程序及调试程序得基本使用方法 ;一、实验目得 ;1.熟悉在PC机上建立、汇编、连接、调试与运行汇编语言程序得过程。 ;2.掌握字符串得复制,并会用各种方法实现。 ;3.掌握字符串显示得DOS功能调用。 ;二、实验内容及要求 ;1.将以符号地址为ARRAY1开始得字符串“请自己定义”复制到ARRAY2开始得存储单元中并显示在屏幕上。 ;2、使用三种方法传送: ;(1) 用MOV指令传送 ;(2) 用基本串传送指令 ;(3) 重复串传送指令 MY_DATA SEGMENT PARA 'DATA';数据段 DISP1 DB 'How are you?',0aH,0DH,'$'; ARRAY1 DB 'DI',41H,'NZI09','$'; ARRAY2 DB 20 dup(0) MY_DATA ENDs MY_CODE SEGMENT PARA 'CODE' ;代码段 MY_PROC PROC FAR ASSUME CS:MY_CODE, DS:MY_DATA START: MOV AX,MY_DA TA MOV DS,AX MOV ES,AX LEA DX,DISP1;显示提示字符串 MOV AH,09H INT 21H ;;开始(1) 用MOV指令传送 ;LEA SI,ARRAY1; ;LEA DI,ARRAY2; ;MOV CX,09H LOOP1: ;MOV BH, [SI] ;MOV [DI], BH ;INC SI ;INC DI ;LOOP LOOP1 ;;开始(2) 用基本串传送指令 LEA SI,ARRAY1; LEA DI,ARRAY2; MOV CX,09H CLD LOOP2: MOVSB LOOP LOOP2 ;;开始(3) 重复串传送指令 ;LEA SI,ARRAY1;

微机实验二实验报告

广东技术师范学院实验报告 学院:自动化专业: 电气工程及其自 动化(低压电力智 能控制) 班级: 11低 电 成绩: 姓名:曹睿学号:2011104743018 组别:组员: 实验地点:教学楼703 实验日期:2012.04.11 指导教师签名:实验二项目名称:输入输出程序的编制 一、实验目的与要求 了解DOS的中断调用,实现数据的输入与输出,熟悉高级汇编调试工具Visualmasm的使用。 二、实验类型 验证型实验 三、实验原理及说明 利用DOS中断调用中的1号,2号和9号调用功能实现数据的输入与输出,同时通过本程序的调试了解汇编软件的使用。 1号调用:键盘输入字符 入口参数:无 出口参数:输入字符的ASCII码在AL寄存器中。 2号调用:显示器输出 入口参数:要输出的字符的ASCII码放在DL寄存器中 出口参数:无 9号调用:显示器输出字符串 入口参数:DS:DX中存放输出字符串缓冲区的首地址,字符串要求用字符”$”结束。 出口参数:无 四、实验主要仪器设备和材料 预习情况操作情况考勤情况数据处理情况

序号名称主要用途 1 电脑调试程序 五、实验内容和步骤 1、写一段程序,输出一个字符串“Visualmasm!” 步骤:在记事本里输入以下程序,把文件命名为zp1.asm: DATA SEGMENT STRING DB'Visualmasm!$' DATA ENDS CODE SEGMENT ASSUME CS:CODE, DS:DATA, ES:DATA START:MOV AX,DATA MOV DS, AX MOV ES, AX MOV AH,09H LEA DX,STRING INT 21H MOV AH,4CH INT 21H CODE ENDS END START 打开命令提示符,生成zp1.obj文件,接着生成zp1.exe文件,输入td zp1.exe,就可以在TD里查看输入的程序。点击数据区,右键点击GOTO,输入5B72:0000,可以看到Visualmasm的ASCII码,56 69 73 75 61 6C 6D 61。 2、写一段程序。从键盘读入一个小写字母,然后把它转换成大写字母并输出。 步骤::在记事本里输入以下程序,把文件命名为zp2.asm DSEG SEGMENT STRING DB'a' DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG,DS:DSEG START:MOV AX,DSEG MOV AH,01

微机原理与技术实验三:循环程序结构

实验三:循环程序设计 一、实验目的:掌握循环程序结构,熟悉汇编上机环境。 二、实验内容: (1)不用串操作指令,编程实现测试一字符串中空格符的个数(空格数<100),并将个数存放到COUNT变量中。 (2)将COUNT的值显示在屏幕上(按十进制格式显示)。 三、实验步骤: 1、在“轻松汇编”环境下编写、编译和生成程序; 2、运行程序,观察显示结果是否正确。 四、源程序及参考流程图: DATA SEGMENT BUF DB '123 w q 1 $’ COUNT DB 0 DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DA TA START: 补全程序 MOV AH,4CH INT 21H CODE ENDS END START 五、实验小结 说明:实验报告要包涵上述五项 DA TA SEGMENT BUF DB '123 w q 1 $' COUNT DB 0 DATA ENDS

CODE SEGMENT ASSUME CS:CODE,DS:DA TA START: MOV AX,DATA MOV DS,AX LEA SI,BUF AGAIN: MOV AL,[SI] CMP AL,'$' JNZ A1 JZ EXIT A1: CMP AL,' ' JNZ A2 INC COUNT JMP A2 A2: INC SI JMP AGAIN EXIT: MOV AL,COUNT CBW MOV BL,10 DIV BL MOV BH,AH ADD AL,'0' MOV DL,AL MOV AH,2 INT 21H ADD BH,'0' MOV DL,BH INT 21H MOV AH,4CH INT 21H CODE ENDS END START

微机原理实验报告

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

微机原理实验2

微机原理实验 (第二次) 仅供参考不予下载

2.2 字符及字符串输入输出与顺序程序设计实验 2.2.1 实验目的 1、学习和掌握字符及字符串的输入输出方法。 2、掌握顺序程序的设计方法。 3、进一步掌握调试工具的使用方法。 2.2.2 实验预习要求 1、复习DOS功能调用中用于字符输入(功能号01H)、字符输出(功能号02H)、字符串输入(功能 号为0AH)以及字符串输出(功能号09H)的调用方法(详见教材5.5.6)。 2、复习BCD码运算调整指令。 3、根据“2.2.3 实验内容”中给出的源程序框架编写完整的源程序,以便实验时调试。 4、从“2.2.4 实验习题”中任选一道题目,编写源程序,以便上机调试。 2.2.3实验内容 从键盘输入两个一位十进制数,计算这两个数之和,并将结果在屏幕上显示出来。 1、问题分析 比如使用功能号为01H的用于实现单个字符输入的DOS功能调用接收从键盘输入的两个十进制数8和6,这时计算机内部得到的是这两个数的ASCII码值38H和36H。由于数字09的ASCII码值与其代表的数值之间相差30H,因此将其减去30H即可得到以非压缩型BCD数形式表示的十进制数08H和06H,使用ADD指令对它们进行相加后结果为0EH(00001110B),显然需要用非压缩型BCD数加法调整指令对ADD的运算结果进行调整,调整后得到两个非压缩型BCD数01H和04H,将它们分别加上30H后变为其对应的ASCII码31H(1的ASCII码)和34H(4的ASCII码),然后调用功能号为02H用于单个字符输出的DOS功能调用将它们显示出来。综上所述,需要考虑以下问

微机接口实验二(实验报告)

实验二 循环和分支程序设计 学号 201316122 姓名 黄成楠 专业 通信工程 成绩 【实验目的】 (1) 熟悉上机实验流程、调试及查看实验结果。 (2) 熟悉汇编语言编程环境,DOS 调用应用; (3) 编写循环和分支程序,并调试; 【实验内容及步骤】 1、 实验要求: 从键盘输入一系列字符, 以回车符结束,编程统计其中数字字符的个数(不超过100个) 提示: 程序首先调用DOS 功能的1号功能,从键盘输入字符。为得到字符串,可以采用循环结构,连续输入。在输入的过程中通过判断是否是回车来结束输入。其中回车的ASII 码(0DH )。数字的0的ASII 码(30H )9的(39H ) 流程图: Next1函数: Next 函数:

Exit函数: 2、实验内容: DSEG SEGMENT DATA1 DB 100 DUP(?) DATA2 DB 'please input:','$' DSEG ENDS CSEG SEGMENT ASSUME CS:CSEG, DS:DSEG START: MOV AX, DSEG MOV DS, AX MOV BX,0 LEA DX,DATA2 MOV AH,09H INT 21H NEXT2: MOV AH,1 INT 21H CMP AL,0DH JE EXIT CMP AL,30H JAE NEXT3 JMP NEXT2 NEXT3: CMP AL,39H JBE NEXT4 JMP NEXT2 NEXT4: INC BX JMP NEXT2 EXIT: MOV AX,BX MOV CL,10 DIV CL

微机原理两个数相乘的实验

实验四两个数相乘的实验 1、实验目的 掌握乘法指令和循环指令的用法 2、实验内容 实现十进制数的乘法,被乘数和乘数均以ASCH码形式存放在内存中,乘积在屏幕上显示出来。 3、程序框图 ↓ ↓ ↓ ↓ ↓ ↓ ↓

↓ ↓ ↓ ↓ ↓ 4、程序编写如下: DATA SEGMENT DATA1 DB 32H,39H,30H,35H,34H DATA2 DB 33H RESULT DB 6 DUP(OOH) DATA ENDS

STACK SEGMENT STACK'STACK' STA DB 30 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 DATA2 MOV BL,[SI] AND BL,00001111B MOV SI,OFFSET DATA1 MOV DI,OFFSET RESULT MOV CX,05 LOOP1: MOV AL,[SI] AND AL,00001111B INC SI

MUL BL AAM AAD AL,[DI] AAA MOV [DI],AL INC DI MOV [DI],AH LOOP LOOP1 MOV CX,06 MOV SI,OFFSET RESULT+5 DISPL: MOV AH,02 MOV DL,[SI] ADD DL,30H INT 21H DEC SI LOOP DISPL MOV AX,4COOH INT 21H CODE ENDS END START

微机实验报告(1)

《微机实验》报告 实验名称 KeilC的使用与汇编语言上机操作 指导教师刘小英 专业班级中法1201 姓名肖洋学号 U3 联系电话 一、任务要求 1.掌握KeilC环境的使用 1)字节拆分、合并:调试程序,观察相关寄存器和单元的内容。 2)数据块填充:调试程序,观察相关寄存器和单元的内容。 2. 编写两个十六位数的加法程序。 有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八 位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。 二、设计思路 1.字节拆分、合并程序:利用汇编语言中的 XCHD 和 SWAP 两个语句来实现将八位二进制 数拆分为两个四位二进制数并分别存储于不同的存储空间的功能,BCD 码与 30H 相或(加 上 30H)得到 ASCII 码。将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,利 用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。 2.数据块填充程序:将 R0 用作计数器,DPTR 用作片外数据指针,A 作为原始数据来源, 依顺序在片外的存储单元内容填充数据。利用循环语句来减少程序长度,并控制填充单 元个数为片外 100H 个。(通过 R0 的进位控制) 3.两个十六位数加法程序:把第一个十六位无符号数的地八位和高八位分别存于 20H 和 21H 中,把第二个十六位无符号数的地八位和高八位分别存于 30H 和 31H 中,对 20H 和 30H 中的两个低八位进行 ADD 加法操作,结果存于 R4 中;然后对 21H 和 31H 中的两 个高八位进行 ADDC 带进位的加法操作,结果存于 R3 中.然后将累加器 A 清零,并和#00H

微机原理实验报告西安交通大学

西安交通大学 电子信息与工程学院自动化科学与技术系微机原理与接口技术实验报告 实验名称:微机原理与接口技术 实验者姓名: XX 实验者学号:21105040XX 所在班级:自动化1X 报告完成日期:2014年1月12日

实验一 数据传送、算术运算、循环程序结构 1、实验目的 a)熟悉8086汇编语言源程序的框架结构,并掌握汇编语言程序的编写、汇 编、连接、执行的过程,并利用Turbo Debugger调试汇编程序。 b)熟悉8086指令系统的数据传送指令,掌握寻址方式。 c)熟悉8086指令系统的算术运算指令。掌握循环结构汇编语言程序的编制。 2、实验内容 教材P121,第14、15题。教材P195,第6题。教材P196,第12题。 3、具体实验 第一题(P121,第14题) 设有两个8个字节长的BCD码数据BCD1及BCD2。BCD1数以1000H为首地址在内存中顺序存放;BCD2数以2000H为首地址在内存中顺序存放。要求相加后结果顺序存放在以2000H为首地址 的内存区中(设结果BCD数仍 不超过8个字节长)。 a) 实验原理 考虑两个8个字节长的 BCD码相加,首先根据地址要 求将数据放在对应的地址单 元中,然后做加法,BCD码相 加要用到调整指令,结果才 为正确的BCD数 b) 程序框图

c) 程序源代码 DATAS SEGMENT ORG1000H BCD1 DB 01H,02H,03H,04H,05H,06H,07H,88H;起始地址为1000H ORG2000H BCD2 DB 11H,12H,13H,14H,15H,16H,17H,18H;起始地址为2000H DATAS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS START: MOV AX,DATAS MOV DS,AX MOV BX,0 MOV CX,8 ;设置循环次数8次 CLC ;清进位CF标志 AGAIN:MOV AL,[BX+1000H] ADC [BX+2000H],AL;结果放在2000H开始的单元内 DAA INC BX LOOP AGAIN;没完成则转AGAIN循环 MOV AH,4CH INT 21H CODES ENDS END START 运行: BCD1 DB 11H,12H,13H,14H,15H,16H,17H,18H BCD2 DB 21H,22H,23H,24H,25H,26H,27H,28H 结果如下:DS:2000H为首地址的连续八个字节单元中

微机实验二、三

实验二运算类编程实验 一、实验目的 1)掌握使用运算类指令编程及调试方法。 2)掌握运算类指令对各状态标志位的影响及其测试方法。 3)学习使用软件监控变量的方法。 二、实验设备 PC一台,TD-PITE微机/单片机教学实验装置一套。 三、实验内容及步骤 1、十进制的加法运算 题目:计算X+Y=Z,其中X、Y、Z为2字节非压缩BCD数 实验程序如下: STACK SEGMENT STACK STACK ENDS DA TA SEGMENT X DW ? Y DW ? Z DW ? DA TA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX, DATA MOV DS, AX MOV SI, OFFSET X MOV DI, OFFSET Z MOV AL, [SI] ADD AL, [SI+02H] AAA MOV [DI], AL MOV AH, 00H MOV AL, [SI+01H] MOV AL, [SI+03H] AAA INC DI MOV [DI], AX MOV AL, 4CH INT 21H CODE ENDS END START 实验步骤: 1)输入实验程序并检查无误,经汇编、连接后生成EXE文件。 2)使用U(CS):0000↓命令查看MOV AX,DATA语句得数据段段地址,即DS=DA-TA=XXXX, 记下该地址。 3)用E命令E(DS):0000↓给X、Y赋值,假定存入BCD数56和78:06 05 08 07

4)用G=(CS):0000↓命令运行以上程序 5)用D(DS):0004↓,显示计算结果:04 03 01 6)反复试几组数,检验程序的正确性。 编程练习 已知在起始地址为0500H的内存单元中,存放一组数据:10H,15H,0FH。请编程求该数组的总和后将其扩大4倍,再转换成BCD数存入起始地址为0510H的单元中 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS DATA SEGMENT ORG 0500H DATA1 DB 10H, 15H, 0FH ORG 0510H RESULT DB ? DATA ENDS CODE SEGMENT ASSUME CS: CODE, DS: DATA START: MOV AX, DATA MOV DS, AX LEA SI, DATA1 LEA DI, RESULT MOV CX, 0002H MOV AL, [SI] A1: INC SI ADD AL, [SI] LOOP A1 MOV BL, 04H MUL BL MOV DL, 64H MOV AH, 00H DIV DL MOV [DI], AL INC DI MOV AL, AH MOV AH, 00H MOV DL, 0AH DIV DL MOV [DI], AI INC DI MOV [DI], AH INT 03H CODE ENDS ENDS START 实验步骤:

微机原理实验之-分支程序、循环程序设计

实验三分支程序、循环程序设计实验 一、实验目的 1.掌握分支程序的结构。 2.掌握分支程序的设计、调试方法。 3.加深对循环结构的理解。 4.掌握循环结构程序设计的方法以及调试方法。 二、实验设备 PC机一台,TD-PITE实验装置一套。 三、实验内容: 设计一数据块间的搬移程序。设计思想:程序要求把内存中一数据区(称为源数据块)传送到另一存储区(称为目的数据块)。源数据块和目的数据块在存储中可能有三种情况,如图1所示。 图3-1 源数据块与目的数据块在存储中的位置情况 对于两个数据块分离的情况,如图3-1(a),数据的传送从数据块的首地址开始,或从数据块的末地址开始均可。但是对于有重叠的情况,则要加以分析,否则重叠部分会因“搬移”而遭到破坏,可有如下结论: 当源数据块首地址<目的块首地址时,从数据块末地址开始传送数据,如图3-1(b)所示。当源数据块首地址>目的块首地址时,从数据块首地址开始传送数据,如图3-1(c)所示。参考流程:如图3-2所示。

图3-2 程序流程图实验程序 STACK SEGMENT STACK DW 64 DUP(?) STACK ENDS CODE SEGMENT ASSUME CS:CODE START: MOV CX, 0010H MOV SI, 3100H MOV DI, 3200H 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

微机原理实验报告

微机原理 实验报告 学校:湖北文理学院、班级:电子1413 姓名:杨仕浩 学号:2014111347 指导老师:吉向东

实验一两个多位十进制数相加的实验 一、实验目的 学习数据传送和算术运算指令的用法 熟悉在PC机上建立、汇编、链接、调试和运行汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加,要求被加数和加数均以ASCII码形式各自顺序存放在以DATA1、DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验程序清单 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 A DDA 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: M OV AL,[SI] MOV BL,[DI] ADC AL,BL AAA MOV [SI],AL DEC SI DEC DI LOOP AD2 MOV SI,DX MOV DI,BP MOV BX,05H AD3: ADD BYTE PTR [SI],30H ADD BYTE PTR [DI],30H DEC SI

微机实验 实验二

实验2 熟悉汇编程序建立及其调试方法

一、实验目的 1.熟悉汇编语言源程序的框架结构,学会变制汇编程序 2.熟悉汇编语言上机操作的过程,徐汇汇编调试方法 二、实验内容 1.学习编写汇编语言源程序的方法,了解数据存放格式 2.阅读给出的程序,找出程序中的错误 3.通过调试给出的汇编语言源程序,了解并掌握汇编语言程序的建立,汇编,链接,调试, 修改和运行等全过程 三、实验内容 源程序修改 STACKSG:SEGMENT PARA STACK ‘STACK’;不能有冒号 DB 256 DUP(?) STACKSG ENDS DA TASG:SEGMENT PARA ‘DATA’;不能有冒号 BLOCK DW 0,-5,8,256,-128,96,100,3,45,6,512 DW 23,56,420,75,0,-1024,-67,39,-2000 COUNT EQU 20 MAX DW ? DA TASG ENDS CODESG:SEGMENT ;不能有冒号 ASSUME SS:STACKSG , CS:CODESG ASSUME DS:DATASG ORG 100H BEGIN MOV DS, DA TASG ;BEGIN: 应改为MOV AX , DATASG LEA SI ,BLOCK MOV DS, AX MOV CX, COUNT DEC CX MOV AX , [SI] CHKMAX ADD SI,2 ;应加冒号CHKMAX: CMP [SI] , AX JLE NEXT MOV AX , [SI] DEC CX ;删除 NEXT: LOOP CHKMAX MOV MAX ,AX MOV AH, 4CH INT 21H CODESG ENDS END BEGIN

相关文档