8085微处理器检查回文程序
在这里,我们将看到一个8085微处理器程序,它可以检查一个数字是否为回文。
问题陈述−
编写一个8085汇编语言程序来检查一个位模式是否为回文。
讨论−
在这个程序中,我们从8000H位置获取数字。如果数字不是回文,程序将返回00H,否则将返回FFH。
例如,输入为18H,则二进制值为(0001 1000),这是一个回文。数字52H (0101 0010)则不是回文。
在这个问题中,我们将第一个数字放入累加器,然后将其左移。当它左移时,MSB将被放置到LSB,并且也会在进位标志中。这个进位标志通过右移插入D寄存器。因此,位模式将被反转,现在通过检查实际数字和反转数字的值,我们可以确定它是否为回文。
输入
第一个输入
地址 | 数据 |
---|---|
… | … |
8000 | BD |
… | … |
第二个输入
地址 | 数据 |
---|---|
… | … |
8000 | 52 |
… | … |
第三个输入
地址 | 数据 |
---|---|
… | … |
8000 | 18 |
… | … |
流程图
程序
地址 | 十六进制代码 | 标签 | 助记符 | 注释 |
---|---|---|---|---|
F000 | 3A, 00, 80 | | LDA 8000H | 将数字加载到A |
F003 | 67 | | MOV H,A | 将Acc移到H |
F004 | 0E, 08 | | MVI C,08H | 初始化计数器 |
F006 | 7C | LOOP | MOV A,H | 将H加载到Acc |
F007 | 07 | | RLC | 左移 |
F008 | 67 | | MOV H,A | 将Acc移回H |
F009 | 7A | | MOV A,D | 将D内容加载到Acc |
F00A | 1F | | RAR | 带进位的右移 |
F00B | 57 | | MOV D,A | 将Acc移回D |
F00C | 0D | | DCR C | 递减C |
F00D | C2, 06, F0 | | JNZ LOOP | 如果Z=0,则跳转到LOOP |
F010 | 7C | | MOV A,H | 将H数据加载到Acc |
F011 | BA | | CMP D | 将D与Acc比较 |
F012 | CA, 1A, F0 | | JZ TRUE | 如果两者相同,则为回文 |
F015 | 3E, 00 | | MVI A, 00H | 将00H加载到A |
F017 | C3, 1C, F0 | | JMP EXIT | 跳转到Exit |
F01A | 3E, FF | TRUE | MVI A,FFH | 将FFH加载到A |
F01C | 32, 50, 80 | EXIT | STA 8050H | 将结果存储到内存中 |
F01F | 76 | | HLT | 终止程序 |
输出
第一个输出
地址 | 数据 |
---|---|
… | … |
8050 | FF |
… | … |
第二个输出
地址 | 数据 |
---|---|
… | … |
8050 | 00 |
… | … |
第三个输出
地址 | 数据 |
---|---|
… | … |
8050 | FF |
… | … |
广告