搜档网
当前位置:搜档网 › 微机原理实验讲义资料

微机原理实验讲义资料

微机原理实验讲义资料
微机原理实验讲义资料

微机原理实验讲义

程曙艳编

厦门大学自动化系

2016年10月

汇编语言的上机过程

1、建立汇编语言的工作环境

至少有以下程序文件:

编辑程序,文件名https://www.sodocs.net/doc/482799053.html,,使用https://www.sodocs.net/doc/482799053.html,编辑程序代码生成*.asm。

汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件

连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件

调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行

(1)编辑

可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。

(2)汇编

在DOS状态执行masm 文件名,则屏幕显示与操作如下:

(3)连接

汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下:

(4)运行、调试

>DEBUG 文件名.exe

Debug运行后,出现状态提示符短划线-

常用debug命令:

D,显示内存单元内容

R,显示与修改寄存器内容

T、P,单步执行命令

G,连续执行指令

U,反汇编

Q,退出DEBUG程序

2. 汇编语言程序格式

汇编语言由若干个段组成:

堆栈段(保存数据、断点等信息)

代码段(存放指令)必需

数据段(定义数据,分配存储单元)

附加段(定义数据,分配存储单元)

每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾

STACK SEGMENT

......

STACK ENDS

DATA SEGMENT

......

DATA ENDS

ESEG SEGMENT

......

ESEG ENDS

CODE SEGMENT

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

START:mov ax, data

mov ds, ax

mov ax, eseg

mov es, ax

mov ax, stack

mov ss, ax

……….

CODE ENDS

END START

3. 程序例题:

STACKS SEGMENT STACK ;堆栈段

DW 128 DUP(?)

STACKS ENDS

DATAS SEGMENT ;数据段

;请在这里定义您的数据

STRING DB 13,10,'Hello World!',13,10,'$'

DATAS ENDS

CODES SEGMENT ;代码段

ASSUME CS: CODES, DS: DATAS START: MOV AX,DATAS ;初始化

MOV DS, AX

;请在这里添加您的代码

LEA DX, STRING ;显示字符串

MOV AH, 9

INT 21H

MOV AH,01 ;等待键盘输入

INT 21H

MOV AX,4C00H ;退出程序

INT 21H

CODES ENDS

END START

软件实验部分

实验一二进制加、减法编程实验

一、实验要求和目的

1.熟悉汇编语言二进制多字节加法基本指令的使用方法;

2.熟悉汇编语言二进制多字节减法基本指令的使用方法;

3.掌握汇编语言编程的一般结构。

二、实验内容

(1)编写程序,实现长度为2字的两个数相加。

(2)编写程序,实现一个长度为2字的数和一个长度为1字的数相减。

实验二十进制数的BCD加、减法编程实验

一、实验要求和目的

1.熟悉BCD码的基本知识

2.熟悉汇编语言BCD码多字节加减法基本指令的使用方法;

3.掌握BCD码调整指令的使用方法。

二﹑实验内容

(1)编写程序,从键盘输入任意2个数,实现两数相加和相减,结果显示在屏幕上

实验三二进制乘、除法编程实验

一、实验要求和目的

1.熟悉数据的补码表示。

2.熟悉无符号数和有符号数乘法和除法指令的使用;

3.掌握符号位扩展指令的使用。

二﹑实验内容

1)被除数是一个2字长的有符号数,除数是一个1字长的有符号数,求两个数相除的商和余数。

(2)求两个2字长的无符号数相乘的结果,并将结果保存在存储空间中。

实验四ASCII码表示的十进制数、二进制数和BCD的互换

编程实验

一、实验要求和目的

1.了解汇编语言中的十进制、二进制、BCD码的表示形式;

2.了解BCD值和ASCII值的区别

3.了解如何查表进行数值转换及快速计算。

4.掌握利用汇编语言进行进制转换的方法。

二、实验内容

(1)将一个用ASCII码表示的多位十进制转换为二进制,要求十进制不大于65535,且输入数码为无符号数。

(2)将用ASCII码表示的数字串,转化为压缩的BCD码。

三、实验提示

(1)十进制数字串转二进制从最高位开始,重复进行“高位*10+低位”的操作,用公式表示为ΣDi×10i=((…(Dn×10+Dn-1)×10)+Dn-2)×10+…+D1)×10+D0 (2)将ASCII码转换为压缩BCD码,将ASCII码的高4位置0,再将十位ASCII 码的低4位左移至高4位,再与个位ASCII码相或。采用约定寄存器法传递参数。

实验五字符串操作编程实验

一、实验要求和目的

1.了解汇编语言字符串处理基本流程;

2.熟悉汇编语言字符串处理基本指令的使用方法;

3.掌握利用汇编语言实现字符串处理的程序设计方法。

二、实验内容

(1)编写程序,实现两个字符串比较,如相同,则显示“match”,否则,显示“NO MATCH”

(2)编写程序,统计一串字符串中某字符出现的次数。

实验六排序实验

一、实验要求和目的

1.;掌握用汇编语言编写排序程序的思路和方法

2.熟悉汇编语言分支程序基本指令的使用方法;

3.掌握利用汇编语言实现单分支、双分支、多分支的程序设计方法。

二、实验内容

(1)从键盘任意输入10个数,要求把这些数从小到大排序,并将结果输出在屏幕上。

实验七清屏和设置光标的实验

一、实验要求和目的

1.掌握用INT 10H的02H功能设置光标的方法

2. 掌握用INT 10H 的07H 功能清窗口和设置窗口属性的方法

二、实验内容

编制一个程序,先清屏,再设置光标,起始位置为第5行第6列,结束行位置为第8行第9列。

实验八大小写字母的转换实验

一、实验要求和目的

