[Assembly] 두 수의 덧셈

JongHyeon_Seo·2022년 5월 15일
0

문제

두 변수에 저장된 값을 더해서 출력해보자

풀이

먼저 데이터 세그먼트에 값을 저장해둘 변수들을 만들 수 있다
미리 값을 줄 수도 있고 ?를 줘서 주지 않을 수도 있다

DATA SEGMENT

A	DB	1
B	DB	4
SUM	DB	?

DATA ENDS

위 데이터를 사용하려면 코드 세그먼트에서 데이터를 DS에 넣어주어야 한다
이때 세그먼트끼리의 직접 연산은 불가하므로 AX를 통해 간접적으로 넣어준다

MAIN SEGMENT
	ASSUME	CS:MAIN, DS:DATA

	MOV	AX, DATA
	MOV	DS, AX
    
MAIN ENDS
	 END

다음은 두 변수의 값을 ADD 명령어를 통해서 더해주고 출력을 위해 문자로 바꿔 준다
문자 0의 아스키 코드 값을 더해주면 해당 값의 아스키코드를 구할 수 있다

MOV	AL, A
ADD	AL, B
MOV	SUM, AL
ADD	AL, '0'

문자 한개를 출력하기 위해서는 인터럽트 21H에서 02H를 호출하면 된다
그 후 인터럽트 21H에서 4CH를 호출하면 프로그램이 종료된다

MOV	DL, AL
MOV	AH, 2
INT	21H

MOV	AH, 4CH
INT 21H

코드

DATA SEGMENT

A	DB	1
B	DB	4
SUM	DB	?

DATA ENDS

MAIN SEGMENT
	ASSUME	CS:MAIN, DS:DATA

	MOV	AX, DATA
	MOV	DS, AX

	MOV	AL, A
	ADD	AL, B
	MOV	SUM, AL
	ADD	AL, '0'
	
	MOV	DL, AL
	MOV	AH, 2
	INT	21H

	MOV	AH, 4CH
	INT  21H
    
MAIN ENDS
	 END
profile
코딩 코딩

0개의 댓글