如何将字符的低3位设置为1?

时间:2017-05-21 22:04:05

标签: assembly nasm x86-64

我正在使用x86_64 Linux Assembly,我被要求将字符的三个低位(来自用户输入)设置为1,然后打印生成的字符。为了说明

Input: b        ; ASCII in binary: 01100010

Set the last 3 bits to 1:

01100010 -> 01100111

Output: g       ; ASCII in binary: 01100111

据我所知,输入字符在Assembly中已被视为二进制。所以我的问题是:

有没有办法获得角色的二进制形式?如果是这样,如果有人能提供伪代码,我会很高兴。

到目前为止,我唯一想到的就是将输入字符的ASCII字符转换为整数->转换为二进制->设置为低3位->之一从二进制传递到整数->转换为字符串-> print。但是我没有想太多关于这种方式,因为很明显它看起来很乏味。

1 个答案:

答案 0 :(得分:4)

如果您的程序中有角色,则它已经是您需要的形式。 “字符形式”,“整数形式”和“二进制形式”之间没有转换也没有区别。例如,ASCII b由数字98表示。当您加载字符b时进入注册表al,这与将数字98加载到al中的情况相同。

最后,要打开位,请使用or指令。例如,如果您的角色位于al,则可以使用

打开最低的三位
or al, 7