用汇编如何实现对一个数字进行反码?

如题所述

楼主, 你好, 这里可以用异或指令实现这个效果

"异或"运算的规则是 1 XOR 1 = 0, 1 XOR 0 = 1, 0 XOR 1 = 1, 0 XOR 0 = 0.

这里楼主不知道你有没有发现一个规律, 就是一个数与1异或, 这个数就取反了, 但是与0异或, 这个数就不变。所以这里我们可以用异或的这个特性来解决这道题

因为这道题是一个8位二进制的操作, 所以现在我们假设AL = 55H

汇编代码
MOV AL, 55H ;(AL) = 01010101B

高4位取反, 低4位不变
因为是高四位取反, 所以我们将我们所求的数的高四位置为1; 低四位不变, 我们可以将所求数的低四位置0

代码
XOR AL, 0F0H ;01010101 XOR 11110000 = 10100101 = A5H = AL

所以, 楼主, 这道题的答案是0F0H

PS:若有不明白的地方, 请追问
温馨提示:内容为网友见解,仅供参考
无其他回答

用汇编如何实现对一个数字进行反码?
这里楼主不知道你有没有发现一个规律, 就是一个数与1异或, 这个数就取反了, 但是与0异或, 这个数就不变。所以这里我们可以用异或的这个特性来解决这道题 因为这道题是一个8位二进制的操作, 所以现在我们假设AL = 55H 汇编代码 MOV AL, 55H ;(AL) = 01010101B 高4位取反, 低4...

汇编语言原码、反码、补码,还有真值问题
1、一个数的真值是这个数原本表示的大小。二进制真值,就是真值的二进制表示。比如-2,二进制真值就是-10B。2、是的。[X]补+[Y]补=[X+Y]补嘛 3、正数的补码就是它的原码;负数的话,将补码减1再按位取反能计算出原码 补码按位取反加1也能计算出原码 两种方法计算出来的结果相同。比如:8...

字长八位,对下列数求原码,反码,补码。1.-1;2.-128;3.-64;4.127_百度知 ...
1.-1;原码:10000001 \/\/最高位是符号,负数最高位为1,其余位表示绝对值,下同反码:11111110 \/\/负数,符号位不变,其余位取反补码:11111111 \/\/负数,将反码加12.-128;原码:无法表示? 超出范围反码:无法表示?补码:10000000 \/\/好像这个是特殊规定的 8位能表示的范围为-128到127...

汇编语言中原码和反码,补码有什么区别!!!
反码是将其2进制数每一位按位取反。即1改为0,0改为1.补码则不同。正数的补码是其源码本身 负数的补码是其除符号位以外其他每一位按位取反再加一,符号位不变。例如:10进制数11:源码:00001011;反码:11110100;补码:00001011;十进制数-11:源码:10001011;反码:01110100;补码:11110101;...

请问汇编语言编程时 操作数为负数时 是采用原码还是用补码形式。
当然是补码形式了,虽然负数也有用原码表示的(就是最高位变成1)。但是你可以发现如果用原码表示负数有一问题当数值从0增加到127时,原码从0~7F。但是一旦到了负数区域就从-0到-127,原码从80~FF,当他们进行转化的时候很不方便,而且又多了一个-0出来。显然是不希望了。于是就有了反码,这个概念...

[编程]关于汇编语言的负数的表示以及运算
[-7]反= 1 1111000 B 注意:a. 数0的反码也有两种形式,即 [+0]反=00000000B [- 0]反=11111111B b. 8位二进制反码的表示范围:-127~+127 3)补码的表示方法 1)模的概念:把一个计量单位称之为模或模数。例如,时钟是以12进制进行计数循环的,即以12为模。在时钟上,时针加...

原码,反码和补码的关系?
原码、反码、补码 1、 表示一个数值要先说明是用多少bit,例如:   用8bit表示数值时,(-128)没有相对应的原码和反码, (-128)补码 = (1000 0000) 同理(2B=16bit)表示:(-32768)补码=(1000 0000 0000 0000),后面回给出证明, 因为它是不能简单的用取反加一的方法来求反码的。 2、 证明...

取反是一个什么运算?
NOT,是汇编指令里逻辑运算符号:NOT表示取反的意思。补码的规定如下:对正数来说,最高位为0,其余各位代表数值本身(以二进制表示),如+42的补码为00101010。对负数而言,把该数绝对值的补码按位取反,然后对整个数加1,即得该数的补码。如-42的补码为11010110(00101010按位取反11010101+1即11010110...

原码,反码,补码和移码: 原码:1001101,反码,补码,移码各是多少?
如linux平台的目录和文件的默认权限的设置umask,就是使用反码原理。补码(2's complement)是一种用二进制表示有号数的方法,也是一种将数字的正负号变号的方式。移码(又叫增码)是符号位取反的补码,一般用指数的移码减去1来做浮点数的阶码,引入的目的是为了保证浮点数的机器零为全0。

pic单片机怎么用户汇编语言实现位取反?
2、在汇编语言中要实现位取反,可通过位状态检测判断来对位进行“置1”或“清零”,详见以下程序。目的:将寄存器 PROTB,3 取反 ;BTFSS PORTB,3 ; 检测PORTB,3位,为1跳转QINGLING。GOTO ZHIYI ; 为0跳转到ZHIYI。QINGLING ; 清零程序段,这是网络标号,可理解为一段程...

相似回答
大家正在搜