微机显示程序设计(1)

合集下载

单片机实验报告动态数码显示设计

单片机实验报告动态数码显示设计

微机原理与接口技术实验报告实验题目:动态数码显示设计指导老师:朱铭琳班级:计算机科学与技术系1201班姓名:王丹(2012100141)2014年 12月3日实验十三动态数码显示设计一、实验目的1.掌握动态数码显示技术的设计方法。

2.掌握扫描在程序设计中的应用。

二、设计原理如图13.1所示,在单片机的P1端口接动态数码管的字形码笔段,在单片机的P2端口接动态数码管的数位选择端。

在单片机P3.0管脚处接一个开关,当开关连接高电平时,态数码管上显示“12345”字样;当开关连接低电平时,态数码管上显示“HELLO”字样。

三、参考电路图13.1 动态数码显示电路原理图四、电路硬件说明(1)在“单片机系统”区域中,把单片机的P1.0-P1.7端口连接到“动态数码显示”区域中的a-h端口上。

(2)在“单片机系统”区域中,把单片机的P2.0-P2.7端口通过8联拨动拨码开关JP1连接到“动态数码显示”区域中的S1-S8端口上。

(3)在“单片机系统”区域中,把单片机的P3.0端口通过8联拨动拨码开关JP2连接到拨动开关区域中的SW1端口上。

五、程序设计内容(1)动态扫描方法:动态接口采用各数码管循环轮流显示的方法,当循环显示频率较高时,利用人眼的暂留特性,看不出显示的闪烁现象,这种显示需要一个接口完成字形码的输出(字形选择),另一接口完成各数码管的轮流点亮(数位选择)。

(2)在进行数码显示的时候,要对显示单元开辟8个显示缓冲区,在每个显示缓冲区装有显示的不同数据即可。

(3)对于显示不同字形码的数据采用查表方法来完成。

六、程序流程图 (如图13.2所示)图13.2 动态数码显示程序流程图七、汇编源程序;;;;;;;;;;入口地址;;;;;;;;;;ORG 0000HLJMP STARTORG 0003HRETIORG 000BHRETIORG 0013HRETIORG 001BHRETIORG 0023HRETIORG 002BHRETI;;;;;;;;;;主程序入口;;;;;;;;;;ORG 0100H START: LCALL PANDUANLCALL XIANSHILJMP START;;;;;;;;;;判断开关的状态;;;;;;;;;;PANDUAN: JB P3.0,SWLCALL DELAY10MSJB P3.0,SWMOV DPTR,#TABLE2SJMP Q1SW: JNB P3.0,PANDUANMOV DPTR,#TABLE1 Q1: RET;;;;;;;;;;显示程序;;;;;;;;;;XIANSHI: MOV R0,#00HMOV R1,#7FH NEXT: MOV A,R0MOVC A,@A+DPTRMOV P0,AMOV A,R1MOV P2,ALCALL DELAYINC R0RR AMOV R1,ACJNE R1,#0FBH,NEXTRET;;;;;;;;;;10ms延时程序;;;;;;;;;;DELAY10MS: MOV R6,#20D1: MOV R7,#248DJNZ R7,$DJNZ R6,D1RET;;;;;;;;;;200ms延时程序;;;;;;;;;;DELAY: MOV R5,#20LOOP: LCALL DELAY10MSDJNZ R5,LOOPRET;;;;;;;;;;共阴字母码表;;;;;;;;;;TABLE1: DB 76H,79H,38H,38H,3FH;;;;;;;;;;共阴数码表;;;;;;;;;;;TABLE2: DB 06H,5BH,4FH,66H,6DH;;;;;;;;;;结束标志;;;;;;;;;;;;;END八、C语言源程序#include<AT89X51.H>unsigned char code table1[]={0x06,0x5b,0x4f,0x66,0x6d};unsigned char code table2[]={0x76,0x79,0x38,0x38,0x3f};void main(void){ unsigned char i,j,k,m;while(1){ j=0x7f;for(i=0;i<5;i++) //运行5次取出表中的5个数//{ if(P3_0==0) //如果开关为0,则显示12345// { P0=table1[i]; } //送P1口显示//else //如果开关为1,显示HELLO//{ P0=table2[i]; } //送P1口显示//P2=j; //显示码送入P2口//j=0x7f; //重赋初值//k=j>>(i+1); //右移i+1位//m=j<<(7-i); //左移7-i位//j=k|m;for(k=4;k>0;k--) //每隔一段时间显示一次//for(m=248;m>0;m--);}}}九、注意事项(1)程序中要注意共阴极数码管显示和共阳极数码管显示的区别,本程序在共阴极数码管显示时,要把单排针接插件J4中的跳线帽加到OE和VCC上。

c语言程序设计课程设计选题 (1)

c语言程序设计课程设计选题 (1)

《C语言程序设计》课程设计课题表一、A类1.职工信息管理系统设计2.职工信息包括职工号、姓名、性别、年龄、学历、工资、住址、电话等(职工号不重复)。

试设计一职工信息管理系统,使之能提供以下功能:3.1、职工信息录入功能(职工信息用文件保存)--输入4.2、职工信息浏览功能--输出5.3、职工信息查询功能--算法6.查询方式:按学历查询、按职工号查询、条件组合查询7.职工信息删除、修改功能(可选项)8.图书信息管理系统设计9.图书信息包括:登录号、书名、作者名、分类号、出版单位、出版时间、价格等。

10.试设计一图书信息管理系统,使之能提供以下功能:11.1、图书信息录入功能(图书信息用文件保存)--输入12.2、图书信息浏览功能--输出13.3、图书信息查询功能--算法14.查询方式:按书名查询、按作者名查询、条件组合查询15.图书信息的删除与修改(可选项)16.图书管理系统设计17.图书管理信息包括:图书名称、图书编号、单价、作者、存在状态、借书人姓名、性别、学号等18.功能描述:19.1、新进图书基本信息的输入。

20.2、图书基本信息的查询。

21.3、对撤消图书信息的删除。

22.4、为借书人办理注册。

23.5、办理借书手续。

24.6、办理还书手续25.要求:使用文件方式存储数据。

26.实验设备管理系统设计27.实验设备信息包括:设备编号,设备种类(如:微机、打印机、扫描仪等等),设备名称,设备价格,设备购入日期,是否报废,报废日期等。

28.主要功能:29.1、能够完成对设备的录入和修改30.2、对设备进行分类统计31.3、设备的破损耗费和遗损处理32.4、设备的查询33.要求:使用文件方式存储数据。

34.学生信息管理系统设计35.学生信息包括:学号,姓名,年龄,性别,出生年月,地址,电话,E-mail等。

试设计一学生信息管理系统,使之能提供以下功能:36.1、系统以菜单方式工作37.2、学生信息录入功能(学生信息用文件保存)--输入38.3、学生信息浏览功能--输出39.4、学生信息查询功能--按学号查询、按姓名查询、40.5、学生信息的删除与修改(可选项)41.要求:使用文件方式存储数据。

