8085程序检查回文


现在让我们来看一个Intel 8085微处理器的程序。这个程序将ASCII转换为二进制值。

问题陈述

编写8085汇编语言程序来检查位模式是否为回文。

讨论

在这个程序中,我们从8000H位置获取数字。如果数字不是回文,程序将返回00H;否则,将返回FFH。

例如,输入是18H,则二进制值为(0001 1000),这是一个回文。数字52H(0101 0010)不是回文。

在这个问题中,我们将第一个数字放入累加器,然后将其左移。左移时,MSB将被放置在LSB,也放在进位标志中。通过右移,将此进位标志插入D寄存器。因此,位模式将被反转,现在通过检查实际数字和反转数字的值,我们可以确定它是否为回文。

输入

第一个输入

地址数据
.
.
.
.
.
.
8000BD
.
.
.
.
.
.

第二个输入

地址数据
.
.
.
.
.
.
800052
.
.
.
.
.
.

第三个输入

地址数据
.
.
.
.
.
.
800018
.
.
.
.
.
.

流程图

程序

地址十六进制代码标签助记符注释
F0003A, 00, 80
LDA 8000H将数字加载到A寄存器
F00367
MOV H, A将A寄存器的内容移到H寄存器
F0040E, 08
MVI C,08H初始化计数器
F0067CLOOP:MOV A, H将H寄存器的内容加载到A寄存器
F00707
RLC左移旋转
F00867
MOV H, A将A寄存器的内容送回H寄存器
F0097A
MOV A, D将D寄存器的内容加载到A寄存器
F00A1F
RAR带进位的右移旋转
F00B57
MOV D, A将A寄存器的内容送回D寄存器
F00C0D
DCR CC寄存器减1
F00DC2, 06, F0
JNZ LOOP如果零标志为0,则跳转到LOOP
F0107C
MOV A, H将H寄存器的数据加载到A寄存器
F011BA
CMP D将D寄存器与A寄存器比较
F012CA, 1A, F0
JZ TRUE如果两者相同,则为回文
F0153E, 00
MVI A, 00H将00H加载到A寄存器
F017C3, 1C, F0
JMP EXIT跳转到EXIT
F01A3E, FFTRUE:MVI A, FFH将FFH加载到A寄存器
F01C32, 50, 80EXIT:STA 8050H将结果存储到内存中
F01F76
HLT终止程序


输出

第一个输出

地址数据
.
.
.
.
.
.
8050FF
.
.
.
.
.
.

第二个输出

地址数据
.
.
.
.
.
.
805000
.
.
.
.
.
.

第三个输出

地址数据
.
.
.
.
.
.
8050FF
.
.
.
.
.
.

更新于:2019年7月30日

4K+ 次浏览

启动你的职业生涯

完成课程获得认证

开始学习
广告