[Assembly]숫자를 2진수로 출력하기

JongHyeon_Seo·2022년 5월 16일
0

문제

저장된 변수를 2진수로 출력해보자

풀이

먼저 2진수로 출력할 숫자를 데이터 세그먼트에 변수로 저장할 수 있다

DATA SEGMENT
A	 DB	  6CH
DATA ENDS

그리고 코드 세그먼트에서 데이터를 DS에 넣어주고 프로그램 형식을 만들어 줄 수 있다

MAIN SEGMENT
     ASSUME CS:MAIN, DS:DATA
	
	 MOV    AX, DATA
	 MOV	DS, AX
     
MAIN ENDS
	 END

다음으로 AL에 2진수로 출력하기 위해 한 비트씩 왼쪽으로 쉬프트하여 문자로 변환 후 출력한다
이때 총 8비트를 출력하기 위하여 CX에 8을 넣어 8번 루프를 돌린다

	MOV	AL, NUM
	MOV	CX, 8

L1:
	SHL	AL, 1		; AL을 한 비트씩 왼쪽으로 쉬프트
	MOV	DL, '0'		
	JNC	L2			; 쉬프트된 비트가 0이면 L2로 점프
	MOV	DL, '1'		; 그렇지 않다면 DL에 1을 넣어 출력 값을 바꿔준다
L2:
	PUSH AX			
	MOV	AH, 2
	INT	21H
	POP	AX

	LOOP L1

	MOV	AH, 4CH
	INT	21H

출력

다음과 같은 결과가 출력되는 것을 확인할 수 있다

코드

MAIN SEGMENT
    ASSUME CS:MAIN, DS:DATA
	
	MOV	AX, DATA
	MOV	DS, AX

	MOV	AL, NUM
	MOV	CX, 8

L1:
	SHL	AL, 1
	MOV	DL, '0'
	JNC	L2
	MOV	DL, '1'
L2:
	PUSH AX
	MOV	AH, 2
	INT	21H
	POP	AX

	LOOP L1

	MOV	AH, 4CH
	INT	21H

MAIN ENDS

DATA SEGMENT

NUM	 DB	 6CH

DATA ENDS
	 END
profile
코딩 코딩

0개의 댓글