微机-闰年判断程序设计

微机-闰年判断程序设计

学号:微机原理及接口技术课程设计题目闰年判断程序设计学院自动化学院专业电气工程及其自动化班级姓名指导教师2015 年12 月18 日课程设计任务书学生姓名:专业班级:指导教师:工作单位:自动化学院题目: 闰年判断程序设计初始条件:该程序实现通过键盘输入一年份,然后判断该年份是否为闰年,如果是闰年,则在屏幕上显示:该年是闰年。

如果不是,则显示:该年不是闰年。

要求完成的主要任务:(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)(1)设计任务及要求分析(2)方案比较及认证说明(3)系统原理阐述(4)硬件设计课题需要说明:硬件原理,电路图,采用器件的功能说明(5)软件设计课题需要说明:软件思想,流程图,源程序及程序注释(6)调试记录及结果分析(7)总结(8)参考资料(9)附录:芯片资料或程序清单,软件演示屏幕拷贝图或硬件实物图目录摘要 01.设计任务及要求分析 (1)1.1课程设计的目的 (1)1.2闰年判断程序设计 (1)2.方案比较及认证说明 (2)2.1方案比较 (2)2.1.1采用汇编语言设计 (2)2.1.2采用C语言设计 (2)2.2方案论证 (2)3.系统原理阐述 (3)3.1软件思想 (3)3.2程序设计原理 (3)3.3程序设计流程图 (3)3.4汇编源程序 (4)3.4.1主模块程序 (4)3.4.2子模块程序设计 (4)4.调试记录及结果分析 (6)4.1运行界面记录 (6)4.2算法分析 (7)4.3调试过程及结果分析 (7)心得体会 (8)参考文献 (9)附录 (10)摘要本次微机原理与接口技术课程设计是要设计一个判断年份是否为闰年的显示程序。

本次课程设计用的是8086最小系统,在emu8086汇编集成环境下完成。

首先,根据课设题目要求进行分析,并选择适合要求的方案,在选定方案下设计整个设计要求的程序框架,画出流程框图,然后运用模块化的设计思想,将题设要求分成几个小的模块,一段一段的设计程序。

微机原理及程序设计

微机原理及程序设计

微机原理及程序设计微机原理及程序设计是一门结合了计算机硬件基础和软件编程技能的课程,它对于理解现代计算机系统的工作方式至关重要。

本课程旨在教授学生微机的基本组成原理、指令系统、存储结构以及程序设计的基本方法。

微机原理概述微机,即微型计算机,是一种体积小、价格低廉、功能相对单一的计算机系统。

它们广泛应用于个人计算、嵌入式系统、工业控制等领域。

1. 微机的基本组成:微机主要由中央处理器(CPU)、存储器、输入输出设备(I/O)等部分组成。

2. 中央处理器:CPU是微机的核心,负责执行程序指令。

它包括算术逻辑单元(ALU)、控制单元(CU)和寄存器组。

3. 存储器:存储器用于存储程序和数据。

主要分为随机存取存储器(RAM)和只读存储器(ROM)。

4. 输入输出设备:包括键盘、鼠标、显示器、打印机等,用于与用户进行交互。

指令系统与寻址方式1. 指令系统:是CPU可以执行的所有指令的集合。

指令系统的设计直接影响到微机的性能和功能。

2. 寻址方式:是CPU访问存储器中数据的方法。

常见的寻址方式包括直接寻址、间接寻址、基址寻址等。

存储结构1. 存储器的层次结构:通常包括高速缓存(Cache)、主存和辅助存储器。

2. 存储管理:涉及虚拟存储技术、内存分配和回收等。

程序设计基础1. 程序设计语言:包括汇编语言、高级语言等。

汇编语言与机器指令直接对应,而高级语言则更为抽象,易于编写和理解。

2. 程序结构:程序通常由数据定义、指令序列和控制结构组成。

3. 算法与数据结构:算法是解决问题的步骤,而数据结构是组织数据的方式。

程序设计方法1. 模块化设计:将程序分解为多个模块,每个模块完成特定的功能,易于管理和维护。

2. 面向对象编程:以对象和类为基础,强调数据和功能的封装、继承和多态性。

3. 程序调试:使用调试工具来查找和修复程序中的错误。

微机接口技术1. 总线接口:连接微机内部各部件的通信线路。

2. 外设接口:如串行接口、并行接口、USB接口等,用于连接外部设备。

经典教材_微机原理及应用和汇编语言程序设计课件chap_51(1)

经典教材_微机原理及应用和汇编语言程序设计课件chap_51(1)
(2)宏调用 (3)宏扩展
1.宏代换 格式:宏名 MACRO [形式参数1,形式参数1,…] … ENDM 功能:为指令序列定义一个宏名,称为宏指令.
2.局域符号定义语句 格式: LOCAL 符号[符号1,符号2,…] 功能:指出符号1,符号2,…仅在宏代换中有意义.
3.删除宏定义语句 格式: PURGE 宏定义名1[宏定义名2,…] 功能:注销程序中引用的宏指令.
6)键盘输入一个字符无回显 功能号:AH=08H 出口参数:AL=字符;
7)返回DOS系统 功能号:AH=4CH
8)清键盘缓冲区,并调用一种键盘功能 功能号:AH=0CH AL=键盘功能号(1、6、7、8、0AH)
9).从串口输入单字符 AH=03H 入口参数AL=字符
10)向串口输出单字符 AH=04H 出口参数DL=字符
11)设置时间:INT 21/2BH year:mounth:day=DX:CH:CL
12)取得时间:INT21H/2AH 13)取得日期:INT21H/2CH
5.5 汇编过程
一.汇编程序的功能
将汇编语言源程序翻译成机器语言编写的目标 程序.并可输出列表文件 检查语法并给出错误信息 展开宏指令
常用汇编程序:ASM 和MASM
SHR,右移运算符
例: 32 MOD 5
;汇编时,得到的值=2
2.逻辑运算符: AND、OR、NOT、XOR
例: 24H OR 0FH ;汇编时,得到的值=2FH
3.关系运算符:
关系运算符是逻辑判断式,为真时,结果取 0FFFFH,为假时,结果取0。
EQ(等于)、NE(不等于)、 LT(小于)、GT(大于)、 LE(小于等于)、GE(大于等于)
TABLE3 DB ‘12345678910 ‘

微机原理简单程序设计实验流程图

微机原理简单程序设计实验流程图

微机原理简单程序设计实验流程图下载温馨提示:该文档是我店铺精心编制而成,希望大家下载以后,能够帮助大家解决实际的问题。