1.了解汇编语言字符串处理基本流程;

2.熟悉汇编语言字符串处理基本指令的使用方法;

3.掌握小写字母和大写字母在计算机内的表示方法

二、实验内容

(1)编写程序,接收键盘输入字符(以^-C为结束,即ASCII码的ETX),并将其中的小写字母转换为大写字母并显示

实验九响铃及接收日期程序

一、实验要求和目的

1.掌握响铃的方法

2. 掌握年月日输入方法

二、实验内容

先显示“WHAT IS THE DATA(MM/DD/YY)?”并响铃一次,然后从键盘接收输入的年月日,并显示在屏幕上。

实验十计算N!的实验

一、实验目的

1.了解数学函数是怎样在汇编语言上实现的

2.掌握汇编程序的分支及循环程序的设计方法

二、实验内容

编写计算N!的程序,数值N由键盘输入,结果在屏幕上输出。N的范围为0~10。

硬件实验部分

实验一I/O地址译码

一、实验目的

掌握I/O地址译码电路的工作原理。

二、实验原理和内容

实验电路如下图所示,其中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闪烁发光(亮、灭、亮、灭、……),时间间隔通过软件延时实现。

实验二简单并行输出接口

一、实验目的

掌握简单并行接口的工作原理及使用方法。

二、实验内容

1、按下面图简单并行输出接口电路图连接线路(74LS273插通用插座,74LS32用实验台上的“或门”)。74LS273为八D触发器,8个D输入端分别接数据总线D0~D7,8个Q输出端接LED显示电路L0~L7。

2、编程从键盘输入一个字符或数字,将其ASCⅡ码通过这个输出接口输出,根据8个发光二极管发光情况验证正确性。

三、编程提示

上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3条指令:

MOV AL,数据

MOV DX,2A8H

OUT DX,AL

通过上述并行接口输入数据需要2条指令:

MOV DX,2ADH

IN AL,DX

实验三简单并行输入接口

一、实验目的

掌握简单并行接口的工作原理及使用方法。

二、实验内容

1、按下面图简单并行输入接口电路图连接电路(74LS244插通用插座,74LS32用实验台上的“或门”)。74LS244为八缓冲器,8个数据输入端分别接逻辑电平开关输出K0~K7,8个数据输出端分别接数据总线D0~D7。

2、用逻辑电平开关预置某个字母的ASCⅡ码,编程输入这个ASCⅡ码,并将其对应字母在屏幕上显示出来。

三、编程提示

1、上述并行输出接口的地址为2A8H,并行输入接口的地址为2A0H,通过上述并行接口电路输出数据需要3条指令:

MOV AL,数据

MOV DX,2A8H

OUT DX,AL

通过上述并行接口输入数据需要2条指令:

MOV DX,2ADH

IN AL,DX

实验四中断控制器8259

一、实验目的

1、了解Windows下中断处理过程

2、了解中断控制器工作原理及扩展中断控制器

二、实验内容

用查询和中断方式分别实现控制指示灯,要求直接用手动产生的单脉冲作为中断请求信号,每按一次单脉冲产生一次中断,PC机显示中断请求信息:

中断0(IN0):mess1 db 'Hello! This is interrupt * 0 *!',0dh,0ah,'$'

中断1(IN1):mess2 db 'Hello! This is interrupt * 1 *!',0dh,0ah,'$'

中断2(IN2):mess3 db 'Hello! This is interrupt * 2 *!',0dh,0ah,'$'

中断3(IN3):mess4 db 'Hello! This is interrupt * 3 *!',0dh,0ah,'$'

中断4(IN4):mess5 db 'Hello! This is interrupt * 4 *!',0dh,0ah,'$'

中断5(IN5):mess6 db 'Hello! This is interrupt * 5 *!',0dh,0ah,'$'

中断6(IN6):mess7 db 'Hello! This is interrupt * 6 *!',0dh,0ah,'$'

中断7(IN7):mess8 db 'Hello! This is interrupt * 7 *!',0dh,0ah,'$'

接线:8259片选接IO地址译码Y6

8259的INTA接VCC

8259的请求(IN0~IN7)分别接单脉冲信号

实验五可编程定时器/计数器8254(1)

一、实验目的

掌握8253的基本工作原理和编程方法。

二、实验内容

按图虚线连接电路,将计数器0设置为方式0,计数器初值为N(N≤0FH),用手动逐个输入单脉冲,编程使计数值在屏幕上显示,并同时用逻辑笔观察OUT0电平变化(当输入N+1个脉冲后OUT0变高电平)。

三、编程提示

8253控制寄存器地址283H

计数器0地址280H

计数器1地址281H

CLK0连接时钟1MHZ

实验六可编程定时器/计数器8254(2)

一、实验目的

掌握8253的基本工作原理和编程方法。

二、实验内容

按下图虚线连接电路,将计数器0、计数器1分别设置为方式3,计数初值设为1000,用逻辑笔观察OUT1输出电平的变化(频率1HZ)

三、编程提示

1、8253控制寄存器地址283H

计数器0地址280H

计数器1地址281H

CLK0连接时钟1MHZ

实验七可编程外围接口芯片8255(1)

一、实验目的

掌握8255方式0的工作原理及使用方法。

二、实验内容

1.实验电路如下图,8255C口接逻辑电平开关K0~K7,A口接LED显示电路L0~L7。

2. 编程从8255C口输入数据,再从A口输出.

三、编程提示

1、8255控制寄存器端口地址28BH

A口的地址288H

C口的地址28AH

2、参考流程图(见图21):

实验八可编程外围接口芯片8255(2)

一.实验目的

通过并行接口8255实现十字路口交通灯的模拟控制,进一步掌握对并行口的使用。

