- 0
- 0
- 约1.99千字
- 约 3页
- 2026-02-11 发布于天津
- 举报
实验一Keil的使用与汇编语言上机操作
实验目的:熟悉Keil环境,通过在Keil环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。
实验内容:
1.掌握Keil环境的使用
1)字节拆分、合并:调试e421.asm程序,观察相关寄存器和单元的内容。
2)数据块填充:调试fill.asm程序,观察相关寄存器和单元的内容。
2.编写两个十六位数的加法程序。
有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
思考题:
怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly窗口有何作用?
字节拆分、合并还有哪些方法,举一例说明。
3.若按递减1规律填充数据块,应如何修改程序?
4.若从7010H单元开始,连续填充20个字节,应该如何修改程序?
5.若完成双字节BCD码加法,应如何修改程序?
字节拆分、合并程序
Filename:e421.asm
Description:1字节BCD码转换为2字节ASCII
2字节ASCII码转化为1字节BCD码
Date:
Designedby:
Sourceused:30H:BCDdata
31H,32H:ASCIIdata
31H,32H-33H
ORG0000H
LJMPMAIN
ORG0100H
MAIN: MOVSP,#40H;赋堆栈指针
MOV30H,#49H;30H单元赋值
MOVR0,#32H;R0指针赋值
MOV@R0,#0;32H单元清零
MOVA,30H
XCHDA,@R0;拆分字节
ORL32H,#30H;转换为ASCII
SWAPA
ORLA,#30H;转换为ASCII
MOV31H,A;结果存于31H单元
MOVA,31H ;从31H单元取值
ANLA,#0FH ;转换为BCD
SWAPA
MOV33H,A ;结果存于33H单元
MOVA,32H ;从32H单元取值
ANLA,#0FH ;转换为BCD
ORL33H,A ;合并字节
HERE: SJMPHERE;踏步
END
数据块填充程序:将片外RAM7000H-70FFH单元按一定规律填充
Filename:fill.asm
Date:2011.8.20
Designedby:CDH
Sourceused:R0:计数器
DPTR:片外数据指针
ORG0000H
LJMPMAIN
ORG 0100H
MAIN: MOVSP,#40H
FILL: CLRA;A寄存器清零
MOVR0,#00H ;设循环计数器
MOVDPTR,#7000H ;设数据指针
FILL1: MOVX@DPTR,A ;传送到片外RAM
INCA ;A内容加1
INC DPTR ;修改数据指针
INCR0 ;修改循环计数器
CJNER0,#00H,FILL1 ;判断是否结束
HERE: SJMPHERE ;原地踏步
END
原创力文档

文档评论(0)