- 사용 opcode : la, li
- 사용 system call : 4, 10
1. 문제
Hello World!를 출력해라.
2. 정답
.data
msg : .asciiz "Hello World!"
.text
main:
la $a0, msg
li $v0, 4
syscall
li $v0, 10
syscall

3. 풀이
Hello World!를 출력하기 위해서는 Hello World!를 저장할 공간이 필요합니다. 따라서 새로운 변수를 선언해주어야 합니다. 이 변수의 이름을 msg라고 가정하겠습니다. 이를 어셈블리어 코드로 나타내면 아래와 같습니다.
| msg : .asciiz "Hello World!" |
해당 코드는 msg라는 변수를 새로 선언하고 Hello World!라는 문자열을 할당해준다는 의미입니다. 변수와 문자열 사이에 .asciiz가 있는데 이는 Hello World!가 문자열이라는 것을 알려줘 컴퓨터가 문자열을 표현할 수 있도록 도와줍니다.
msg의 내용을 출력하기 위해서는 msg의 내용을 레지스터로 불러와야합니다. 이를 코드로 표현하면 아래와 같습니다.
| la $a0, msg |
la는 a0라는 레지스터에 msg의 값을 로드하도록 해줍니다.
로드가 끝났다면 이제 출력을 해보겠습니다. 출력을 하기 위해서는 System Call Code를 알아야합니다. string을 출력하는 system call code는 4번입니다. 이를 코드로 표현하면 아래와 같습니다.
| li $v0, 4 syscall |
출력을 마치셨다면 마지막으로 코드가 끝났다는 것을 알려주어야 합니다. 이는 system call code 10을 사용하면 됩니다. 코드로 표현하면 다음과 같습니다.
| li $v0, 10 syscall |
4. c++ 코드로 표현
풀이한 어셈블리어 코드를 c++로 표현하면 다음과 같습니다.
#include <stdio.h>
char msg[15] = "Hello World!";
int main() {
printf("%s", msg);
}'Programming > Assembly Language' 카테고리의 다른 글
| [MIPS] QtSpim 예제 3 - 나눗셈(몫과 나머지 출력) (0) | 2020.11.07 |
|---|---|
| [MIPS] QtSpim 예제 2 - 더하기, 빼기 (0) | 2020.11.06 |
| [MIPS] QtSpim 기본 문법 (0) | 2020.11.04 |
| [MIPS] QtSpim 사용법 (0) | 2020.11.03 |
| [MIPS] QtSpim 설치 방법 (0) | 2020.11.02 |