二.实验内容

如下图,L7、L6、L5作为南北路口的交通灯与PC7、PC6、PC5相连,L2、L1、L0作为东西路口的交通灯与PC2、PC1、PC0相连。编程使六个灯按交通灯变化规律亮灭。

三.编程提示: 十字路口交通灯的变化规律要求:

(1)南北路口的绿灯、东西路口的红灯同时亮30秒左右。

(2)南北路口的黄灯闪烁若干次,同时东西路口的红灯继续亮。

(3)南北路口的红灯、东西路口的绿灯同时亮30秒左右。

(4)南北路口的红灯继续亮、同时东西路口的黄灯亮闪烁若干次。

(5)转(1)重复。

实验九可编程外围接口芯片8255(3)

一、实验目的

掌握数码管显示数字的原理

二、实验内容

动态显示编程在两个数码管上循环显示“0000-0099”。

三、编程提示

实验台上的七段数码管为共阴型,段码采用同相驱动,输入端加高电平,选中的数码管亮,位码加反相驱动器,位码输入端高电平选中

接线如下图: 8255的PA口接数码管的段码a~dp

8255的PC口接数码管的位码s0~s3

8255的片选接IO地址译码的Y1

实验十可编程外围接口芯片8255(4)

一、实验目的

1、掌握8255A编程原理。

2、了解键盘阵列结构,学会读取按键的方法。

二、实验内容

按下图接线,8255C口接键盘(实际8255的PC0~PC3接键盘的列0~列3,PC4~PC7接键盘的行0~行3),8255CS接地址译码输出的288h~28fh。8255

的A口PA0~PA7接数码管的a~dp。

8255端口A地址为:288H

端口C地址为:28AH

控制口地址为:28BH

编程使得在键盘阵列上每按一个键后,微机屏幕上有相应字符显示出来,按“E”退出程序。

三、编程提示

1.识别键盘上的闭合键,通过采用行扫描法或行翻转法:

行扫描法是使键盘上某一行线为低电平,而其余行接高电平,然后读取列值;如果列值中有某位为低电平,则表明行列交点处的键被按下;否则扫描下一行,直到扫完全部的行线为止。

行翻转法是识别闭合键时,要将行线接一个并行口,先让它工作在输出方式,将列线也接到一个并行口,先让它工作在输入方式;程序通过输出端口向全部行线上送低电平,然后读取列线的值;如果此时有某一键被按下,则必定会使某一列线值为零,程序再对两个并行端口进行方式设置,使行线工作在输入方式,列线工作在输出方式,并且将刚才读到的列线值从列线所接的并行端口输出,再读取行线上的值;那么,在闭合键所在的行线上的值必定为零。这样,当一个键被按下时,必定可以读到一对唯一的行值和列值。

2.在程序设计时,将各个键对应的代码(列值,行值)放在一个表中,程

序通过查表来确定具体按下的为哪一个键。

实验十一可编程外围接口芯片8255的工作方式一(1)

一、实验目的

1.掌握8255工作方式1时的使用及编程。

2.进一步掌握中断处理程序的编写。

二、实验内容

1.按下图虚线连接好线路。

2.编程提示:

每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:依次输出01H、02H,04H,08H,10H,20H,40H,80H使L0~L7依次发光,中断8次结束。

实验十二可编程外围接口芯片8255的工作方式一(2)

一、实验目的

1.掌握8255工作方式1时的使用及编程。

2.进一步掌握中断处理程序的编写。

二、实验内容

1.按下图虚线连好线路。

2.编程提示:

每按一次单脉冲按钮产生一个正脉冲使8255产生一次中断请求,让CPU进行一次中断服务:读取逻辑电平开关预置的ASCII码,在屏幕上显示其对应的字符,中断8次结束。

微机原理实验报告软件实验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 代码流程图

微机原理实验指导书

微型计算机原理与应用实验指导书 上海大学通信学院

2010 年4 月 PC微机原理实验一 一、目的:掌握PC机DEBUG调试程序有关命令的操作及8086各类指令的 功能。 要求:在PC机上完成下列程序的调试运行,并写出运行结果。二、1.DEBUG的基本操作:(详细内容请参阅教材“程序的调试,P173”和“附录F 调试程序DEUBG的使用,P499”) (1)从WINDOWS进入DOS之后,输入命令启动DEBUG: C:>DEBUG 回车 (2)输入R命令,查看和记录CPU各个寄存器的内容: -R回车 看到什么 (3)输入A命令,汇编下面的字符“WINDOWS”显示程序: -A100 ;从偏移地址是0100H处开始写指令 MOV AH,2 MOV DL, 57 ;57H 是“W ”的ASCII码 INT 21 ;INT 21是DOS 功能调用,AH=2代表2号功能 ;这3句合起来的功能是:显示DL中的字符 MOV DL, 49 INT 2 1 MOV DL, 4E INT 21 MOV DL, 44 INT 2 1 MOV DL, 4F INT 2 1 MOV DL, 57 INT 2 1 MOV DL, 53 INT 2 1 INT 3 ;功能是产生一个断点,不要省略 (4)输入U 命令反汇编上面的程序: -U 100 问:这里100代表什么 (5)输入G命令连续运行上面的程序,记录运行结果:

