思考与练习
2-1 Rn和Ri有什么区别?n和i值的范围是多少?@Ri表示什么含义?
2-2 30H与#30H有什么区别?
2-3 请按下列要求传送数据:
1)将R2中的数据传送到R2;
2)将立即数30H传送到40H;
3)将立即数30H传送到以R0中内容为地址的存储单元中;
4)将30H中的数据传送到以R0中内容为地址的存储单元中;
5)将R1中的数据传送到以R0中内容为地址的存储单元中。
2-4 已知RAM(20H)=60H,(30H)=10H,(40H)=20H,(50H)=40H,试写出执行以下程序段后有关单元的内容。
2-5 请按下列要求传送数据,并写出每一条指令执行后的结果,设片内RAM(20H)=ABH,片外RAM(4000H)=CDH,ROM(4000H)=EFH。
1)将片内RAM 20H单元数据送入片外RAM 20H单元;
2)将片内RAM 20H单元数据送入片外RAM 2020H单元;
3)将片外RAM 4000H单元数据送入片内RAM 20H单元;
4)将片外RAM 4000H单元数据送入片外RAM 1000H单元;
5)将ROM4000H单元数据送入片外RAM20H单元;
6)将ROM4000H单元数据送入片内RAM20H单元。
2-6 试求下列程序连续运行一次后有关单元中的内容。已知片内RAM(20H)=24H,(24H)=BCH,(SP)=1FH,(1FH)=39H,(39H)=67H,片外RAM(1000H)=10H,ROM(1010H)=FFH。
2-7 若(R0)=40H,(40H)=79H,(41H)=1FH,(DPTR)=1FDFH,ROM(2000H)=ABH,(CY)=1,将一次执行下列指令后的结果写在注释区。
2-8 试求下列程序运行一次后有关单元的内容。已知(R1)=73H,(CY)=0,(59H)=73H,(73H)=6BH。
2-9 分别用一条指令实现下列功能。
1)若CY=0,则转PROM1程序段执行;
2)若位寻址(30H)≠0,则将30H清零,并使程序转至PROM2;
3)若A中数据不等于200,则程序转至PROM3;
4)若A中数据不等于0,则程序转至PROM4;
5)将40H中数据减1,若差值不等于0,则程序转至PROM5;
6)若以R0中内容为地址的存储单元中的数据不等于10,则程序转至PROM6;
7)调用首地址为1000H的子程序;
8)使PC=3000H。
2-10 编程完成下述操作:
1)将片外2004H单元中的数据传送到B;
2)将片外30H单元中的数据传送到片外1010H单元中;
3)将外部RAM 2000H单元中的高2位取反,低4位清零,其余位保持不变;
4)将外部RAM 60H单元中的中间4位取反;
5)编程实现将外部RAM 60H单元的高2位清零,最低2位取反,其余保持不变;
6)编程实现将外部RAM 0200H单元的高2位清零,最低2位取反,其余保持不变;
7)编程实现将外部RAM 80H单元的高2位置位,最低2位清零,其余位取反;
8)编程实现,从片外RAM 300H单元中读取数据,存放到片外RAM 80H单元中。
2-11 被减数存在31H30H中(高位在前),减数存在33H32H中,试编写其减法程序,差值存入31H30H单元,借位存入32H单元。
2-12 汇编语言程序设计分为哪几个步骤?
2-13 什么叫伪指令?伪指令与指令有什么区别?它们的用途是什么?
2-14 基本程序结构有哪几种?各有什么特点?
2-15 子程序调用时,参数的传递方法有哪几种?
2-16 设内部RAM50H和51H单元中存放有两个8位有符号数,试编程找出其中的最大数,将其存入60H单元。
2-17 编程将外部RAM2000H~202FH单元中的内容,移入内部RAM20H~4FH中,并将原数据块区域清0。