实验一
Keil的使用与汇编语言上机操作
实验目的:熟悉Keil环境,通过在Keil环境下调试字节拆分、合并程序、数据块清零程序、加法程序,掌握汇编语言程序的调试方法,加深对BCD码、ASCII码、堆栈、寄存器、数据指针、汇编语言指令、机器码等基本概念的理解,为后续程序编制和调试打下基础。实验内容:1掌握Keil环境的使用1)字节拆分、合并:调试e421asm程序,观察相关寄存器和单元的内容。2)数据块填充:调试fillasm程序,观察相关寄存器和单元的内容。2编写两个十六位数的加法程序。有两个十六位无符号数,分别存放在从20H和30H开始的数据区中,低八位先存,高八位在后,和存于R3(高八位)和R4(低八位),进位位存于R2。
思考题:1.怎样查看工作寄存器、SFR、片内RAM、片外RAM及程序代码空间内容?Disassembly窗口有何作用?2.字节拆分、合并还有哪些方法,举一例说明。3若按递减1规律填充数据块,应如何修改程序?4若从7010H单元开始,连续填充20个字节,应该如何修改程序?5若完成双字节BCD码加法,应如何修改程序?
字节拆分、合并程序File
amee421asm2字节ASCII码转化为1字节BCD码DateDesig
edbySourceused30HBCDdata31H32H:ASCIIdata31H32H33HDescriptio
1字节BCD码转换为2字节ASCII
fORG0000HLJMPMAINORGMAINMOVMOVMOVMOVMOVORLORLMOVMOVANLMOVMOVANLORLHERE0100HSP40H30H49HR032HR00A30H拆分字节转换为ASCII转换为ASCII结果存于31H单元从31H单元取值转换为BCD结果存于33H单元从32H单元取值转换为BCD合并字节踏步赋堆栈指针30H单元赋值R0指针赋值32H单元清零
XCHDAR032H30HAAA30H31H0FHSWAPA31HA
SWAPA33HAAA32H0FH
33HA
SJMPHEREEND
数据块填充程序:将片外RAM7000H70FFH单元按一定规律填充File
amefillasmDate2011820Desig
edbyCDHSourceusedR0计数器DPTR片外数据指针ORG0000HLJMPMAINORG0100HMAINFILLMOVSP40HCLRMOVMOVAR000HDPTR7000HA寄存器清零设循环计数器设数据指针
fFILL1
MOVXDPTRAINCINCAR000HFILL1INCDPTRCJNER0
传送到片外RAMA内容加1修改数据指针修改循环计数器判断是否结束原地踏步
HERE
SJMPHEREEND
fr