-G=100 ,57,53依次分别改为574F4E57 (6)输入E命令把上面程序中的数据,49,,44,,45:,,45,4C43,4F4D,-E 103 回车(以下同) -E 107 10B-E -E 10F 113-E 117-E 11B-E (7)输入D命令查看程序机器码的存放情况: -D 100 11E ;看从100开始到11E的机器码 (8)输入G命令再连续运行程序,并记录运行结果: -G=100 (9)依次输入下面的T命令(单步执行)和G命令(设置断点并启动运行),记录各 命令的运行结果: -T=100 回车 -G=100 106 回车 -G=100 10A 回车 -G=100 10E 回车 -G=100 11E 回车 注意: 下面第2—第8段程序是7个实用的小程序,若不小心打错指令,可以这样修改: 例如:CS:0100 B300 MOV BL,0 0102 53 PUSH BX 0103 B220 LP1: MOV DL,20 要修改“PUSH BX”,因为这条指令的IP是0102,所以按以下操作: -A 0102 回车,然后把正确的指令打入,“-A ”是汇编指令。 如果要查看0100以后的指令及相应的机器代码,可以 -U 0100 回车,能够看到CS:0100开始的指令及相应的机器代码。“-U ”是反汇编 若发现有误用,用“-A XXXX 回车”,重打这条指令即可 2.编制一个能在CRT上连续显示A,B,C,D······Z大写英文字符的源程序,并在源程序下汇编调试机运行。

微机原理实验四实验报告

实验报告

实验四 8251可编程串行口与PC机通信实验一、实验要求 利用实验箱内的8251A芯片,实现与PC机的通信。 二、实验目的 1.掌握8251A芯片结构和编程方法; 2.了解实现串行通信的硬件环境,数据格式和数据交换协议; 3.了解PC机通信的基本要求。 三、实验原理 (一)8251A芯片工作方式配置: 1. 8个数据位; 2.无奇偶校验位; 3.1个停止位; 4.波特率因子设为16; 5. 波特率设为9600。 (二)8251A主要寄存器说明 图4-1 模式字 图4-2 命令字

CO MMAN D I NSTR UCT ION FO RMA T 图4-3 状态字 (三)8251编程 对8251 的编程就是对8251 的寄存器的操作,下面分别给出8251 的几个寄存器的格式。(1)方式控制字 方式控制字用来指定通信方式及其方式下的数据格式,具体各位的定义如图4-4所示。 图4-4 方式控制字说明 (2)命令控制字 命令控制字用于指定8251 进行某种操作(如发送、接收、内部复位和检测同步字符等)或处于某种工作状态,以便接收或发送数据。图4-5 所示的是8251 命令控制字各位的定义。 图4-5命令控制字说明 (3)状态字 CPU 通过状态字来了解8251 当前的工作状态,以决定下一步的操作,8251 的状态字如 图4-6所示。 图4-6 状态字说明 四、实验电路连接: 1.CS8251接228H,CS8279已固定接至238H; 2.扩展通信口18中的232RXD连8251RXD ,232TXD连8251TXD;

3.计算机的两个RS232通信口,一个连至仿真机通信口,一个连至扩展通信口18(所有通信口均为DB9)。注意:RS232通信口必须在设备断电状态下插拔! 图4-7 连线图 五、实验内容及要求 1. 将例程从PDF文档中导入到WMD86软件编辑环境中,调试通过。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 2.剔除例程中冗余部分,实现对例程的精简和优化。将精简内容与相应理由写入实验报告。 3.将自己学号的后三位数字通过RS232端口的Txd管脚输出。使用软件自带的示波器,观察Txd管脚的输出,验证结果的正确性。将结果截图保存,贴入实验报告。 4.通过读状态寄存器的方法,获得发送移位寄存器是否为空的信息,实现学号后三位数字的循环发送。将结果截图保存,贴入实验报告。 5.给每帧数据间添加固定的时间间隔,时间间隔为10000个指令周期。将结果截图保存,

微机软件实验习题与答案(完整版)

微机原理软件实验 实验1 两个多位十进制数相加的实验 实验容:将两个多位十进制数相加,要求加数和被加数均以ASCII码形式各自顺序存放以DATA1和DATA2为首的5个存单元中(低位在前),结果送回DATA1处。完整代码如下: DATAS SEGMENT ;此处输入数据段代码 STRING1 DB'input the first number:','$' STRING2 DB 13,10,'input the second number:','$' STRING3 DB 13,10,'the output is:','$' DATA1 DB 6 DUP(00H),'$' DATA2 DB 6 DUP(00H),'$' DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT

ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX ;此处输入代码段代码 LEA SI,DATA1 LEA DI,DATA2 L0: LEA DX,STRING1;打印字符串STRING1 MOV AH,09 INT 21H INPUT1: ;输入第一个数 MOV AH,01;输入字符至AL中 INT 21H CMP AL,'/' JE L1 MOV [SI],AL INC SI

JMP INPUT1 L1: LEA DX,STRING2;打印字符串STRING2 MOV AH,09 INT 21H INPUT2: ;输入第二个数 MOV AH,01;输入字符至AL INT 21H CMP AL,'/' JE L2 MOV [DI],AL INC DI JMP INPUT2 L2: MOV SI,0 CLC;清空进位标志位CF MOV CX,6

微机原理实验指导书

微机原理及应用实验指导书 南京理工大学机械工程学院 2011年10月10日

实验1 基本操作实验 1. 实验目的 (1) 掌握TD-PITC 80X86 微机原理及接口技术教学实验系统的操作,熟悉Wmd86联机集成开发调试软件的操作环境。 (2) 掌握使用运算类指令编程及调试方法; (3) 掌握运算类指令对各状态标志位的影响及其测试方法; (4) 学习使用软件监视变量的方法。 2. 实验设备 PC机一台,TD-PITC 实验装置一套。 3. 实验内容及步骤 通过对样例程序的操作,学会在TD-PITC境下,如何输入汇编语言程序,如何进行汇编语言源程序的汇编、连接、下载和运行;在调试程序的学习过程中,应学会: ●如何设置断点; ●如何单步运行程序; ●如何连续运行程序; ●怎样查看寄存器的内容; ●怎样修改寄存器的内容; ●怎样查看存储器的内容; ●怎样修改存储器的内容。 3.1 实验内容1――――BCD码转换为二进制数 实验内容: 将四个二位十进制数的BCD 码存放于3500H 起始的内存单元中,将转换的二进制数存入3510H 起始的内存单元中,自行绘制流程图并编写程序。 参考实验程序清单如下: SSTACK SEGMENT STACK DW 64 DUP(?) SSTACK ENDS CODE SEGMENT ASSUME CS:CODE START: XOR AX, AX MOV CX, 0004H MOV SI, 3500H MOV DI, 3510H A1: MOV AL, [SI] ADD AL, AL MOV BL, AL

