튜터링/2011/어셈블리언어 (rev. 1.28)
커리큘럼 ¶
- 1주차 : 어셈블리 소개 및 컴퓨터 시스템 개요
- 2주차 : 인텔 프로세서의 구조, 파이프라이닝과 슈퍼스칼라와 스케쥴러
- 3주차 : 스케쥴러 반복, 주소 체계
- 4주차 : 주소 체계 반복, 가상주소와 물리주소의 관계 이해
- 5주차 : 세그먼트, 페이징과 캐싱
- 6주차 : 중간고사 대비 총정리
- 7주차 : 중간고사로 휴강
- 8주차 : 중간 간담회
- 9주차 : 스택과 프로시저
- 10주차 : 조건부 처리, 루프
- 11주차 : 정수 산술, 어셈블리언어의 정수&상수 계산
- 12주차 : 소프트웨어 인터럽트
- 13주차 : 매크로 연산
- 14주차 : 고급언어 인터페이스
- 15주차 : 인터럽트 핸들링
1주차 ¶
- 주제 : 어셈블리 소개 및 컴퓨터 시스템 개요
- 첫인사.
6주차 ¶
- 중간고사를 위한 여러분의 대비
- 지금까지 배운것을 총정리 하는 시간
- 퀴즈
- 칠판에 나와서 문제 풀어보기
- 항상 기출되는 문제들이 있다.
- 책의 정의를 그대로 외우지 말고 왜 그렇게 되는지를 이해하자.
9주차 ¶
- 쏜살같은 진도
- 2주 하고도 반짜리 진도를 한번에 나가버렸다.
- visual studio 2008이 설치되었으니 다음주 부터는 실습을 합니다.
10주차 ¶
- 코딩 실습
- 강의 과제인 Factorial을 코딩해본다.
- 책의 코드를 그대로 베껴와 프로그램을 완성했지만 어떻게 동작하는지는 잘 모르는 사람이 많아 다시 짜보기로 한다.
- 관례적으로 "Hello World!"를 출력해 보기로 한다.
- 반복과 재귀의 차이를 알아보자
- 정수 총합 구하기
- 루프를 돌며 구하기
- sum 프로시저를 만들어 재귀호출하기
11주차 ¶
- 코딩 실습2
- 지난주에 하던 정수 총합 구하기 계속
- 지난주에는 루프와 레지스터를 이용한 재귀함수까지 해 보았다.
- 이번에는 전역변수와 스택을 이용한 재귀함수를 구현해 본다.
- 스택(Stack)이 쓰기 어려워요!
- 그럼 쓰는것을 연습해 보자.
- 스택의 기본은 push와 pop.
- 스택에 push되는 값이 무엇인지 생각해보고 pop된 값을 어디에 저장할지를 정하자.
- 이번주는 회식을 하였습니다.
12주차 ¶
- 3N+1을 해보았습니다.
- 전체 코드는 아니고 3N+1 부분만
- 삼십분도 안걸릴것이라 생각했는데, 이날의 문제는 무엇일까
- 정의정이 안옴
- 축제 첫날
- 내가 코드 설명을 부족하게 하였다. - 슈도코드를 제공하였는데, c로짠다면 3줄정도의 코드다..
- 난이도가 갑자기 상승하였다? - 그런거같지는 않다. 템플릿을 제공했는데(늦었지만)
- 짝수 홀수 구분부분에서 다들 헤맨듯.
- 다들 변수이름 개떡같이 지어. 나도 개떡같지만..
TITLE MASM Template (main.asm)
INCLUDE Irvine32.inc
.data
number byte ?
isOdd byte ?
.code
main PROC
call ReadDec ; 숫자 하나 받아옴
mov number, al
START:
; n이 1인지 검사한다
cmp number, 1
je EXIT_LABEL
; 홀수 짝수 검사하는 부분
movzx edx, number
mov isOdd, dl
AND isOdd, 1
jz EVEN_LABEL
ODD_LABEL:
; 홀수 계산
jmp START
EVEN_LABEL:
; 짝수 계산
jmp START
EXIT_LABEL: exit
main ENDP
END main
15주차 ¶
- 커리큘럼을 잘못 계산했네요.. 15주차는 기말고사중..