文档下载后可定制随意修改,请根据实际需要进行相应的调整和使用,谢谢!并且,本店铺为大家提供各种各样类型的实用资料,如教育随笔、日记赏析、句子摘抄、古诗大全、经典美文、话题作文、工作总结、词语解析、文案摘录、其他资料等等,如想了解不同资料格式和写法,敬请关注!Download tips: This document is carefully compiled by theeditor. I hope that after you download them,they can help yousolve practical problems. The document can be customized andmodified after downloading,please adjust and use it according toactual needs, thank you!In addition, our shop provides you with various types ofpractical materials,such as educational essays, diaryappreciation,sentence excerpts,ancient poems,classic articles,topic composition,work summary,word parsing,copy excerpts,other materials and so on,want to know different data formats andwriting methods,please pay attention!1. 实验目的:了解微机原理和程序设计的基本概念。

掌握使用汇编语言或高级语言进行程序设计的方法。

第4章8086,8088微机汇编语言程序设计

第4章8086,8088微机汇编语言程序设计

2)段内偏移量(Offset) 它是标号与段起始地址之间相距的字节数,为一16位 无符号数。 3)类型(Type) 类型表示该标号所代表的指令的转移范围,分NEA R(近)与FAR(远)两种。NEAR类型的标号仅在 同一段内使用,用2字节指针给出转移的偏移量属性(即 只改变IP值,不改变CS值);而FAR类型的标号无此限 制,必须用4字节指针指出转移的段地址与段内偏移量。 当标号用作JMP或CALL等指令的目标操作数时,若 为段内转移或调用则采用NEAR类型;若为段间转移或 调用则应当采用FAR类型。 JMP FAR PTR LINE
第4章 8086/8088汇编语言程序设计
汇编语言程序设计是开发微机系统软件的基本 功,在程序设计中占有十分重要的地位。
由于汇编语言具有执行速度快和易于实现对硬件的控 制等独特的优点,所以至今它仍然是用户使用得较多的程 序设计语言。特别是在对于程序的空间和时间要求很高的 场合,以及需要直接控制设备的应用场合,汇编语言更是必 不可少了。 由于汇编语言本身的特点,本章将选择目前国内广泛 使用的IBM PC机作为基础机型,着重讨论8086/8088汇编 语言的基本语法规则和程序设计的基本方法,以掌握一般 汇编语言程序设计的初步技术。
(1)立即操作数 立即操作数在指令中直接给出,不需要使用 寄存器,也不涉及访问数据区的操作,只能作为 源操作数。立即操作数是整数,可以是1字节或 2字节。在汇编语言中,立即操作数用常量(包 括数值常量和符号常量)以及由常量与有关运算 符组成的数值表达式表示。 如:MOV BX,1000+5*3 (2)寄存器操作数 通用寄存器AX、BX、CX、DX、BP、 SP、DI、SI以及段寄存器CS、SS、D S、ES都可以作为操作数。如:MOV BX,AX

微机原理微型计算机的程序设计

微机原理微型计算机的程序设计
W1
2024/9/30
43
例6.2
将内存(10050)单元旳内容拆成两段,每段4位,并将它 们分别 存入内存(10051)和(10052)单元。即(10050) 单 元 中 旳 低 4 位 放 入 ( 10051 ) 单 元 中 旳 低 4 位 , 而 (10050)单元中旳高4位放入(10052)单元中旳低4位。
INT 21H
2024/9/30
42
作业8.17 编写求输入算式’加数1+加数2’旳和并送显。
(加数及其和均为4位(即指压缩)BCD数,P262)
分析:要求先有屏幕显示输出‘加数1+加 数2:’,然后从键盘输入两个4个字节旳 BCD数,加完后送显。
用到旳变量:W1和W2因为从键盘输入,均 不拟定是几位十进制,故需拟定其最大位 数不超出要用
2024/9/30
12
MOV AX, W1
;AX=0809H,W2为0607H
ADD AL, BYTE PTR W2 ;AL=10H, CF=0,AF=1
AAA ; 属于第一种情况,故
; AL为(AL+06H)&0FH=10H+06H )&0FH
;
=16H&0FH=06H=AL;
;AH加1且CF置CF=1,所以AH=08H+1=09H,则AX=0906H
2024/9/30
34
2024/9/30
35
2024/9/30
36
2024/9/30
37
2024/9/30
38
作业8.4 编写求两个4位非压缩BCD数之和,
将和送显示屏显示旳程序。(P261)
分析:两加数各要4个字节单元,可觉得DD 类型;考虑到进位,和要5个字节单元,另 外,输出到显示器旳结束符号’$’需要一 个单元存放,故共需6个字节。 所以,数据段定义为:

微机原理第五章 程序设计-dsh

微机原理第五章 程序设计-dsh

INT
COSEG
21H
ENDS END START
第三节 分支程序
计算机可根据不同条件进行逻辑判断,从而选择不同 的程序流向。程序的流向是由 CS和 IP决定的,当程序 的转移仅在同一段内进行时,只需修改偏移地址 IP的 值;如果程序的转移是在不同的段之间进行,则段基 址 CS和偏移地址 IP均需要修改。 转移指令分为无条件转移指令和条件转移指令。 在进行分支程序设计时,首先要根据处理的问题用比 较、测试的方式,或者用算术运算、逻辑运算使标志 寄存器产生相应的标志位,根据转移条件选择转移指 令。
INC INC DEC JNZ
BX BX CX LOP ; ;控制部分
修改部分
MOV YY,AX MOV AH,4CH INT CODE ENDS 21H
END
START
一.循环的基本结构
1.先执行,后判断结构
流程图如右:
入口
初始化部分
循环体
修改部分
N
循环 结束? Y 出口
例2. 编程统计数据块中正数的个数,
Y
RS END (DX)
DATA
SEGMENT
D1
COUNT RS DATA CODE
DB,-1,-3,5,7,-9,·,-6 · ·
EQU DW ENDS SEGMENT ASSUME CS:CODE,DS:DATA $-D1 ?
START:
MOV
AX,DATA
MOV
MOV MOV MOV
DS,AX
JMP JUS2
BIGD: JG JUS1 ;x>0转移 ;x=0
MOV AL, 0
JMP
JUS1: JUS2:
JUS2

微机原理与接口技术实验报告1- 汇编语言程序设计

微机原理与接口技术实验报告1- 汇编语言程序设计

西安交通大学实验报告成绩第页共页课程微机原理与接口技术实验系别生物医学工程实验日期年月日专业班级组别交报告日期年月日姓名学号报告退发 (订正、重做) 同组者教师审批签字实验名称汇编语言程序设计一、实验目的1.掌握Lab6000p实验教学系统基本操作;2.掌握8088/8086汇编语言的基本语法结构;3.熟悉8088/8086汇编语言程序设计基本方法。

二、实验设备b6000p实验教学系统;2.IBM-PC机三、实验内容1.有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。

编程并显示结果:1)如果数组是无符号数,求出最大值,并显示;2)如果数组是有符号数,求出最大值,并显示。

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.有一个10字节的数组,其值分别是80H,03H,5AH,FFH,97H,64H,BBH,7FH,0FH,D8H。