ADD AL, AL ADD AL, AL ADD AL, BL INC SI ADD AL, [SI] MOV [DI], AL INC SI INC DI LOOP A1 A2: JMP A2 CODE ENDS END START 实验步骤: 1)运行Wmd86 软件,进入Wmd86 集成开发环境。 2)根据程序设计使用语言的不同,通过在“设置”下拉列表来选择需要使用的语言,如图1-1所示。语言选择后,下次再启动软件,语言环境保持这次的修改不变。在这里,我们选择汇编语言。 图1-1 语言环境选择界面 3)语言选择后,点击新建或按Ctrl+N 组合键来新建一个文档,如图1-2所示。默认文件名为Wmd861。 图1-2 新建文件界面 4)编写实验程序,如图1-3所示,并保存,此时系统会提示输入新的文件名,输完后点击保存。

微机原理实验

实验一 MASM For Windows 的使用及顺序程序设计 一、实验目的 1、熟悉在PC机上建立、汇编、连接、调试和运行8086汇编语言程序的过程。 2、熟悉masm for windows调试环境及DEBUG常用命令的使用 二、实验内容 1.DEBUG常用命令(U、R、D、E、F、T、G、Q)的操作使用 2.编程实现两个16位无符号数的加、减、乘、除运算。 有两个两字节无符号数分别放在存储单元A、B起始的缓冲器中,求其和,结果放在A起始的缓冲区并在屏幕上显示。相加若有进位不存入存储单元。 三、实验设备 PC机一台 四、实验准备 1) 分析题目,将程序中的原始数据和最终结果的存取方法确定好。 2) 画出流程图。 3) 写出源程序。 4) 对程序中的结果进行分析,并准备好上机调试与用汇编程序及汇编调试的过程。 五、实验步骤 1) 输入源程序。 2) 汇编、连接程序,生成 .EXE文件,执行文件,检查结果。 六、学生实验报告的要求 1) 列出源程序,说明程序的基本结构,包括程序中各部分的功能。 2) 说明程序中各部分所用的算法。 3) 说明主要符号和所用到寄存器的功能。 4) 上机调试过程中遇到的问题是如何解决的。

5) 对调试源程序的结果进行分析。 4) 说明标志位CF、SF和OF的意义。 DEBUG的常用命令 1、R 显示或修改寄存器的内容 命令格式:-R 2、 D 显示存储单元的内容 命令格式:-D[地址1, 地址2] 3、E修改存储单元的内容 命令格式:-E[地址1, 地址2] 4、U反汇编 命令格式:-U[地址1, 地址2] 5、T单步执行 命令格式:-T 6、G连续执行 命令格式:-G[=起始地址, 结束地址] A小汇编 命令格式:-A 7、Q退出DEBUG,返回DOS 实验一源程序 EXAM1-2 .ASM DATA SEGMENT A D B 34H,18H,2 DUP(0),’$’ B DB 56H,83H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: MOV AX,DATA MOV DS,AX MOV AL,A MOV BL,B ADD AL,BL MOV AH,A+1 MOV BH, B+1 ADC AH, BH MOV A, AL

微机原理实验讲义

微机原理实验讲义 程曙艳编 厦门大学自动化系 2016年10月

汇编语言的上机过程 1、建立汇编语言的工作环境 至少有以下程序文件: 编辑程序,文件名https://www.sodocs.net/doc/482799053.html,,使用https://www.sodocs.net/doc/482799053.html,编辑程序代码生成*.asm。 汇编程序,文件名MASM.EXE,使用masm.exe对*.asm文件进行汇编,生成*.obj 文件 连接程序,文件名LINK.EXE,使用link.exe对目标文件*.obj进行连接生成*.exe 文件 调试程序,文件名DEBUG.EXE,使用debug.exe对可执行文件*.exe进行调试运行 (1)编辑 可以用记事本或DOS下的EDIT编辑器来编写源程序。但程序保存时文件必须取名为*.asm 。或EDIT 文件名.asm 打开已经存在的文件。 (2)汇编 在DOS状态执行masm 文件名,则屏幕显示与操作如下: (3)连接 汇编后产生的目标文件必须经过连接,才能成为可执行文件.exe。在DOS 状态执行link 文件名,则屏幕显示与操作如下: (4)运行、调试

>DEBUG 文件名.exe Debug运行后,出现状态提示符短划线- 常用debug命令: D,显示内存单元内容 R,显示与修改寄存器内容 T、P,单步执行命令 G,连续执行指令 U,反汇编 Q,退出DEBUG程序 2. 汇编语言程序格式 汇编语言由若干个段组成: 堆栈段(保存数据、断点等信息) 代码段(存放指令)必需 数据段(定义数据,分配存储单元) 附加段(定义数据,分配存储单元) 每段必须有且仅有一个名字,以SEGMENT定义段的起始,以ENDS定义段的结束,整个程序结束后需以END收尾 STACK SEGMENT ...... STACK ENDS DATA SEGMENT ...... DATA ENDS ESEG SEGMENT ...... ESEG ENDS CODE SEGMENT ASSUME CS:CODE ,DS:DATA,SS:STACK,ES:ESEG START:mov ax, data mov ds, ax mov ax, eseg mov es, ax mov ax, stack mov ss, ax ………. CODE ENDS END START

