本帖最后由 一颗心的思考 于 2015-2-4 17:05 编辑
复习汇编下的51,遇见了一个问题,强迫症犯了,老想知道为什么是这样:
首先对低字节取补,然后判其结果是否为全“ 0”。 若是,则高字节取补,
否则高字节取反。
代码如下:
START: MOV R0, #addr1 ;原码低字节地址送 R0
MOV R1, #addr2 ;补码低字节地址送 R1
MOV A, @R0 ;原码低字节送 A
CPL A ; A 内容取补
INC A
MOV @R1, A ;存补码低字节
INC R0 ;调整地址,指向下一单元
INC R1
JZ ZERO ;( A) =0 时转 ZERO
MOV A, @R0 ;原码高字节送 A
CPL A
MOV @R1, A ;高字节反码存入 addr2+1 单元
SJMP LOOP1
ZERO: MOV A, @R0 ;高字节取补存入 addr2+1 单元
CPL A
INC A
MOV @R1, A
LOOP1: RET
不明白的地方是对高字节求补码的方法:“判其结果是否为全“ 0”。 若是,则高字节取补,
否则高字节取反。”
|