LAB‎ > ‎

Lab 7

7. 어셈블러 연습(V07 기준)
1) 라벨
- 다음 프로그램을 어셈블해서 결과를 보시오.
- 다음 두개 프로그램 중 프로그래밍하기 편한 것은? 이유는?
- 아래 프로그램에서 DATA와 LOOP 심볼의 의미는 무엇인가?
      
// Prog1: not use label
ORG8
LDA25
ORG10
JMP8
ORG25
BOX123
// Prog2: use label
ORG8
LOOPLDADATA
ORG10
JMPLOOP
ORG25
DATABOX123


2) Immediate addressing(#) vs Literal(=)
- 상수를 오퍼랜드에 직접 표현하는 방법
- 다음 경우의 차이를 관찰하고 설명하시오.
- "// 잘못된 사용"은 어셈블러가 에러처리는 안하지만 범위를 벗어나는 경우이므로 주의해야 함

LDA#1
LDA=100
LDA=1
LDA=-1
LDA#-1// 잘못된 사용
LDA#100// 잘못된 사용
LDA=1234// 잘못된 사용


3) 스택의 정의: 아래 프로그램들은 목적이 같다. 차이점을 설명하시오.
- $는 현재의 위치(location, 주소)를 의미한다.
- EQU는 왼쪽 심볼의 값이 오른 쪽 값을 갖도록 한다. 십몰 값을 정의만 할 뿐 오브젝트 코드를 생성하지는 않는다.

// Stack 1
ORG0
LDABOTTOM// SP <-- BOTTOM
SWAPASP
ORG 50
RESBOX40
BOTTOMBOXBOTTOM
// Stack 2
ORG0
LDABOTTOM// SP <-- BOTTOM
SWAPASP
ORG 50
RESBOX40
BOTTOMBOX$
// Stack 3
ORG0
LDABOTTOM// SP <-- BOTTOM
SWAPASP
ORG 50
RESBOX40
BOTTOMEQU$

4) 다음 명령어를 싱글스텝으로 실행하면서 스택과 레지스터 A의 변화를 관찰하시오.
// 스택 관찰(V07)
ORG 50
RESBOX40
BOTTOMBOX$
ORG0
LDABOTTOM// SP <-- BOTTOM
SWAPASP
LDA#1
PUSHA
LDA#2
PUSHA
LDA#3
PUSHA
PUSHALL
LDA#4
OUT
POPALL
OUT
POPA
OUT
POPA
OUT
POPA
OUT
COB

5) 다음 두그룹 명령어의 차이를 비교 설명해 보시오.
- 그룹 1: LDA, STA, ADDA, SUBA, IN, OUT, JMP, SKZ, ...
- 그룹 2: ORG, EQU, BOX, RESBOX

6) 아래 3개 명령어의 차이를 설명하시오.
- 각 명령어를 싱글스텝으로 실행해서 싸이클의 변화를 관찰
INCA
ADDA#1
ADDA=1

5) Sum(1..n) 프로그램을 어셈블리 언어로 작성하고 어셈블 도구를 활용하여 어셈블리 리스트를 만드시오.



Comments