微机原理实验报告

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

微机原理与接口技术实验讲义

实验一熟悉汇编语言环境及建立汇编的过程 一、实验目的 1.熟悉汇编语言环境。 2.掌握汇编语言的上机过程。 3.了解汇编语言程序的编程格式。 二、实验要求 通过一个小程序的编写达到以上的实验目的。 三、实验原理 1.汇编语言程序的上机过程 用汇编语言编写的程序称为源程序,源程序也不能由机器直接执行,而必须翻译成机器代码组成的目标程序,这个翻译过程称为汇编。在微型机中,当前绝大多数情况下,汇编过程是通过软件自动完成的,用来把汇编语言编写的程序自动翻译成目标的软件叫汇编程序,汇编过程如下: 四、实验步骤 1、打开编辑环境 2、输入程序 CODE SEGMENT ASSUME CS:CODE START: MOV AL,01H MOV BL,40H ADD AL,BL MOV DL,AL MOV AH,02H INT 21H MOV AH,4CH INT 21H CODE ENDS END START 3、保存源程序,以.ASM为扩展名。C:\MASM\1.ASM 4、建立汇编过程 (1)用宏汇编程序汇编源程序C:\MASM>MASM 1.ASM 汇编程序有3个输出文件【.obj】文件,【.LST】文件,【.CRF】文件,.OBJ文件是我们所需 要的文件。汇编程序还有另外一个重要功能:可以给出源程序中的错误信息。 (2)用连接程序将OBJ文件转换为可执行的EXE文件C:\MASM>LINK 1.OBJ 5、执行程序:C:\MASM>1.EXE

实验二两个多位十进制数相加的实验 一、实验目的: 1.学习数据传送和算术运算指令的用法。 2.熟悉在PC机上建立汇编链接调试和运行汇编语言程序的过程。 二、实验内容: 将两个多位十进制数相加。要求加数和被加数均以ASCII码形式各自顺序存放在以DATA1和DATA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图 四、实验原理 1.ADC 带进位相加指令的功能和指令格式 2.AAA 、DAA、 AAS、 DAS指令的功能和指令格式 3.伪指令SEGMENT 、ENDS、 ASSUME、MACRO、ENDM的使用 4.子程序的定义(PROC NEAR/FAR ENDP),以及子程序调用和返回指令:CALL、RET的使用

微机原理实验讲义2015

微机原理实验讲义 实验一8255A并行口实验(一) 一、实验目的 ⒈掌握8255A和微机接口方法。 ⒉掌握8255A的工作方式和编程原理。 二、实验内容 用8255PA口控制PB口。 三、实验接线图 图6-3 四、编程指南 ⒈8255A芯片简介: 8255A可编程外围接口芯片是INTEL公司生产的通用并行接口芯片,它具有A、B、C三个并行接口,用+5V单电源供电,能在以下三种方式下工作: 方式0:基本输入/ 输出方式 方式l:选通输入/ 输出方式 方式2:双向选通工作方式 ⒉使8255A端口A工作在方式0并作为输入口,读取Kl-K8个开关量,PB 口工作在方式0作为输出口。

五、实验程序框图 六、实验步骤 ⒈在系统显示监控提示符“P.”时,按SCAL键,传送EPROM中的实验程序到内存中。(注:必须先传送EPROM后,再往下操作) ⒉ 8255A芯片A口的PA0-PA7依次和开关量输入Kl-K8相连。 ⒊ 8255A芯片B口的PB0-PB7依次接Ll-L8。 ⒋运行实验程序。 在系统显示监控提示符“P.”时,输入11B0,按EXEC键,系统显示执行提示符“┌”拨动K1-K8, LI-L8会跟着亮灭。 七、实验程序清单 CODE SEGMENT ;H8255-1.ASM ASSUME CS:CODE IOCONPT EQU 0FF2BH ;定义8255控制口 IOBPT EQU 0FF29H ;定义8255 PB口 IOAPT EQU 0FF28H ;定义8255 PA口 ORG 11B0H START: MOV AL,90H ;定义PA输入,PB输出 MOV DX,IOCONPT ;控制口 OUT DX,AL ;写命令字 NOP ;延时 NOP NOP IOLED1: MOV DX,IOAPT ;PA口 IN AL,DX ;读PA口 MOV DX,IOBPT ;PB口 OUT DX,AL ;写PB口 MOV CX,0FFFFH ;延时 DELAY: LOOP DELAY JMP IOLED1 ;循环

南邮微机原理实验报告资料

《微型计算机原理与接口技术》 上机实验 学院:电子科学与工程 专业:电磁场与无线技术 姓名:陈秀慧 课程号:B0300062S 学号: B14020604 任课老师:欧晓鸥 2016年 3 月 21日

一、实验目的 熟悉第四章汇编语言程序设计中简化段定义格式,汇编语言循环结构的实现,DOS功能的调用等功能,以及算术运算程序设计中字符串处理程序设计中内容的显示,十六进制ASCII码与各数值的转化,比较搜索等命令。 二、实验任务 1.在微型计算机上用汇编语言编程完成实验内容所规定的实验; 2.记录源代码和程序调试过程; 3.完成实验报告。 三、主要仪器设备 硬件:微型计算机 软件:未来汇编 四、实验内容 上机题1.显示5行HELLO 源程序: .486 DATA SEGMENT USE16 MESG DB 'HELLO' DB 0,0,0 DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX MOV ES,AX MOV CX,5 LL1: MOV MESG+5,0DH MOV MESG+6,0AH MOV MESG+7,'$' CALL DISP MOV MESG+5,0 MOV MESG+6,0 MOV MESG+7,0 LOOP LL1 MOV AH,4CH INT 21H DISP PROC MOV AH,9 MOV DX,OFFSET MESG INT 21H RET

