2017-05-21 56 views
0

我正在使用x86_64 Linux Assembly,我被要求將一個字符的三個低位(來自用戶輸入)設置爲1,然後打印出結果字符。爲了說明如何將字符的低3位設置爲1?

Input: b  ; ASCII in binary: 01100010 

Set the last 3 bits to 1: 

01100010 -> 01100111 

Output: g  ; ASCII in binary: 01100111 

據我所知,輸入字符已被視爲裝配中的二進制文件。所以我的問題是:

有沒有一種方法來獲取字符的二進制形式?如果是這樣,如果有人可以提供僞代碼,我會很高興。

到目前爲止是來到我的腦海裏的唯一的事情是對輸入字符的ASCII字符下3位->通從二進制轉換爲整數->轉換成二進制->設置爲一個整數->轉換爲字符串->打印。但我對這種方式並沒有太多的想法,因爲很明顯它看起來很乏味。

+0

向我們展示您嘗試使用的[MCVE]。 – t0mm13b

+2

'bits'或'bytes' - 沒有叮咬。除非你咬東西。 – luk2302

+0

@ t0mm13b我唯一的嘗試是我上面介紹的將ASCII碼轉換爲整數的那個。你可以想象這個例子有多少行代碼(沒有考慮使用集合到一個低3位部分的解決方法)。這就是我沒有發佈它的原因。 – Jazz

回答

4

如果您的程序中有一個字符,它已經以您需要的形式出現。 「字符形式」,「整數形式」和「二進制形式」之間沒有轉換,也沒有區別。例如,ASCII b用數字98表示。當您將字符b加載到寄存器al時,也是如此東西如加載數字98到al

最後,要打開位,請使用or指令。例如,如果您的字符位於al,則可以使用

or al, 7 
相關問題