编程并显示结果:(1)如果数组是无符号数,求出最大值,并显示;(2)如果数组是有符号数,求出最大值,并显示。

程序:(1)无符号数#make_COM#; COM file is loaded at CS:0100hORG 100hJMP STARTABC DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8HMAIN PROC FARSTART: MOV SI,0MOV AL,ABC[SI]A1: INC SICMP SI,9JNC EXITMOV BL,ABC[SI]CMP AL,BLJC A2JMP A1A2: XCHG BL,ALJMP A1EXIT: MOV CL,16DIV CLMOV DX,AXMOV CL,9CMP DL,CLJA E1ADD DL,30HMOV AH,2INT 21HE1: ADD DL,37HMOV AH,2INT 21HMOV DL,DHCMP DL,9JA E2ADD DL,30HMOV AH,2INT 21HE2: ADD DL,37HMOV AH,2INT 21HMOV DL,'H'MOV AH,2INT 21HRETMAIN ENDPEND START结果:(2)有符号数#make_COM#; COM file is loaded at CS:0100hORG 100hJMP STARTSHUZU DB 80H,03H,5AH,0FFH,97H,64H,0BBH,7FH,0FH,0D8H MAIN PROC FARSTART: MOV SI,0MOV AL,SHUZU[SI]L1: INC SICMP SI,9JNC NEXTMOV BL,SHUZU[SI]CMP AL,BLJL L2 ;带符号数比较 JMP L1L2: XCHG BL,ALJMP L1NEXT: MOV CL,16DIV CLMOV DX,AXMOV CL,9CMP DL,CLJA L3 ;无符号数比较 ADD DL,30HMOV AH,2INT 21HJMP L4L3: ADD DL,37HMOV AH,2INT 21HL4: MOV DL,DH ;ASCII码转换 CMP DL,9JA L5ADD DL,30HMOV AH,2INT 21HJMP L5L5: ADD DL,37HMOV AH,2INT 21HL6: MOV DL,'H'MOV AH,2INT 21HHLTMAIN ENDPEND START2.将二进制数500H转换成二-十进制(BCD)码,并显示“500H的BCD是:”程序:#make_COM#; COM file is loaded at CS:0100hORG 100hJMP START;DATA SEGMENTSHUCHU DB 'BCD IS $'ABC DB 15 DUP(?);DATA ENDSMAIN PROC FARSTART: MOV DX,OFFSET SHUCHUMOV AH,9INT 21HMOV AX,OFFSET ABCMOV DX,AXMOV AX,500H ;分离出各位数,分别进行BCD码转换SUB DX,DXMOV CX,1000DIV CXXCHG DX,AX ;商在DX中,余数在AX中MOV BX,AXADD DL,30HMOV AH,2INT 21H ;千位转换并输出MOV AX,BXMOV CL,100DIV CLMOV DX,AXADD DL,30HMOV AH,2INT 21H ;百位转换并输出MOV AL,DHSUB AH,AHMOV CL,10DIV CLMOV BX,AXMOV DL,BLADD DL,30HMOV AH,2INT 21H ;个位转换并输出MOV DL,BHADD DL,30HMOV AH,2INT 21HRETMAIN ENDPEND START结果:3.将二-十进制码(BCD)7693转换成ASCII码,并显示“BCD码7693的ASCII 是:”程序:#make_COM#; COM file is loaded at CS:0100hORG 100hJMP START;DATA SEGMENTSHUCHU DB 'ASCII IS $'ABC DB 20 DUP(?);DATA ENDSMAIN PROC FARSTART: MOV DX,OFFSET SHUCHUMOV AH,9INT 21HMOV CH,4MOV AX,OFFSET ABCMOV DX,AXMOV BX,7693HEXIT: MOV CL,4ROL BX,CLMOV AL,BLAND AL,0FH ;与运算分离出最高位MOV AH,0ADD AL,30HMOV CL,16DIV CL ;分离出高位和低位MOV DH,AHMOV DL,ALADD DL,30HMOV AH,2INT 21HMOV DL,DHADD DL,30HMOV AH,2INT 21H ;分别输出高低位DEC CHJNZ EXIT ;进行循环HLTMAIN ENDPEND START结果:4.两个长度均为100的内存块,先将内存块1全部写上88H,再将内存块1的内容移至内存块2。

微机原理实验用表格形式显示字符

微机原理实验用表格形式显示字符

实验课程名称微机原理实验实验项目名称用表格形式显示字符实验指导教师学生姓名学院理学院专业电子信息科学与技术年级2020级(一)班学号实验时间2020年12月20日总成绩教师签名1. 实验目的⑴熟悉堆栈指令的功能与应用。

⑵把握子程序挪用的方式和应用。

⑶把握经常使用寄放器的利用方式和不同寄放器的利用限制。

2. 实验内容⑴按15*16的表格形式显示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的顺序依次显示对应的字符。

每16个字符为一行,每行中的相邻两个字符之间用空白字符(ASCII码为0)隔开。

3. 实验预备⑴熟悉堆栈指令概念、功能及应用。

⑵认真预习有关子程序挪用的方式、了解入口参数及出口参数、元挪用及进挪用。

③按正常的方式编写程序实现表格显示(15×16)ASCII的所有字符。

4. 实验步骤实验1 用表格形式显示字符一、题目:用表格形式显示ASCII字符二、实验要求:按15*16的表格形式显示ASCII码为10H—100H的所有字符,即以行为主的顺序及ASCII码递增的顺序依次显示对应的字符。

每16个字符为一行,每行中的相邻两个字符之间用空白字符(ASCII码为0)隔开。

3、提示:⑴显示每一个字符可利用功能号为2的显示输出功能挪用MOV AH,2MOV DL,10H;字符从10H开始,每显示一个DL+1产生下一个字符INT 21H⑵显示空白符时DL=00H;⑶每行显示终止时需要显示回车(ASCII码为0DH)和换行(ASCII码为0AH),本行显示终止后可另起一行显示。

分析:①此题中可把DL初始化为10H, 然后不断使其加1(用INC指令) 以取得下一个字符的ASCII码。

②显示空白符时,用其ASCII码0置入DL 寄放器,每行终止时,用显示回车(ASC||为0DH)和换行符(ASCII为0AH)来终止本行并开始下一行。

③由于逐个显示接踵的ASCII字符时,需要保留并非断修改dl寄放器的内容,而显示空白、回车、换行符时也需要利用DL寄放器,为此可利用堆栈来保留接踵的ASCII字符。

微机原理软件实验报告

微机原理软件实验报告

实验名称:汇编语言程序设计实验日期:2023年3月10日实验地点:计算机实验室实验者:张三一、实验目的1. 熟悉汇编语言的基本语法和指令系统。

2. 掌握汇编语言程序设计的基本方法。

3. 通过实验,加深对微机原理的理解。