DISP ENDP CODE ENDS END BEG 运行结果: 上机题2.询问用户姓名并等待输入,用户输入姓名后按回车键程序再把输入的姓名复制显示在屏幕上 源程序: .586 DATA SEGMENT USE16 MESG DB 'What is your name?$' MESG2 DB '?(Y/N)$' BUF DB 30 DB ? DB 30 DUP(?) DATA ENDS CODE SEGMENT USE16 ASSUME CS:CODE,DS:DATA BEG: MOV AX,DATA MOV DS,AX AGAIN:MOV AH,9 MOV DX,OFFSET MESG INT 21H MOV AH,0AH MOV DX,OFFSET BUF

微机原理复习资料1答案

一、单选题(30) 1C 2B 3C 4A 5C 6C 7A 8D 9A 10D 11B 12D 13C 14A 15B 16C 17D 18A 19B 20A 21C 22D 23A 24D 25C 26A 27B 28C 29D 30C 二、判断题(20) 1√2 X 3 X4√5 X6 X7√8 X9√10 X 11X12 X13√14√15√16√17 X18 X19 X20 X 三、简答题(10) 1 课本P368。 2 WR# RD# M/IO# BHE# DT/R# mov ah, DS:[1001] : 1 0 1 0 0 mov ah, DS:[1000] : 1 0 1 1 0 mov ax, DS:[1000] : 1 0 1 0 0 3 答案要点: INTR信号有效, 中断允许标志位1; CPU执行完当前指令。 4 答案要点: 采用先进的超标量流水线机制,以并行方式在U、V两条流水线上同时执行两条指令。在U 流水线上可以执行任意指令,但是在V流水线上只能执行和当前U流水线上执行的指令符合配对规则的指令。 5 答案要点: 逻辑地址、线性地址、物理地址; 逻辑地址=段选择子:偏移量,通过逻辑地址可得到段描述,之后将得到线性地址。 线性地址=段基址+偏移量,线性地址通过相应的页面映射规则(如果有)就可以得到实际的物理地址。 物理地址=页基址+页内偏移量,通过线性地址相应的页面映射规则得到。 6 答案要点: GDT/IDT为所有任务共享;

LDT为每个任务私有。 7 答案要点: 需要16Kx8/8Kx4=4,一共需要4片 1#和2#芯片构成bank0,3#和4#芯片构成bank1 bank0:8Kx8,2^13,A0=0 bank1:8Kx8,2^13,BHE#=0 8 答案要点: 2个总线周期。 第一个总线周期:8086触发一个INTA脉冲,告诉中断控制器,它的INTR予以确认。 第二个总线周期:CPU出发一个INTA脉冲,让中断控制器将中断类型号放在数据总线上,并在T4拍开始的下降沿采集中断类型号。 9 答案要点: 包含两个方面:(1)初始化数据缓冲区的起始地址(2)初始化传输的字节数 10 答案要点: 在设置特殊屏蔽方式后,在用OCW1对屏蔽寄存器的的某一位置1时,会同时使当前中断

微机原理与接口技术实验指导书1_[1]...

微机原理与接口技术实验指导书 编者:王亭岭 华北水利水电学院 电气学院自动化教研室 二零一二年三月

目录 实验一标志寄存器应用 (1) 实验二指令寻址方式练习 (4) 实验三分支结构程序设计 (6) 实验四循环结构程序设计 (7) 实验五子程序结构程序设计 (8) 实验六DOS系统功能调用程序设计 (10) 实验七BIOS中断调用程序设计 (12) 实验八定时器中断程序设计 (14)

实验一标志寄存器应用 一、实验目的与要求 1.掌握汇编程序的编译过程; 2.掌握8086的标志寄存器的特点。 二、实验内容 微型计算机(80x86系列)。 四、实验参考程序 DATA SEGMENT A DW 123 B DW 456 SUM DW ? DATA ENDS CODE SEGMENT ASSUME CS:CODE , DS:DATA START: MOV AX , DATA MOV DS , AX MOV AX , A SUB AX , B MOV SUM , AX MOV AH,4CH INT 21H CODE ENDS END START 五、实验步骤 步骤一、用鼠标单击开始菜单,单击运行。如下图所示:

步骤二、在运行窗口中键入cmd,回车进入命令提示符。如下图所示: 步骤三、在命令提示符中编译汇编源程序并连接*.obj文件。如下图所示:1.C:\>D: 回车 2.D:\ >CD MASM 回车 3.D:\MASM>MASM SY1.ASM 回车 4.D:\MASM>LINK SY1.OBJ 回车

步骤四、在命令提示行中运行并调试汇编程序。如下图所示:1.D:\MASM>SY1.EXE 回车 2.D:\MASM>DEBUG SY1.EXE 回车 六、实验结论 1.程序运行后变量SUM的值是多少? 2.程序运行前后标志寄存器的各标志位有何变化? 3.分析实验结果及所遇到的问题,并说明解决的方法。

微机原理及应用实验报告

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

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

微机原理实验4

学生实验报告 学院:软件与通信工程学院 课程名称:微机原理与接口技术 专业班级:电信141班 姓名: 学号:

