汇编语言实现海明码

blueink_200451 2008-04-02 08:45:27
如何用汇编语言实现海明码的效验原理

海明码的工作原理如何用汇编语言来实现.请高人给我一个事例.最好有说明.或者CSDN的高人谁有这样的代码.我急需/想请问各位帮忙.给予我帮助.谢谢.

我几乎在线等.有什么问题就写在这里吧.谢谢了.谢谢了.

我的老师给我们一个类似的代码.让我们参考.请问各位帮忙,100分不多.路过的都给看看好吗.

    ORG 00H
JP START

ORG 10000H
START:
LD IX,DATA
LD B,00H

LD A,(IX+00H)
BIT 3,A
JP Z,PASS1
LD B,10H
PASS1:
LD C,07H
AND C
OR B
LD B,A

LD L,03H

LD IY,POS
LD IX,CA

CARRY:
LD E,(IX+00H)
LD A,(IY+00H)
AND B

LD C,A

LD A,00H
LD A,07H

SHIFT:
SRA C
JP NC,PASS2
XOR E

PASS2:
DEC D
JP NZ,SHIFT

OR B
LD B,A
INC IY
INC IX
DEC L
JP NZ,CARRY

LD IX,RESULT;
LD (IX+00H),B

HALT

ORG 2000H
DATA DB 05H
RESULT DB 00H
POS DB 55H,33H,0FH
CA DB 40H,20H,08H
...全文
203 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
freedomwen 2008-04-18
  • 打赏
  • 举报
回复
wo shi momo wo xiang xue biancheng
blueink_200451 2008-04-03
  • 打赏
  • 举报
回复
前辈.太感谢您了.您的帮助使我收益很大.下一步是我将仔细看一看这个程序.如果有什么不明白的地方.也请您指教.
cnzdgs 2008-04-03
  • 打赏
  • 举报
回复
		ORG 00H
JP START

ORG 1000H
START:
LD HL, DATA
LD A, (HL)
BIT 3, A
JP Z, PASS1
SET 4, A
PASS1:
LD D, 17H
AND D
LD E, A
LD D, 55H
AND D
JP PE, PASS2
SET 6, E
PASS2:
LD A, E
LD D, 33H
AND D
JP PE, PASS3
SET 5, E
PASS3:
LD A, E
LD D, 0FH
AND D
JP PE, PASS4
SET 3, E
PASS4:
LD HL, RESULT
LD (HL), E
HALT

ORG 2000H
DATA DB 05H
RESULT DB 00H

		ORG 00H
JP START

ORG 1000H
START:
LD HL, DATA
LD C, (HL)
LD B, 00H
LD HL, CODES
ADD HL, BC
LD A, (HL)
LD HL, RESULT
LD (HL), A
HALT

ORG 2000H
DATA DB 05H
RESULT DB 00H
CODES DB 00H, 69H, 2AH, 43H
DB 4CH, 25H, 66H, 0FH
DB 70H, 19H, 5AH, 33H
DB 3CH, 55H, 16H, 7FH
blueink_200451 2008-04-03
  • 打赏
  • 举报
回复
谢谢前辈了.我看到了.您的帮助我会记住.
blueink_200451 2008-04-03
  • 打赏
  • 举报
回复
xiexie ni .wo kan dao le .
cnzdgs 2008-04-03
  • 打赏
  • 举报
回复
补充一下,两段代码最后都没加HALT指令,自己加上。
cnzdgs 2008-04-03
  • 打赏
  • 举报
回复
给你写了两种方法,你给的仿真器不完整,没法用,自己调试吧。
		ORG 00H
JP START

ORG 10000H
START:
LD HL, DATA ; 取出源数据
LD A, [HL]
BIT 3, A ; 将第3位信息位移至第4位
JP PASS1
SET 4, A
PASS1:
LD D, 17H ; 0010111,所有冗余码初始化为0
AND D
LD E, A ; 数据保存在E里面
LD D, 55H ; 1010101,取第1个冗余码的线性码位
AND D
JP NP, PASS2 ; 判断各位中1的个数为奇数则设置冗余位
SET 6, E
PASS2:
LD A, E ; 从E中取回数据
LD D, 33H ; 0110011,取第2个冗余码的线性码位
AND D
JP NP, PASS3 ; 判断各位中1的个数为奇数则设置冗余位
SET 5, E
PASS3:
LD A, E ; 从E中取回数据
LD D, 0FH ; 0001111,取第3个冗余码的线性码位
AND D
JP NP, PASS4 ; 判断各位中1的个数为奇数则设置冗余位
SET 3, E
PASS4:
LD HL, RESULT ; 保存结果
LD [HL], E

ORG 2000H
DATA DB 05H ; 源数据
RESULT DB 00H ; 结果
这段代码中JP NP指令不确定用的对不对,如果有错就都改成JP P。
		ORG 00H
JP START

ORG 10000H
START:
LD HL, DATA ; 取源数据
LD C, [HL]
LD B, 00H
LD HL, CODES ; 取编码表
ADD HL, BC ; 定位编码表
LD A, [HL] ; 取海明码
LD HL, RESULT ; 保存结果
LD [HL], A

ORG 2000H
DATA DB 05H ; 源数据
RESULT DB 00H ; 结果
CODES DB 00H, 69H, 2AH, 43H, 4CH, 25H, 66H, 0FH, 70H, 19H, 5AH, 33H, 3CH, 55H, 16H, 3FH ; 0~15对应的海明码
这段代码中的海明码是手工计算出来的,你自己验证一下对不对。
cnzdgs 2008-04-03
  • 打赏
  • 举报
回复
从网上查了一下Z80的指令集,上面的代码总算看懂了。有一个地方你写错了:
LD A,00H
应该是
LD D,00H
blueink_200451 2008-04-02
  • 打赏
  • 举报
回复
2楼果然厉害;是z80的运行环境的.
cnzdgs 2008-04-02
  • 打赏
  • 举报
回复
你这汇编看起来像Z80的,看着比较累,说说你要问什么吧。
homesos 2008-04-02
  • 打赏
  • 举报
回复
不简单 帮顶

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