二、实验内容本次实验主要涉及以下内容:1. 数据传送指令的应用2. 算术运算指令的应用3. 控制转移指令的应用4. 子程序设计三、实验步骤1. 编写一个简单的程序,实现以下功能:(1)将数据0x1234存入寄存器AX;(2)将数据0x5678存入寄存器BX;(3)计算AX和BX的乘积,并将结果存入寄存器DX;(4)将乘积的高16位和低16位分别存入寄存器CX和AX。

2. 编写一个程序,实现以下功能:(1)将数据0x1A2B3C4D存入内存单元[0x1000];(2)从内存单元[0x1000]开始,读取连续4个字节的数据;3. 编写一个程序,实现以下功能:(1)定义一个子程序,实现两个整数的加法运算;(2)在主程序中调用该子程序,实现两个整数的加法运算。

四、实验结果与分析1. 数据传送指令的应用(1)将数据0x1234存入寄存器AX;MOV AX, 0x1234(2)将数据0x5678存入寄存器BX;MOV BX, 0x5678(3)计算AX和BX的乘积,并将结果存入寄存器DX;MUL BX(4)将乘积的高16位和低16位分别存入寄存器CX和AX; MOV CX, DXMOV AX, DX2. 算术运算指令的应用(1)将数据0x1A2B3C4D存入内存单元[0x1000];MOV [0x1000], 0x1A2B3C4D(2)从内存单元[0x1000]开始,读取连续4个字节的数据; MOV AX, [0x1000]MOV BX, [0x1000+2]MOV CX, [0x1000+4]MOV DX, [0x1000+6]MOV AH, 0x0EINT 0x103. 控制转移指令的应用(1)定义一个子程序,实现两个整数的加法运算;ADD procedure:ADD AX, BXRET(2)在主程序中调用该子程序,实现两个整数的加法运算;MOV AX, 0x1MOV BX, 0x2CALL ADDMOV CX, AX五、实验心得通过本次实验,我深刻理解了汇编语言的基本语法和指令系统,掌握了汇编语言程序设计的基本方法。

微机程序设计

微机程序设计

微机程序设计微机程序设计是一门结合计算机科学和工程学原理,专注于微处理器和微控制器编程的学科。

它涉及到硬件与软件的交互,以及如何通过编写程序来控制微机执行特定的任务。

以下是对微机程序设计的一些基础介绍和关键概念。

微机程序设计概述微机程序设计通常包括以下几个步骤:需求分析、系统设计、编码、测试、调试和维护。

这些步骤构成了软件开发生命周期的主体,对于微机程序设计同样适用。

硬件基础在开始程序设计之前,了解微机的硬件基础是至关重要的。

微机通常由以下部分组成:- 中央处理单元(CPU):执行指令和处理数据。

- 内存:存储程序和数据。

- 输入/输出(I/O)接口:允许微机与外部设备通信。

- 存储设备:如硬盘、固态硬盘等,用于长期存储数据。

编程语言微机程序设计可以使用多种编程语言,包括但不限于:- 汇编语言:与机器指令直接对应的低级语言。

- C语言:广泛用于系统编程和嵌入式系统。

- C++:支持面向对象编程,适用于需要复杂数据处理的场合。

- Python:高级语言,易于学习,常用于快速开发和原型设计。

开发环境微机程序设计通常需要特定的开发环境,这些环境提供了编译器、调试器和其他工具,以帮助开发者编写、测试和优化代码。

常见的开发环境包括:- Keil:适用于ARM Cortex微控制器的开发。

- MPLAB X IDE:适用于Microchip微控制器的开发。

- Arduino IDE:适用于Arduino平台的开发。

编程范式微机程序设计中常用的编程范式包括:- 过程式编程:以过程为中心,强调程序的执行流程。

- 面向对象编程:以对象为中心,强调数据和方法的封装。

- 事件驱动编程:以事件为中心,强调对用户输入或系统事件的响应。

接口与通信微机程序设计中,接口和通信是关键部分。

开发者需要了解如何通过各种接口(如SPI、I2C、UART等)与外部设备进行通信。

实时操作系统(RTOS)在需要多任务处理和实时响应的系统中,实时操作系统可以提供必要的调度和管理功能。

微机实验-3(十六进制数组显示程序-子程序结构)

微机实验-3(十六进制数组显示程序-子程序结构)
6、编程思路 【1】采用子程序结构时,源程序中应定 义子程序: 子程序名 PROC NEAR … ;子程序内容 RET 子程序名 ENDP
实验内容及要求
6、编程思路 【2】16进制数转换ASCⅡ码的算法参考课本第170页例题 【4.59】。 16进制数码: 0,1,…9,A,B,C,D,E,F ASCⅡ码 30H,31H,…39H,41H,42H,…46H 转换时 0~9 → 30H~39H,加30H; A~F → 41H~46H,加30H再加7 转换程序要先判断16进制数是0~9还是A~F,然后再转换。
实验内容及要求
6、编程思路 【3】程序结束时应使用DOS系统功能调 用返回系统提示符。即程序代码段的最 后两条指令应是: MOV AH,4CH INT 21H
实验报告要求
1、实验目的 2、实验内容及心得体会。 3、程序框图。 4、程序清单(应有程序注释)。
结 束
Hale Waihona Puke 实验内容及要求 2、(功能2)编写程序将内存Hex数 组中十六进制数00H~FFH转换成 ASCⅡ码并依次显示在计算机屏幕上。 3、要求将功能1和功能2分别用2个子 程序实现,并观察屏幕的显示结果。
实验内容及要求
4、完成程序的设计、调试程序、 运行程序并记录结果。 5、完成实验报告。
实验内容及要求
实验三
十六进制数组 显示程序设计
实验目的
1、掌握16进制数转换为ASCⅡ码 的程序设计方法。 。 2、学习在程序中调用DOS系统功 能的方法。 3、学习子程序设计方法。
实验内容及要求
实验程序包括2个功能 1、(功能1 )编写程序产生十六 进制数00H~FFH,并存放在内存 Hex数组中。 实现功能1,并在DEBUG环境观察 Hex数组元素。

嵌入式微机系统数码管显示实验报告

嵌入式微机系统数码管显示实验报告

码管显示程序设计1.实验目的(1)了解数码管的显示原理;(2)掌握JX44B0中数码显示的编程方法。

2.实验内容设计LED数码管显示程序,要求六位LED数码管滚动显示0~9数字字符以及两至三个固定的英文单词。

3.实验设备(1)硬件:JX44B0教学实验箱、PC机;(2)软件:PC机操作系统Windows 98(2000\XP)+ADT IDE集成开发环境。

4.实验原理(1)LED显示原理发光二极管数码显示器简称LED显示器。

LED显示器具有耗电省、成本低廉、配置简单灵活、安装方便、耐振动、寿命长等优点,目前广泛应用于嵌入式系统中。

7段LED由7个发光二极管按“日”字形排列,所有发光二极管的阳极连在一起称共阳极接法,阴极连在一起称为共阴极接法。

