Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 如何将字符的低3位设置为1?_Assembly_Nasm_X86 64 - Fatal编程技术网

Assembly 如何将字符的低3位设置为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 据我所知,输入字符在汇编中已经作为二进制。所以我的问题是: 有没有办法获得字符的二进制形式?如果是这样

我正在使用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
据我所知,输入字符在汇编中已经作为二进制。所以我的问题是:

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


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

如果程序中有一个字符,它已经是您需要的格式了。“字符形式”、“整数形式”和“二进制形式”之间没有转换,也没有区别。例如,ASCII
b
由数字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部分的解决方案)。这就是我不发布它的原因。