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

How to set to 1 the lower 3 bits of a character?

我正在使用 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

据我了解,输入的字符在汇编中已经被当作二进制了。所以我的问题是:

有没有办法得到字符的二进制形式?如果是这样,如果有人可以提供伪代码,我将很高兴。

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

如果你的程序中有一个角色,它已经是你需要的形式了。 “字符形式”、“整数形式”和“二进制形式”之间没有转换,也没有区别。例如,ASCII b 由数字 98 表示。当您将字符 b 加载到寄存器 al 时,这与将数字 98 加载到 al 是同一回事.

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

打开最低三位
or al, 7