一般共阴极可以不需外接电阻,但共阳极接法中发光二极管必须外接电阻。

LED的结构及连接图见图1.1。

图1.1 LED结构及连接图当选用共阴极的LED显示器时,所有发光二极管的阴极连在一起接地,当某个发光二极管的阳极加入高电平时,对应的二极管点亮。

因此要显示某字形就应使此字形的相应段的二极管点亮,也就是送一个用不同电平组合代表的数据字来控制LED的显示,此数据称为字符的段码。

字符0、1、2…F与LED码段A、B、C…F以及DP(小数点)的关系如表5-1所示:表1.1 LED字符与码段对应表字符DP G F E D C B A 段码(共阴)段码(共阳)0 0 0 1 1 1 1 1 1 3FH C0H1 0 0 0 0 0 1 1 0 06H F9H2 0 1 0 1 1 0 1 1 5BH A4H3 0 1 0 0 1 1 1 1 4FH B0H4 0 1 1 0 0 1 1 0 66H 99H共阳的LED,被选中时的段为低电平有效.熄灭的段码为FFH。

本次试验系统中采用的是共阳极接法。

(2)LED显示接口LED显示器的接口一般有静态显示与动态显示接口两种方式1)静态显示LED数码管采用静态接口时,共阴极或共阳极点连接在一起接地或接高电平。

微机原理字符串动画显示

微机原理字符串动画显示

HEBEl UNIVERSlTY OF SClENCE AND TECHNOLOGY 课程设计报告学生姓名:甄晓学号:130704121专业班级:电科131班课程名称:微型计算机原理及应用技术学年学期:2015—2016学年第一学期同组人员:张思雨张文娟张哲姚博朗指导教师:赵艳20 15年12月课程设计成绩评定表一设计目的 (1)二设计任务和要求 (1)三设计内容 (1)四源代码以及主要代码分析 (5)五效果及功能展示 (12)六自己的贡献和心得体会 (14)字符串的动画显示程序设计一、设计目的:1、掌握汇编语言,会利用汇编语言编写一定功能的程序;2、熟悉DoS环境以及在DoS下会调试编写好的汇编程序;3、熟悉常用的DOS功能;4、小组合作完成设计题目。

二、设计任务和要求1、设计字符串的动画显示程序2、程序设计基本要求1 )菜单内容包括:①输入字符串;②字符串动画显示;③退出。

2)输入字符串选择该项后, 可以输入一个字符串. 该字符串即为动画显示时所显示的字符串.3)字符串动画显示所显示字符串在一矩形框内从无到有,从右至左移动,完全从框内移出后,又从右至左移动,直到有任意键按下,停止字符串动画显示返回到主菜单。

4)在主菜单中选择退出项,则结束程序返回DoS。

三、设计内容:1、使用的DOS功能:第 1 页共15 页1) 显示字符串MOV AH,09HINT 21H ;入口参数DS:DX缓冲区2) 键盘输入一个字符MOV AH,01HINT 21H ;AL=输入的字符3) 终止当前程序并返回调用程序MOV AH,4CHINT 21H ;AL=退出码4) 输入字符串MOV AH,0AHINT 21H ;入口参数DS:DX缓冲区2、使用工具和软件:PC机一台,MASI汇编软件3、流程图:1) 字符串从右向左移动第2 页共15 页字符串从右向左移流程图2)整体流程图第3页共15页开始显示菜单从键盘读入字符1T从键盘输入字符串,显示在屏幕,光标前移接收输入的字符,并存在以Str开头的内存单元调用字符串移动框图显示字符串从右向左移动1F延时,等待输入指令显示"PreSS any key toexit ∙∙∙aI输入任意字符1F退出程程序,返回DoS第4页共15页四、源代码以及主要代码分析1、字符串从右向左移动程序CODE SEGMENTASSUME CS:CODE,DS:CODESTART: MOV AX,CODEMOV DS,AXMOV AX,0B800HMOV ES,AXCLDAGAIN: MOV AX,3INT 10H ;显示文字LEA DX,MENUMOV AH,9 ;输出字符串INT 21HINPUT: MOV AH,1INT 21H ; 从键盘输入字符CMP AL,’1’JNE CP2CALL SUB01;JMP INPUT CP2:CMP AL,’2'JNZ CP3CALL SUB02 ; 字符串左右移动JMP AGAIN ;返回到主菜单CP3:CMP AL,'3’ ; 返回DOS JNZ INPUTLEA DX,MESGMOV AH,9INT 21HMOV AH,1INT 21HMOV AH,4CHINT 21HDELAY PROCPUSH CXPUSH DXMOV DX,0100D1: MOV CX,0FFFHLOOP $DEC DXJNZ D1POP DXRETDELAY ENDPCSH: MOV AL,20HMOV CX,60 ; 初始化CS1: REP STOSBRETSUB01: MOV AX,0E0DHINT 10HMOV AL,0AHINT 10HLEA DX,STR1MOV AH,0AHINT 21H ;输入一个字符串MOV AX,0E0AHINT 10H ; 换行;RETSUB02: CMP STR1+1,2 ;取串长最短为2 个字符JNB Y2Y2: CALL LINE ; 画矩形框MOV DX,ESPUSH DSPOP ESMOV DI,1000HCALL CSHMOV CL,STR1+1MOV CH,0 ; 取串长LEA SI,BUF ; 指向串首MOV DI,1000HADD DI,60-1MOV NUM,DIADD NUM,CXREP MOVSB ;移至显示缓冲区,重复存储字符串CALL CSHSHOW: MOV ES,DXMOV BP,1000H ;恢复数据区Y3: MOV SI,BP ; 置源数据区指针MOV DI,LEFT ;找屏幕位置MOV AH,7CHMOV CX,60-2Y4: LODSBSTOSW ;送显存LOOP Y4MOV AH,1INT 16HJNZ SSS ;按任意键,返回主菜单CALL DELAYINC BP ;源数据区指针后移一位CMP BP,NUMJB SS1MOV BP,1000H ;恢复数据区SS1: JMP Y3SSS: MOV STR1+1,0QUIT: XOR DI,DIMOV CX,80*25MOV AX,720HREP STOSW ; 清全屏;RETJMP AGAINLINE: MOV DI,(18*80+10)*2 ; 矩形框MOV AL,201 ;左上角MOV AH ,0EH STOSWMOV CX,60—2 MOV AL ,205 ; REP STOSW MOV AL ,187 ; STOSWADD DI ,20*2 MOV AL,186 ;STOSWMOV LEFT,DI MOV CX ,60—2MOV AL,20H ; REP STOSW MOV RIGHT ,DI MOV AL,186 ;STOSWADD DI ,20*2 MOV AL,200 ; STOSW MOV CX,60-2MOV AL,205 ; 横框REP STOSWMOV AL ,188 ; 右下角 STOSW横框右上角 竖框空格竖框左下角RETMENU DB 5 DUP(0AH)DB 31 DUP(' '),'MAIN MENU’,0DH,0AHDB 25 DUP(' ’),201,21 DUP(205),187,0DH,0AHDB 25 DUP(’ '),186,' 1.Input a String 。

