Assembly 如何将字符的低3位设置为1?
我正在使用x86_64 Linux汇编,要求我将字符的三个低位(来自用户输入)设置为1,然后打印生成的字符。说明Assembly 如何将字符的低3位设置为1?,assembly,nasm,x86-64,Assembly,Nasm,X86 64,我正在使用x86_64 Linux汇编,要求我将字符的三个低位(来自用户输入)设置为1,然后打印生成的字符。说明 Input: b ; ASCII in binary: 01100010 Set the last 3 bits to 1: 01100010 -> 01100111 Output: g ; ASCII in binary: 01100111 据我所知,输入字符在汇编中已经作为二进制。所以我的问题是: 有没有办法获得字符的二进制形式?如果是这样
Input: b ; ASCII in binary: 01100010
Set the last 3 bits to 1:
01100010 -> 01100111
Output: g ; ASCII in binary: 01100111
据我所知,输入字符在汇编中已经作为二进制。所以我的问题是:
有没有办法获得字符的二进制形式?如果是这样,如果有人能提供一个伪代码,我会很高兴
到目前为止,我唯一想到的是将输入字符的ASCII字符转换为整数
->
转换为二进制->
设置为一个较低的3位->
从二进制传递到整数->
转换为字符串->
打印。但是我没有过多考虑这种方式,因为很明显,它看起来很乏味。如果程序中有一个字符,它已经是您需要的格式了。“字符形式”、“整数形式”和“二进制形式”之间没有转换,也没有区别。例如,ASCIIb
由数字98表示。当您将字符b
加载到寄存器al
中时,这与将数字98加载到al
中是一样的
最后,要打开位,请使用或
指令。例如,如果您的角色位于al
,则可以使用
or al, 7
如果你的程序中有一个字符,它已经是你需要的格式了。“字符形式”、“整数形式”和“二进制形式”之间没有转换,也没有区别。例如,ASCII
b
由数字98表示。当您将字符b
加载到寄存器al
中时,这与将数字98加载到al
中是一样的
最后,要打开位,请使用或
指令。例如,如果您的角色位于al
,则可以使用
or al, 7
向我们展示您尝试过的内容,a以演示。
位
或字节
-没有位。除非你咬了什么东西。@t0mm13b我唯一的尝试就是上面描述的将ASCII码转换为整数的尝试。您可以想象该示例将包含多少行代码(不考虑使用set-to-one-the-lower-3-bits部分的解决方案)。这就是我不发布它的原因。向我们展示您尝试过的内容,a来演示。位
或字节
-没有位。除非你咬了什么东西。@t0mm13b我唯一的尝试就是上面描述的将ASCII码转换为整数的尝试。您可以想象该示例将包含多少行代码(不考虑使用set-to-one-the-lower-3-bits部分的解决方案)。这就是我不发布它的原因。