- 1、本文档共10页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
....
..
..
.... .
...
. .
《微机实验》报告
实验名称指导教师
KeilC
小英
的使用与汇编语言上机操作
专业班级
中法 1201
肖洋 学号 U201214343
联系
一、任务要求
掌握 KeilC 环境的使用
)字节拆分、合并:调试 e421.asm 程序, 观察相关寄存器和单元的容。
)数据块填充:调试 fill.asm 程序,观察相关寄存器和单元的容。
编写两个十六位数的加法程序。
有两个十六位无符号数, 分别存放在从 20H 和 30H 开始的数据区中, 低八位先存, 高八位在后,和存于 R3(高八位)和 R4(低八位),进位位存于 R2。
二、设计思路
字节拆分、合并程序: 利用汇编语言中的 XCHD 和 SWAP 两个语句来实现将八位二进制数拆分为两个四位二进制 数并分别存储于不同的存储空间的功能, BCD码与 30H 相或(加上 30H )得到 ASCII 码。 将两个 ASCII 码和 0FH 相与(高四位清零)得到 BCD 码,利用 SWAP 语句将高位数放至高四位,将高位数和低位数相或可实现字节的合并。
数据块填充程序: 将 R0 用作计数器, DPTR用作片外数据指针, A 作为原始数据来源, 依顺序在片外的存 储单元容填充数据。 利用循环语句来减少程序长度, 并控制填充单元个数为片外 100H 个。 (通过 R0 的进位控制)
两个十六位数加法程序: 把第一个十六位无符号数的地八位和高八位分别存于 20H 和21H 中, 把第二个十六位无 符号数的地八位和高八位分别存于 30H 和 31H 中,对 20H 和30H 中的两个低八位进行 ADD 加法操作, 结果存于 R4 中; 然后对 21H 和 31H 中的两个高八位进行 ADDC 带进位的加法操作, 结果存于 R3 中. 然后将累加器 A 清零,并和 #00H 进行 ADDC 带进位的加法操作,结果产生进位数并存于 R2 中,程序结束。
三、资源分配
字节拆分、合并程序:
片 30H 单位存放原 BCD 码,31H 和 32H 存放拆分后的两个 ASCII 码,33H 存放合并后的
BCD 码。
数据块填充程序:
R0 作为计数器, DPTR 作为数据指针,片外 RAM空间从 7000H 开始填充。
两个十六位数加法程序:
20H,21H: 第一个数的低八位和高八位 30H,31H :第二个数的低八位和高八位 R4 :加法结果的低八位 R3 :加法结果的高八位 R2 :加法结果的进位
四、流程图
字节拆分、合并程序 2. 数据块填充程序
3. 两个十六进制数相加程序
五、源代码 (含文件头说明、语句行注释)
字节拆分、合并程序File name: e421.asm
Description: 1 字节 BCD码转换为 2 字节 ASCII
2 字节 ASCII 码转化为 1 字节 BCD码Source used: 30H: BCD data
31H, 32H :ASCII data
31H, 32H -33H
ORG 0000H
LJMP MAIN ORG 0100H
MAIN: MOV SP, #40H ; 赋堆栈指针
MOV 30H, #49H ;30H 单元赋值
MOV R0, #32H ;R0 指针赋值
MOV R0, #0
MOV A, 30H
;32H
单元清零
XCHD A, R0
;
拆分字节
ORL 32H, #30H
;
转换为 ASCII
SWAP A
ORL A, #30H
;
转换为 ASCII
MOV 31H, A
;
结果存于 31H 单元
MOV A, 31H
;
从 31H 单元取值
ANL A, #0FH
SWAP A
;
转换为 BCD
MOV 33H, A
;
结果存于 33H 单元
MOV A, 32H
;
从 32H 单元取值
ANL A, #0FH
ORL 33H, A
;
;
转换为 BCD
合并字节
HERE: SJMP HERE ; 踏步
END
数据块填充程序:将片外 RAM 7000H-70FFH单元按一定规律填充File name: fill.asm
Source used: R0: 计数器
DPTR: 片外数据指针
ORG 0000H LJMP MAIN
ORG 0100H
MAIN: MOV SP,#40H
FILL: CLR A ;A 寄存器清零MOV R0, #00H ; 设循环计数器MOV DPTR, #7000H ; 设数据指针
FILL1:
MOVX DPTR, A
INC A
;A
;
传送到片外 RAM
容加 1
INC DPTR
;
修改数据指针
INC R0
; 修改循环计
文档评论(0)