微机原理与接口技术两个数相乘和相减实验.docx

上传人:b****6 文档编号:6797595 上传时间:2023-01-10 格式:DOCX 页数:13 大小:61.18KB
下载 相关 举报
微机原理与接口技术两个数相乘和相减实验.docx_第1页
第1页 / 共13页
微机原理与接口技术两个数相乘和相减实验.docx_第2页
第2页 / 共13页
微机原理与接口技术两个数相乘和相减实验.docx_第3页
第3页 / 共13页
微机原理与接口技术两个数相乘和相减实验.docx_第4页
第4页 / 共13页
微机原理与接口技术两个数相乘和相减实验.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术两个数相乘和相减实验.docx

《微机原理与接口技术两个数相乘和相减实验.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术两个数相乘和相减实验.docx(13页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术两个数相乘和相减实验.docx

微机原理与接口技术两个数相乘和相减实验

存档资料成绩:

 

华东交通大学理工学院

课程设计报告书

 

所属课程名称微机原理与接口技术

题目两个数相乘和相减实验

LCD显示实验

分院电信分院

专业班级09电子信息工程()

学  号200902104

学生姓名

指导教师李房云

 

2012年6月7日

目录

第1章课程设计内容要求和目的..................

(2)

1.1设计内容.....................................

(2)

1.2设计要求.....................................

(2)

1.3设计目的.....................................

(2)

第2章设计方法与步骤...........................(3)

第3章软件实验.................................(4)

3.1两个数相乘的实验..............................(4)

3.1.1两个数相乘的实验程序框图....................(4)

3.1.2两个数相乘的实验程序代码....................(6)

3.2十进制的BCD码减法运算.........................(8)

3.2.1十进制的BCD码减法运算程序框图...............(8)

3.2.2十进制的BCD码减法运算程序代码...............(9)

第4章硬件实验.................................(10)

4.1LCD显示实验..................................(10)

4.1.1LCD显示实验程序框图........................(10)

4.1.2LCD显示实验程序代码........................(11)

第5章课程设计心得体会.......................(13)

第6章参考文献.................................(14)

 

第1章课程设计内容要求和目的

1.1、设计内容

1.1.1、软件实验:

(1)两个数相乘的实验:

实现十进制数的乘法,被乘数和乘数均以ASCII码形式存放在内存中,算式结果在屏幕上显示出来。

(2)十进制的BCD码减法运算:

计算X-Y=Z,其中X、Y、Z为BCD码。

1.1.2、硬件实验:

编程在液晶屏上显示汉字“北京理工达盛科技有限公司”。

1.2、设计要求

(1)软件实验要求设计好程序并运行,显示;

(2)硬件实验要求能够在试验台中进行调试;

1.3、设计目的

通过硬件和软件实验的设计、编程和调试,要求学会:

1了解汇编语言的使用和设计;

2掌握微机控制系统的设计和软件的调试。

 

第2章设计方法与步骤

1、设计方法:

使用汇编语言对各部件进行分解设计。

2、设计步骤:

(1)功能和性能指标分析:

对题目的各项要求进行分析,整理出系统和具体系统设计所需的更具体、更详细的功能要求和技术性指标数据,以求得设计的原始依据。

(2)分解软件单元设计:

很好地理解系统的工作原理,正确利用汇编语言对具体功能的编程实现。

(3)画出总体系统框图,并对各单元部分进行语言设计的分析和程序的编写,并检查编写程序中出现的错误。

(4)按总的编程软件,调试并改进。

 

第3章软件实验

3.1两个数相乘的实验:

程序框图:

结束

 

乘数→BL

BL中数由ASSII码转化为十六进制数

SI指向被乘数

DI指向储存结果区域(预清0)

计数值5→CX

取被乘数[SI]单元与BL相乘

AA调整

结果低位与前次的进位[DI]相加

AAM调整

结果[DI]

DI指向下一单元本次计算的进位→[DI]

CX=6

将[DI]内存单元里的数存放到DL中,并把ASUII码转换为十进制数

 

在屏幕上显示数据

DI指向上一单元本次计算的进位→[DI]

 

程序代码:

DATASEGMENT;定义数据段

ADB'2','3','5','3','1';被乘数

BDB'4';乘数

MDB6DUP(0);6位字节型存储单元

SDB'13532*4=$';输出的公式

DATAENDS;定义数据段结束

CODESEGMENT;定义堆栈段

ASSUMECS:

CODE,DS:

DATA,ES:

DATA;段说明

START:

MOVAX,DATA

MOVDS,AX;DATA-->DS

MOVES,AX;DATA-->ES

MOVSI,OFFSETA;A为源操作数

MOVDI,OFFSETM;B为目的操作数

MOVCX,5;循环5次

ANDB,0FH;将ASCII码数据转换成二进制形式

MOVBYTEPTR[DI],0;将[DI]的数据类型换成字节型

L1:

MOVAL,[SI];乘数与被乘数相乘

ANDAL,0FH;取AL的低四位

MULB;AL*B

AAM;对BCD码乘法AL*B的结果进行调整

ADDAL,[DI];AL加上低位的进位

AAA;对ASCII码加法结果调整

MOV[DI],AL;把乘积的低位存入[DI]内存单元

INCDI;DI自加1

MOV[DI],AH;把乘积的高位存入[DI]内存单元

INCSI;SI自加1

LOOPL1;跳转到L1

MOVDX,OFFSETS;返回段内偏移量

MOVAH,9;写属性/字符到当前光标位置

INT21H;系统功能调用

MOVCX,6;循环6次

L2:

MOVDL,[DI];将[DI]内存单元里的数存放到DL中

ADDDL,30H;把ASUII数转换为十进制数

MOVAH,02H;设定光标位置

INT21H;显示所得数据

DECDI;DI自减1

LOOPL2;跳转到L2

MOVAX,4CH;终止当前程序并返回调用程序

INT21H;系统功能调用

CODEENDS;堆栈段结束

ENDSTART;结束程序

 

3.2十进制的BCD码减法运算

程序框图:

 

 

程序代码:

datasegment;数据段声明

xdb37h;第一个数据给被减数

ydb32h;第二个数据给减数

zdb?

;结果放z中

dataends;数据段结束

stacksegment;堆栈段声明

stapdb100dup(?

);分配堆栈大小

topequlengthstap;堆栈长度

stackends;堆栈段结束

codesegment;定义代码段

assumecs:

code,ds:

data,ss:

stack;伪指令指明在那个段的寄存器

start:

movax,data;初始数据段

movds,ax;将ax送到ds中

movax,stack;初始堆栈段

movss,ax;将ax送到是ss中

movsp,top;将top送到sp中

movsi,offsetx;被减数偏移地址送SI

moval,[si];被减数送AL

movdi,offsety;减数偏移地址送DI

subal,[di];减后的结果送AL

das;DAS调整

movdi,offsetz;结果的偏移地址送DI

mov[di],al;结果送DI

movah,4ch;返回DOS

int21h;结束

codeends;代码段结束

endstart;程序结束

 

第4章硬件实验

4.1LCD显示实验

程序框图:

 

程序代码:

assumecs:

code;伪指令指明在那个代码段

codesegmentpublic;定义公共段

org100h;伪指令开始地址

start:

movdx,04a6h;控制寄存器地址

movax,88h;A口方式0输出,B口方式0输出,C口低四位输出,高四位输入口

outdx,ax;输出

movax,70h;第一行地址

outdx,ax;输出

moval,0f4h;写命令控制地址

callcomd;调用写命令

calldelay;延迟时间

start1:

movsi,offset[table]

movcx,60;取模的次数

wr1:

movdx,04a4h;C口地址

inax,dx;输入

andax,80h;取C口最高位地址

jnzwr1;等于0顺序执行

moval,[si];取TABLE的值

callcomd;写命令

incsi;取下一个TABLE的值

loopwr1;循环直到取完

calldelay;调用延迟函数

ok:

jmpstart1

delay:

movcx,1000h;延迟函数大约2*2*16^3/1000=1.6MS

dlyb:

loopdlyb

ret

comd:

movdx,04a0h;A口地址

outdx,al;输出

movdx,04a6h;控制寄存器地址

movax,71h;写入第二行地址

outdx,ax;输出

mon:

movdx,04a4h;C口地址

inax,dx;输入

andax,80h;取最高位地址

jzmon;当最高位为1顺序执行

movdx,04a6h;指向控制口

movax,70h;在第一行显示

outdx,ax;输出显示

ret;返回

table:

DB0F0H,01D,00D,17D,17D,0F0H,02D,00D,30D,09D;显示字符取模

DB0F0H,03D,00D,32D,77D,0F0H,04D,00D,25D,04D

DB0F0H,05D,00D,20D,79D,0F0H,06D,00D,42D,02D

DB0F0H,01D,01D,31D,38D,0F0H,02D,01D,28D,28D

DB0F0H,03D,01D,51D,48D,0F0H,04D,01D,47D,62D

DB0F0H,05D,01D,25D,11D,0F0H,06D,01D,43D,30D

codeends;代码段结束

endstart;程序结束

 

第5章心得体会

通过这次课设,让我深刻的明白了,理论和实践相结合的重要性。

如果只会理论,而不注重实践,那么即使理论再好,动手能力也不见得很厉害。

设计题目下来,首先得认真的分析原理,然后仔细的查阅资料。

这次课程设计并不是很难,主要的困难来自对程序的理解。

功夫不负有心人,最后让我对原理有了清晰的认识。

编程,要写的代码很多,同时一种题目,有很多种方法可以去解决。

所以,启发了我,在以后的学习当中,遇到问题和难题时候,不要纠结于一种方法,要多多思考。

 

第6章参考文献

[1]周荷琴,吴秀清.《微型计算机原理与接口技术》,中国科学技术大学出版社,2008年版

[2]吴同茂,李志民.《微机原理与接口技术实验及课程设计指导书》,中南大学信息科学与工程学院,2010年10月

[3]李广波,王海,李岗.《微机接口技术与实例》,国防工业出版社,2010年版

[4]王玉良,吴晓非,《微机原理与接口技术》,北京邮电大学出版社,2006年版

 

致谢

从开始知道这个课设的内容时候,同学之间就相互讨论着。

特别是本课设中的乘法编程,一开始感觉很难。

后来在老师和同学的帮助下,慢慢的研究出来了。

通过这次的课设,让我知道了,学习这事,不是马马虎虎就能学好的。

最后诚挚的感谢李老师,辛苦的教我们这门课程《微机原理与接口技术》,最后祝老师工资顺利,身体健康!

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1