微机原理键盘扫描及显示设计实验

微机原理键盘扫描及显示设计实验

微机原理键盘扫描及显⽰设计实验⼀、实验名称:键盘扫描及显⽰设计实验⼆、实验⽬的1.学习按键扫描的原理及电路接法;2.掌握利⽤8255完成按键扫描及显⽰。

三、实验内容及步骤1. 实验内容编写程序完成按键扫描功能,并将读到的按键值依次显⽰在数码管上。

实验机的按键及显⽰模块电路如图1所⽰。

按图2连线。

图1 键盘及显⽰电路图2 实验连线2. 实验步骤(1)按图1接线;(2)键⼊:check命令,记录分配的I/O空间;(3)利⽤查出的地址编写程序,然后编译链接;(4)运⾏程序,观察数码管显⽰是否正确。

四、流程图五、源程序;Keyscan.asm;键盘扫描及数码管显⽰实验;***************根据CHECK配置信息修改下列符号值*******************IOY0 EQU 9800H ;⽚选IOY0对应的端⼝始地址;*****************************************************************MY8255_A EQU IOY0+00H*4 ;8255的A⼝地址MY8255_B EQU IOY0+01H*4 ;8255的B⼝地址MY8255_C EQU IOY0+02H*4 ;8255的C⼝地址MY8255_MODE EQU IOY0+03H*4 ;8255的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP(?)DATA SEGMENTDTABLE DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H DATA ENDS ;键值表,0~F对应的7段数码管的段位值CODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXMOV SI,3000H ;建⽴缓冲区,存放要显⽰的键值MOV AL,00H ;先初始化键值为0MOV [SI],ALMOV [SI+1],ALMOV [SI+2],ALMOV [SI+3],ALMOV DI,3003HMOV DX,MY8255_MODE ;初始化8255⼯作⽅式MOV AL,81H ;⽅式0,A⼝、B⼝输出,C⼝低4位输⼊OUT DX,ALBEGIN:CALL DIS ;显⽰刷新CALL CLEAR ;清屏CALL CCSCAN ;扫描按键JNZ GETKEY1 ;有键按下则跳置GETKEY1MOV AH,1 ;判断PC键盘是否有按键按下INT 16HJZ BEGIN ;⽆按键则跳回继续循环,有则退出QUIT:MOV AX,4C00H ;返回到DOSINT 21HGETKEY1:CALL DIS ;显⽰刷新CALL DALLYCALL DALLYCALL CCSCAN ;再次扫描按键JNZ GETKEY2 ;有键按下则跳置GETKEY2GETKEY2:MOV CH,0FEHMOV CL,00H ;设置当前检测的是第⼏列COLUM:MOV AL,CH ;选取⼀列,将X1~X4中⼀个置0 MOV DX,MY8255_AOUT DX,ALMOV DX,MY8255_C ;读Y1~Y4,⽤于判断是哪⼀⾏按键闭合IN AL,DXL1:TEST AL,01H ;是否为第1⾏JNZ L2 ;不是则继续判断MOV AL,00H ;设置第1⾏第1列的对应的键值JMP KCODEL2:TEST AL,02H ;是否为第2⾏JNZ L3 ;不是则继续判断MOV AL,04H ;设置第2⾏第1列的对应的键值JMP KCODEL3:TEST AL,04H ;是否为第3⾏JNZ L4 ;不是则继续判断MOV AL,08H ;设置第3⾏第1列的对应的键值JMP KCODEL4:TEST AL,08H ;是否为第4⾏JNZ NEXT ;不是则继续判断MOV AL,0CH ;设置第4⾏第1列的对应的键值KCODE:ADD AL,CL ;将第1列的值加上当前列数,确定按键值CALL PUTBUF ;保存按键值PUSH AXKON:CALL DIS ;显⽰刷新CALL CLEAR ;清屏CALL CCSCAN ;扫描按键,判断按键是否弹起JNZ KON ;未弹起则继续循环等待弹起POP AXNEXT:INC CL ;当前检测的列数递增MOV AL,CHTEST AL,08H ;检测是否扫描到第4列JZ KERR ;是则跳回到开始处ROL AL,1 ;没检测到第4列则准备检测下⼀列MOV CH,ALKERR:JMP BEGINCCSCAN PROC NEAR ;扫描是否有按键闭合⼦程序MOV AL,00HMOV DX,MY8255_A ;将4列全选通,X1~X4置0 OUT DX,ALMOV DX,MY8255_CIN AL,DX ;读Y1~Y4NOT ALAND AL,0FH ;取出Y1~Y4的反值RETCCSCAN ENDPCLEAR PROC NEAR ;清除数码管显⽰⼦程序MOV DX,MY8255_B ;段位置0即可清除数码管显⽰MOV AL,00HOUT DX,ALRETCLEAR ENDPDIS PROC NEAR ;显⽰键值⼦程序PUSH AX ;以缓冲区存放的键值为键值表偏移找到键值并显⽰MOV SI,3000HMOV DL,0F7HMOV AL,DLAGAIN:PUSH DXMOV DX,MY8255_AOUT DX,AL ;设置X1~X4,选通⼀个数码管MOV AL,[SI] ;取出缓冲区中存放键值MOV BX,OFFSET DTABLEAND AX,00FFHADD BX,AXMOV AL,[BX] ;将键值作为偏移和键值基地址相加得到相应的键值 MOV DX,MY8255_B OUT DX,AL ;写⼊数码管A~DpCALL DALLYINC SI ;取下⼀个键值POP DXTEST AL,01H ;判断是否显⽰完?JZ OUT1 ;显⽰完,返回ROR AL,1MOV DL,ALJMP AGAIN ;未显⽰完,跳回继续OUT1:POP AXRETDIS ENDPPUTBUF PROC NEAR ;保存键值⼦程序MOV SI,DIMOV [SI],ALDEC DICMP DI,2FFFHJNZ GOBACKMOV DI,3003HGOBACK: RETPUTBUF ENDPDALLY PROC NEAR ;软件延时⼦程序PUSH CXMOV CX,00FFHD1: MOV AX,00FFHD2: DEC AXJNZ D2LOOP D1POP CXRETDALLY ENDPCODE ENDSEND START六、体会和感想通过这次的实验我了解到⾃⼰还有很多的不⾜,⽐如做实验的速度很慢,效率很低,思维不集中导致最后⽼师验收的时候没有来的及交,对书本的了解不是很透彻,也因此我决定下次实验的时候⼀定要好好地去思考,尽量在课外把实验看懂!。

微机原理实验指导书 (1)

微机原理实验指导书 (1)

