본문 바로가기

Programming

(63)
[MIPS] QtSpim 예제 5 - 조건문 (두 수 크기 비교) 사용 opcode : li, move, slt, beq 사용 system call : 1, 5, 10 1. 문제 두 개의 정수를 입력받고 더 큰 값을 출력해라. 2. 정답 .text main : li $v0, 5 syscall move $t0, $v0 li $v0, 5 syscall move $t1, $v0 slt $s0, $t0, $t1 beq $s0, 1, function move $a0, $t0 li $v0, 1 syscall li $v0, 10 syscall function : move $a0, $t1 li $v0, 1 syscall li $v0, 10 syscall 3. 풀이 system call code 5번을 사용해 숫자를 입력받고 레지스터에 값을 복사해줍니다. 첫번째 숫자는 $t0에 두번째..
[MIPS] QtSpim 예제 4 - 값을 입력받아 곱셈 수행하기 사용 opcode : li, move, mul 사용 system call : 1, 5, 10 1. 문제 두 수를 입력받고 두 수의 곱을 출력해라. 2. 정답 .text main: li $v0, 5 syscall move $t0, $v0 li $v0, 5 syscall move $t1, $v0 mul $s0, $t0, $t1 move $a0, $s0 li $v0, 1 syscall li $v0, 10 syscall 3. 풀이 숫자를 입력받기 위해서는 system call code 5번을 사용하면 됩니다. system call 5를 호출해 값을 입력받은 후 move를 사용해 값을 t0레지스터에 복사해주세요. 숫자를 하나 더 입력받아야 하므로 다시 system call 5를 호출한 후 t1레지스터에 값을 복사..
[MIPS] QtSpim 예제 3 - 나눗셈(몫과 나머지 출력) 사용 opcode : lw, div, mflo, mfhi, li, move 사용 system call : 1, 10 1. 문제 55÷16의 몫과 나머지를 출력해라. 2. 정답 .data A: .word 55 B: .word 16 .text main: lw $t0, A lw $t1, B div $t0, $t1 mflo $s0 mfhi $s1 move $a0, $s0 li $v0, 1 syscall move $a0, $s1 li $v0, 1 syscall li $v0, 10 syscall 3. 풀이 숫자를 계산하기 위해서는 먼저 숫자를 저장할 공간이 필요합니다. 변수를 선언한 후 숫자를 할당해줍니다. .data A : .word 55 B : .word 16 나눗셈에 필요한 변수(A와 B)의 데이터를 레지스터..
[MIPS] QtSpim 예제 2 - 더하기, 빼기 사용 opcode : lw, add, sub, li, move 사용 system call : 1, 10 1. 문제 1+6-5를 계산하고 결과값을 출력해라. 2. 정답 .data A: .word 1 B: .word 6 C: .word 5 .text main: lw $t0, A lw $t1, B add $s0, $t0, $t1 lw $t2, C sub $s1, $s0, $t2 move $a0, $s1 li $v0, 1 syscall li $v0, 10 syscall 3. 풀이 숫자를 계산하기 위해서는 먼저 숫자를 저장할 공간이 필요합니다. 변수를 선언한 후 숫자를 할당해줍니다. .data A : .word 1 B : .word 6 C : .word 5 덧셈에 필요한 변수(A와 B)의 데이터를 레지스터에 로드..
[MIPS] QtSpim 예제 1 - 문자 출력하기 사용 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!라는 문자열을 할당해준다는 의미입니다. 변수와 ..
[MIPS] QtSpim 기본 문법 주석 opcode .data vs .text Register System Call 1. 주석 코드의 앞에 #을 쓰면 주석 처리를 할 수 있습니다. 2. opcode opcode는 operations code의 약자로 어떤 연산을 수행할 것인가를 알려줍니다. ① Artithmetic Instructions opcode 뜻 예제 의미 add 더하기 add $s1, $t0, $t1 $s1 = $t0 + $t1 sub 빼기 sub $s1, $t0, $t1 $s1 = $t0 - $t1 mul 곱하기 mul $s1, $t0, $t1 $s1 = $t0 × $t1 mult 곱하기 mult $t0, $t1 Lo, Hi = $t0 × $t1 div 나누기 div $t0, $t1 Lo = $t0 ÷ $t1의 몫 , Hi =..
[MIPS] QtSpim 사용법 ※ 목차 어셈블리 코드 작성 에디터 작성한 코드 QtSpim에서 실행하기 작성한 코드 단계별로 실행하기 콘솔 창이 보이지 않는 경우 코드 로드 시 주의할 점 1. 어셈블리 코드 작성 에디터 어셈블리 코드는 메모장, Visual Studio Code 등 다양한 에디터를 사용해 작성하실 수 있습니다. 원하시는 에디터를 자유롭게 선택하시면 됩니다. 단, 코드를 작성하신 후 저장할 때 반드시. asm으로 저장하셔야 합니다. 2. 작성한 코드 QtSpim에서 실행하기 어셈블리 코드 파일을 실행시키기 위해 QtSpim을 실행시켜 주세요. 가장 왼쪽의 아이콘을 눌러 어셈블리어 파일을 로드해주세요. 코드를 성공적으로 가져왔다면 붉은색 화살표가 가리키는 아이콘을 클릭해 코드를 실행하시면 됩니다. 좌측 레지스터 창을 보시..
[MIPS] QtSpim 설치 방법 QtSpim 설치 방법 QtSpim은 MIPS 프로세서의 시뮬레이터입니다. 작성된 어셈블리 코드를 실행할 수 있고 각 코드의 실행단계에 따라 레지스터의 변화를 관찰할 수 있습니다. 먼저, 해당 링크의 사이트에 접속하셔서 QtSpim을 다운로드해 주세요. https://sourceforge.net/projects/spimsimulator/files/ spim mips simulator - Browse Files at SourceForge.net VPN은 해킹을 방지하고 온라인 트래픽 흐름을 위한 암호화된 터널이라고 상상해 보세요. 아무도 터널 안을 통해 볼 수 없으며 사용자의 인터넷 데이터를 손에 넣을 수 없습니다. NordVPN은 공용 Wi- sourceforge.net 붉은색 화살표가 가리키는 버튼을 ..