如何将一个字符的低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
我正在使用 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