我正在使用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。但是我没有想太多关于这种方式,因为很明显它看起来很乏味。
答案 0 :(得分:4)
如果您的程序中有角色,则它已经是您需要的形式。 “字符形式”,“整数形式”和“二进制形式”之间没有转换也没有区别。例如,ASCII b
由数字98表示。当您加载字符b
时进入注册表al
,这与将数字98加载到al
中的情况相同。
最后,要打开位,请使用or
指令。例如,如果您的角色位于al
,则可以使用
or al, 7