2017-05-21 1 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 

내가 이해하는 한, 입력 문자는 이미 어셈블리에서 이진으로 간주됩니다. 그래서 내 질문 :

문자의 이진 형식을 얻을 수있는 방법이 있습니까? 그렇다면 누군가가 의사 코드를 제공 할 수 있다면 기쁠 것입니다.

지금까지 내 마음에 온 유일한 문자열 -> 인쇄로 변환 ->을 정수로 바이너리에서 하위 3 비트 하나에 -> 세트를 이진하기 -> 변환을 정수로 -> 패스를 입력 문자의 ASCII 문자로 변환하는 것이 었습니다 . 그러나 나는이 방법에 대해 너무 많이 생각하지 않았습니다. 아주 지루해 보입니다.

+0

당신이 시도 것을 우리에게 보여 사용하여 가장 낮은 3 개 비트를 켤 수 있습니다, A [MCVE]를 설명합니다. – t0mm13b

+2

'bits' 또는'bytes' - 비트가 없습니다. 네가 무언가를 물지 않는 한. – luk2302

+0

@ t0mm13b 나의 유일한 시도는 ASCII 코드를 정수로 변환하는 것에 대해 위에서 설명한 것입니다. 예제 코드의 줄 수를 상상할 수 있습니다 (하위 3 비트 부분으로 해결 방법을 고려하지 않고). 그것이 내가 게시하지 않는 이유입니다. – Jazz

답변

4

프로그램에 캐릭터가있는 경우 필요한 형태로되어 있습니다. 예를 들어, ASCII b은 숫자 98으로 표시됩니다. 문자 b을 레지스터 al에로드하면 그 변환은 동일하며 "문자 형식", "정수 형식"및 "이진 형식"간에 차이가 없습니다. al에 98 번을 적재하는 것.

마지막으로 비트를 켜려면 or 명령어를 사용하십시오. 캐릭터가 al에있는 경우 예를 들어, 당신이

or al, 7 
관련 문제