程序存储器中,依次存放0~F的七段数码显示器的字模码3FH、06H、5BH、4FH、66H、6DH、7DH、07H、7FH、6FH、77H、7CH、39H、5EH、79H、71H,则当需要在P1口输出某一数码,假设需要显示的数码存放在20H。
编程将外部RAM的2000H单元内容传送到3000H单元中(两单元之间的数据传送)。
设A=49H,R0=6BH,分析执行指令:
ADD A, R0 ; A ← A+R0后的结果。
若在外部程序存储器中2000H单元开始依次存放0~9的平方值,数据指针DPTR=3A00H,用查表指令取得2003H单元的数据后保存到30H,要求保持DPTR中的内容不变。编程实现上述功能
双字节压缩BCD码加法。 设R5(高)、 R4(低)为被加数; R3(高)、 R2(低)为加数,相加和的结果存入: R6(万)、 R5(千、 百)、 R4(十、 个)。编程实现双字节压缩BCD码的加法。
编程实现,双字节无符号数相减,(R0 R1)-(R2 R3) → (R4 R5)。R0、 R2、 R4存放16位数的高字节,R1、 R3、 R5存放低字节,先减低8位,后减高8位和低位减借位。
利用单字节乘法指令进行双字节数乘以单字节数运算。 若被乘数为16位无符号数,地址为30H和31H(低位先、 高位后), 乘数为8位无符号数,地址为32H 积存入R2、 R3和R4三个寄存器中。
设A=43H, CY=0, 则执行指令:
RL A 结果为:
RLC A
RR A
RRC A
若被乘数和乘数均为16位无符号数,被乘数存放的地址为30H和31H(低位先、 高位后), 乘数存放的地址为32H和33H(低位先、 高位后),乘积存入34H、35H、36H、37H。
编程实现16 位数的算术左移。 16 位数在内存中低 8 位存放在30H单元,高 8 位存放在31H单元。所谓算术左移就是将操作数左移一位,并使最低位补充 0,相当于完成 16 位数的乘 2 操作,故称算术左移。
20H、21H、22H为位地址编程实现(20H)=(21H)⨁(22H)异或运算。
(30H)中存储了一个有符号数,编程求这个有符号数的补码。
将外部RAM从400H单元开始的10个无符号数相加,相加结果保存到外部RAM(300H)L,(301H)H。
利用位逻辑指令, 模拟图所示硬件逻辑电路功能。
将外部数据RAM的一个数据块传送到内部数据RAM, 两者的首址分别为2000H和20H,遇到传送的数据为零时停止。
比较内部RAM(40H)、 (41H)单元中A、 B两数的大小。 若A=B,则使PSW的位F0置 1;若A≠B, 则大数存30H单元,小数存31H单元。 设A、 B数均为带符号数,以补码数存入(40H)、 (41H)中。
设内部RAM 40H、41H单元中分别存放着 8 位二进制数,要求取出两个单元中的低半字节,并成一个字节后,存入 50H单元中。( 40H存高四位、41H存低四位)
x,y均为8位二进制数, 设 x存入R0, y存入R1, 求解:
假设某菜单有9项。试编写一程序段,根据输入数码转去执行相应的子程序,即输入“1”,执行子程序1;输入“2”,执行子程序2;依次类推,输入“9”,执行子程序9。(注:9段子程序分别用Key1、Key2、…Key9命名,输入的数码存放在R7中)
在内部 RAM中从50H单元开始的连续单元依次存放了一串字符,该字符串以回车符为结束标志,要求测试该字符串的长度。 (回车符的机器码为:0DH)
将内部RAM从20H单元开始的100个无符号数按照从大到小的顺序存放。
:求两个无符号数据块中的最大值。数据块的首地址分别为20H和50H,每个数据块的第1个字节都存放数据块长度。结果存入5FH单元。
某智能化仪器的键盘程序中,根据命令的键值(0,1,2,…,9)转换成相应的双字节16位命令操作入口地址,其键值与对应入口地址关系如下:
键值 0 1 2 3 4 5
入口地址 0123 0186 0234 0316 0415 0520
健值 6 7 8 9
人口地址 0626 0710 0818 0929
设键值存放在20H单元中,出口地址值存放在22H、23H单元中。
输入一个ASCII命令符,输入的命令符存放在20H单元要求按照输入的命令字符转去执行相应的处理程序。 设命令为单字节字符 ′A′、 ′D′、 ′E′、 ′L′、 ′M′、 ′X′、 ′Z′七种,相应的处理程序入口标号分别为双字节2000H、 2100H、 2200H、 2300H、 2400H、 2500H、 2600H,查到程序入口地址,然后将程序入口地址装入到DPTR,如果没找到则程序结束。
由P3.4引脚(T0)输人一低频脉冲信号(其频率<0.5kHz),要求P3.4每发生 一次负跳变时,P1.0输出一个500μs的同步负脉冲,同时P1.1输出一个1ms的同步正脉冲已知晶振频率为6MHz。