第四章 汇编语言程序设计
4-1 试编写程序,将内部RAM的20H~2FH共16个连续单元清零。
4-2 试编写程序,求出内部RAM 20H单元中的数据含“1”的个数,并将结果存入21H单元。
4-3 试编写一个程序,查找在内部RAM的30H~50H单元中出现FFH的次数,并将查找的结果存入51H单元。
4-4 试编写程序,计数,并将结果存放在内部RAM的30H单元。
4-5 试用循环转移指令编写延时20ms子程序。设单片机的晶振频率为6MHz。
4-6 SJMP指令和AJMP指令都是两字节指令,它们有什么区别?各自的转移范围是多少?能否用AJMP指令代替程序中所有的SJMP指令?为什么?
4-7 从内部RAM的30H单元开始存放一组用补码表示的带符号数,其数目已存放在20H单元。编写程序统计出其中的正数、0和负数的数目,并将结果分别存入21H、22H、23H单元。
4-8 内部RAM中有一块数据块,存放在20H~2FH单元中,要求对这些数据进行奇偶校验。凡是满足偶校验的数据(1的个数为偶数),都要转存到外部RAM 8000H 开始的数据区中。试编写有关程序。
4-9 试编写1个程序,将内部RAM中45H单元的高4位清0,低4位置1。
4-10 编写程序,查找在内部RAM的30H~50H单元中是否有0AAH这一数据。若有,则将51H单元置为“01H”;若未找到,则将51H单元置为“00H”。
4-11 若SP=60H,标号LABEL所在的地址为3456H。LCALL指令的地址为2000H,执行指令LCALL LABEL 后,堆栈指针SP和堆栈内容发生了什么变化?PC的值等于什么?如果将指令LCALL直接换成ACALL是否可以?如果换成ACALL指令,可调用的地址范围是什么?