实验一系统操作及程序调试举例1.实验目的学习并掌握实验系统的基本操作,为以后的实验打下基础。

2.实验设备DICE-8086B实验系统一台3.实验准备工作系统一经连好,检查无误后,就可以通电运行。

系统提供两种启动方式,即:系统自动完成后,显示器上会显示“>”提示符,等待键入操作命令。

4.实验内容及步骤(1)系统操作练习(一)要求:从3500内存单元开始建立0~15共16个数据。

程序流程图如下:实验步骤①输入与修改:在“﹥”提示符下键入A2000,此时显示器上将会显示程序的段地址CS和偏移地址IP(=2000H),接着就可以在光标处输入程序。

注:在输入过程中,若发现本行有错误,则可以按“ ”键删除并重新输入;若回车后系统提示“ERROR!”,则要在原地址指针处重新正确输入。

输入程序后可通过反汇编查看程序。

(U操作)②程序运行:在DICE-8086B实验系统上,程序的运行方式有单步、连续和断点运行几种方式。

可参考(T操作,G操作,GB操作等)③内存单元的修改与显示:用(D操作)可显示内存单元的内容,用(E操作)可修改内存单元的内容。

(分别参考前)。

④运行程序观察从3500H单元开始连续存放的16个数据为多少?任意修改AX的值,再运行程序,显示运行结果是否正确?流程图及参考程序如下:地址机器码助记符注释2000 BF 3500 MOV DI,3500 ;设数据区首址2003 B9 0010 MOV CX,0010 ;字节数送CX2006 B8 0000 MOV AX,00002009 9E SAHF200A 88 05 MOV B[DI],AL ;写入一字节200C 47 INC DI ;修改地址指针200D 40 INC AX ;修改数据200E 27 DAA ;十进制调整200F E2 F9 LOOP 200A ;未填完转移2011 CD 00 INT(2)系统操作练习(二)要求:将内存3500单元开始的0~15共16个数传递到3600单元开始的数据区中。

微机原理与汇编语言程序设计实验一

微机原理与汇编语言程序设计实验一

实验一汇编语言上机环境及基本操作一、实验目的及要求1.学习及掌握汇编语言源程序的书写格式和要求,明确程序中各段的功能和相互之间的关系。

2.学会使用EDIT、MASM、LINK、DEBUG等软件工具。

3.熟练掌握在计算机上建立、汇编、连接、调试及运行程序的方法。

二、实验内容1.汇编语言源程序的建立本例中给出的程序是要求从内存中存放的10个无符号字节整数数组中找出最小数,将其值保存在AL寄存器中。

设定源程序的文件名为ABC。

DATA SEGMENTBUF DB 23H,16H,08H,20H,64H,8AH,91H,35H,2BH,7FHCN EQU $-BUFDATA ENDSSTACK SEGMENT STACK ’STACK’STA DB 10 DUP(?)TOP EQU $-STASTACK ENDSCODE SEGMENTASSUME CS:CODE,DS:DATA,SS:STACKSTART: PUSH DSXOR AX,AXPUSH AXMOV AX,DATAMOV DS,AXMOV BX,OFFSET BUFMOV CX,CNDEC CXMOV AL,[BX]INC BXLP: CMP AL,[BX]JBE NEXTMOV AL,[BX]NEXT: INC BXDEC CXJNZ LPMOV AH,4CHINT 21HCODE ENDSEND START键入以下命令:C:\>EDIT ABC.ASM此时屏幕的显示状态如图1所示。

图1 用EDIT编辑ABC.AS M程序窗口程序输入完毕后一定要将源程序文件存入盘中,以便进行汇编及连接,也可以再次调出源程序进行修改。

2.将源程序文件汇编成目标程序文件一般情况下,MASM汇编程序的主要功能有以下3点:(1)检查源程序中存在的语法错误,并给出错误信息。

(2)源程序经汇编后没有错误,则产生目标程序文件,扩展名为.OBJ。

(3)若程序中使用了宏指令,则汇编程序将展开宏指令。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

微机实验报告
(1)
实验程序:
title draw--program to draw on screen with
read_c equ 0
key_rom equ 16h
up equ 48h
down equ 50h
right equ 4dh
left equ 4bh
block equ 0dbh
esc1 equ 1bh
video segment at 0b800h
wd_buff label word
v_buff db 25*80*2 dup(?)
video ends
pro_nam segment
main proc far
assume cs:pro_nam,es:video
start:
push ds
sub ax,ax
push ax
mov ax,video
mov es,ax
mov cx,80*25
mov bx,0
clear:
mov es:[wd_buff+bx],0700h
inc bx
inc bx
loop clear
mov ch,12d
mov cl,40d
get_char:
mov ah,read_c
int key_rom
cmp al,esc1
jz exit
mov al,ah
cmp al,up
jnz not_up
dec ch
not_up:
cmp al,down
jnz not_down
inc ch
not_down:
cmp al,right
jnz not_right
inc cl
not_right:
cmp al,left
jnz lite_it
dec cl
lite_it:
mov al,160d
mul ch
mov bl,cl
rol bl,1
mov bh,0
add bx,ax
mov al,block
mov es:[v_buff+bx],al
jmp get_char
exit:
ret
main endp
pro_nam ends
end start
思考题:
1、显示器是如何定义窗口的大小的?
答:显示器是根据显存的单元数,v_buff db 25*80*2 dup(?),定义窗口大小的。

2、在文本方式下,什么是属性值?
答:block equ 0dbh是定义的属性值,v_bluff+bx+1,是放每个单元(一共25*80个)属性值的地方,即每个单元的高字节。

3、光标轨迹运行到边界后,为什么光标会闪烁和改变颜色?若要光标不变,应如何修改程序?
答:光标移位所使用的语句是循环移位,当光标由边界移到另一边边界时方块字符的属性值发生错位相乘,所以光标会闪烁和改变颜色。

若要光标不变,应将循环移位ROL改为逻辑移位SHL。

(2)
实验程序:
stack segment
dw 64 dup(?)
stack ends
code segment
assume cs:code,ss:stack
start:
mov cx,001ah
mov bl,41h
mov ah,02h
a1: mov dl,bl
int 21h
inc bl
push cx
a2: loop a2
pop cx
dec cx
jnz a1
mov ah,4ch
int 21h
code ends
end start
结果:
修改程序:
stack SEGMENT
DW 64 DUP(?)
stack ENDS
code SEGMENT
ASSUME CS:code,SS:stack start:
MOV CX,0008h
a0: PUSH CX
MOV BL,31h
MOV CX,0009h
MOV AH,02h
a1: MOV DL,BL
INT 21h
INC BL
PUSH CX
a2: LOOP a2
POP CX
DEC CX
JNZ a1
MOV AH,02h
MOV DL,20h
INT 21h
POP CX
DEC CX
JNZ a0
MOV AH,4ch
INT 21h
code ENDS
END start
结果:。

相关文档
最新文档