学生实验报告(1) 一、实验综述 1、实验目的及要求 (1)实验目的 1.加深对锁存器和缓冲器的基本原理的了解; 2.掌握I/O口编程的基本方法; 3.掌握基本I/O口的扩展方法及编程方法。 (2)实验要求 实验原理: 实验原理图如图所示,锁存器74LS373与发光二极管LED1~LED8; 缓冲器74LS245与K1~K8开关相连,本实验为模拟灯亮暗实验,开关闭合对应LED亮。 实验要求: 1、编写程序使开关Ki闭合时,对应LEDi灯亮; 2、编写程序:开关K8闭合时,实现八个LED灯从上到下循环点亮;K8断开停止循环; 3、编写程序实现八个LED灯从两边到中间,从中间到两边循环点亮,按下K1停止循环。 2、实验仪器、设备或软件 电脑,Masm for windows集成实验环境共享版2015,DOSBOX,proteus 7 professional 二、实验过程(实验步骤、记录、数据、分析) 实验步骤: 1、按图连好实验线路,分析电路中输入和输出端口的地址。 2、编写程序、调试生成.EXE文件,加载到仿真电路CPU8086中,运行Proteus。 3、观察电路运行判断是否实现程序功能,并完善程序。

实验1: DATAS SEGMENT ;此处输入数据段代码 DATAS ENDS STACKS SEGMENT ;此处输入堆栈段代码 STACKS ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATAS,SS:STACKS START: MOV AX,DATAS MOV DS,AX MOV DX,600H ;IO3#的地址为600H L1: IN AL,DX ;读输入口的开关状态 NOT AL ;取反 OUT DX,AL;写输出口,使对应LED灯点亮 JMP L1 MOV AH,4CH INT 21H CODES ENDS END START 实验2: DATA SEGMENT TAB DB 81H,42H,24H,18,24H,42H,81H;此处输入数据段代码DATA ENDS CODES SEGMENT ASSUME CS:CODES,DS:DATA START: MOV AX,DATA MOV DS,AX MOV DX,600H MOV AH,01H LP1:MOV AL,AH OUT DX,AL MOV CX,2801H WAIT1:NOP NOP ;延时

微机原理实验报告

微机原理实验报告实验名称:MIPS汇编程序设计 院系:电信学院 班级: 姓名: 指导老师: 一、实验目的: 1.熟悉MIPS汇编程序开发环境,学习使用Qtstim工具。知道如何查看内存空间分配。

2. 了解C语言语句与汇编指令之间的关系。 3. 掌握MIPS汇编程序设计,掌握QTSPIM的调试技术。 4. 了解MIPS汇编语言与机器语言之间的对应关系。 5. 熟悉常见的MIPS汇编指令 6. 掌握程序的内存映像。 二、实验内容 1.用汇编程序实现以下伪代码:要求使用移位指令实现乘除法运算。Int main () { Int K,Y; Int Z[50]; Y=56; For(k=0;k<50;K++) Z[k]=Y-16*(k/4+210); } 三、程序设计及分析 1.C语言分析: 有两个变量是int型,一个数组型;还有一个循环执行过程。 2.汇编程序实现分析: 首先需要定义用户数据段,获得一个内存空间作为数组空间。 再选定几个寄存器作为K,Y以及输出,其中输出输出和Y可以合用一个寄存器。 3.设计思路:

分配完空间地址后,最重要的是完成循环控制。循环控制有两个思路:可以是先判断后循环;或者是先循环后判断 即如图 slti $t2,$t0,50 #判断k 是否于50 beq $t2,$t3($t2=1循环,否则结束。) 四、程序实现及调试分析

1.汇编程序代码实现: 方法一 .data #定义用户数据段 z:.space 200 #数组为int型,大小为50,所以占内存4*50 str:.asciiz " "#输出结果之间的空隙 .text main: la $s0,z #$s0 #为数组在z[] li $t0,0 #$s1 #代表k计数,初始值为0 li $t1,56 #$t2 #代表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] li $v0,1 #输出 addi $a0,$s0,0

微机原理实验指导书(学生)

昆明理工大学微机原理及程序设计 实验指导书 段绍米编 昆明理工大学信息工程与自动化学院 自动化系 2013年10月

微机原理实验实验要求及运行环境 1、实验要求与注意事项: 交纸质版实验报告,实验要求: 2、实验运行环境 在电脑中装ASM Masm for windows 集成实验环境2008。双击图标打开ASM MasM for windows 集成实验环境运行工作界面,输入实验程序代码,调试、改错、保存、运行、查看结果,进行记录。

运行结果显示:

实验一两个多位十进制数相加的实验 一、实验目的 1、学习数据传送和算术运算指令的用法。 2、熟悉在PC机上建立、汇编、链接、调试和运行8088汇编语言程序的过程。 二、实验内容 将两个多位十进制数相加。要求被加数均以ASCII码形式各自顺序存放在以DA TA1和DA TA2为首的5个内存单元中(低位在前),结果送回DATA1处。 三、程序框图

四、程序清单 CRLF MACRO ;宏定义,宏名:CRLF MOV DL, 0DH ;把0DH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现回车功能 MOV DL, 0AH ;把0AH给DL MOV AH, 02H ; 把02H给AH INT 21H ;系统功能调用——实现换行功能ENDM ;宏定义结束——本段实现回车换行功能 DATA SEGMENT;数据段定义,段名DATA DATA1 DB 33H, 39H, 31H, 37H, 34H;变量DATA1中装入加数 DATA2 DB 36H, 35H, 30H, 38H, 32H;变量DATA2中装入被加数 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 DA TA2 MOV BX, 05 CALL DISPL CRLF MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV DI, OFFSET DATA2 CALL ADDA MOV SI, OFFSET DA TA1 MOV BX, 05 CALL DISPL CRLF MOV AX, 4C00H INT 21H DISPL PROC NEAR

相关主题