자동 재생
자동 완료 표시
이전 강의 보기
완료하고 다음 강의 보기
COMP2300: 어셈블리어 프로그래밍
과목 소개
훌륭한 프로그래머와 어셈블리어 (2:06)
이 과목에서 사용하는 서비스 및 도구 (4:43)
강의 시청 및 노트 정리 (3:45)
중요 정보 (3:36)
실습과 과제 진행하기 (6:45)
부정행위 금지와 코딩표준 (3:07)
질문하는 법 (3:08)
선수 과목과 슬라이드 표기법 (5:43)
어셈블리어를 배워야 하는 이유 (3:53)
업계 불문 하드웨어에 대한 이해는 필수 (6:40)
팩트 체크: 어셈블리어는 얼마나 사용하나? (9:28)
어셈블리어와 비슷한 개념과 실제 경험 (10:25)
어셈블리어 학습이 쉬운 이유 (2:47)
수업 일정 (4:05)
언매니지드 언어의 중요성 (3:48)
Great 프로그래머가 되려는 사람을 위한 조언 (9:03)
수업에 도움되는 자료
참고자료 안내
동영상 강좌 관련 질문 안내
[Teachable ONLY!] 추천인 프로그램
디지털 컴퓨터 구조(기초)
어셈블리어와 컴퓨터 구조 공부 (4:45)
아날로그 신호의 저장과 재생 (9:59)
복습 퀴즈
데이터의 디지털 저장법 (9:27)
동작의 디지털 저장법 (1:36)
트랜지스터 (4:04)
트랜지스터와 논리 연산 (7:41)
논리 게이트 (6:53)
복습 퀴즈
논리 게이트와 산술 연산 (6:49)
ALU (8:05)
어셈블리어 프로그래밍은 소프트웨어 작성 (7:15)
튜링 기계 (7:29)
튜링 기계와 하드웨어 (7:27)
범용 튜링 기계와 소프트웨어 (6:11)
튜링 완전 (2:45)
복습 퀴즈 1
복습 퀴즈 2
폰 노이만 구조 (7:09)
명령어 사이클 (5:00)
연산자 디코딩 예 (5:56)
현대 CPU의 컴퓨팅 추상화 계층 (5:41)
복습 퀴즈
정리 (3:38)
기계어 프로그래밍
기계어 프로그래밍이란? (1:50)
6502 CPU 소개 (4:52)
6502를 사용하는 이유 (7:07)
프로그램 실행 패턴 (5:50)
65C02의 핀 구성 (6:46)
브레드보드 준비하기 (9:34)
CPU 설치하기 (4:27)
클럭 및 기타 선 연결하기 (8:15)
복습 퀴즈
CPU 상태 확인하기 (5:24)
CPU 리셋하기 (4:27)
클럭 속도 늦추기 (6:01)
스파이더 연결하기 (7:37)
핀 값 읽는 프로그램 작성하기 (8:51)
리셋 벡터 (2:49)
복습 퀴즈
ROM 주소 매핑 (7:54)
ROM 설치하기 (4:56)
복습 퀴즈
OE, CE, WE (4:35)
복습 퀴즈
프로그램을 ROM에 플래시 하기 (6:08)
디스어셈블 (4:47)
간단한 덧셈 프로그램 (7:07)
RAM 설치하기 (8:15)
RAM 주소 매핑 (3:47)
RAM 결과 확인하기 (2:16)
타이밍 다이어그램을 봐야 하는 이유 (3:21)
CPU 주소 타이밍 다이어그램 (7:17)
CPU 데이터 타이밍 다이어그램 (5:34)
RAM 읽기 타이밍 다이어그램 1 (6:57)
RAM 읽기 타이밍 다이어그램 2 (5:11)
RAM을 클럭에 동기화시키기 (9:51)
논리 게이트 딜레이 계산하기 (2:35)
RAM 쓰기 타이밍 다이어그램 (8:22)
마지막 확인 (5:53)
ROM과 RAM의 분리 (6:39)
복습 퀴즈
정리 (2:33)
6502 어셈블리 기초 문법
어셈블리어의 언어적 분류 (9:22)
어셈블리어와 헬로 월드 (2:04)
헬로 16 코드 작성 및 어셈블 (10:07)
헬로 16 바이너리 파일 생성 (7:46)
6502 명령어의 구성 (9:28)
6502의 주소지정 모드 (5:10)
A 주소지정 모드 (6:33)
A 모드의 사이클 수 세기 (3:47)
CPU 파이프라인 (5:19)
올바른 A 모드의 사이클 수 세기 (7:25)
즉시 모드 (5:00)
즉시 모드 명령어 사이클 (5:29)
절대 주소 모드 (9:09)
영상 퀴즈
zp 주소지정 모드 (4:30)
6502의 메모리 페이지 레이아웃 (4:00)
연산자 (5:20)
복습 퀴즈
실행 중 데이터의 저장 (5:14)
전역적인 데이터 저장 (2:59)
변수명과 가독성 (2:16)
스택 메모리 (7:44)
상수, 포인터 변수 (4:58)
데이터 블록 (7:09)
메인 레지스터 (4:43)
X, Y 색인 레지스터 (1:59)
S 레지스터 (5:43)
프로세서 상태 레지스터 (2:53)
프로그램 카운터 (1:21)
복습 퀴즈
묵시적 주소지정 모드와 nop (7:06)
프로그램 종료 (4:08)
정리 (4:39)
산술 논리 연산
정수의 덧셈 (8:25)
영상 퀴즈
최상위 비트 받아올림의 처리 (8:06)
받아올림 플래그 C (3:37)
가산기와 비트 수 (6:17)
2배 정밀도 덧셈 (6:18)
signed 정수의 덧셈 (4:37)
오버플로 플래그 V (8:14)
제로 플래그 Z, 음수 플래그 N (5:07)
코드보기: adc의 상태 플래그 (5:44)
복습 퀴즈
8비트 뺄셈 (7:21)
16비트 뺄셈 (6:36)
복습 퀴즈
증감 연산 (6:37)
색인 주소지정 모드 (5:37)
페이지 크로싱 (7:53)
코드보기: zp,x 래핑(wrapping) (1:56)
복습 퀴즈
증감 연산의 플래그 (2:17)
비트 이동 (7:56)
비트 회전 (4:10)
복습 퀴즈
코드보기: 비트 패턴 뒤집기 (4:34)
논리 연산 (6:32)
영상 퀴즈
곱셈, 나눗셈 (3:43)
복습 퀴즈
정수형 (5:14)
데이터 형의 해석 주체 (8:24)
실수형 (3:07)
형 변환 (8:19)
정리 (2:22)
조건문
조건문 (9:47)
비교 (5:37)
분기 (4:27)
복습 퀴즈
고수준 조건문 옮기기 (4:05)
영상 퀴즈
cmp의 판단 기준 (3:31)
signed 비교 방법 1 (3:16)
signed 비교 방법 2 (8:47)
복습 퀴즈 1
복습 퀴즈 2
상대 주소지정 모드 (9:08)
영상 퀴즈
jmp의 주소지정 모드 (4:18)
기타 if 문 관련 (5:28)
예: 문자열 패딩하기 (6:38)
코드보기: ABCDE 등급 (2:22)
코드보기: 계산기 (3:44)
정리 (3:20)
반복문과 배열
반복문 (8:31)
1부터 20까지 더하기 (5:34)
더 빠른 반복문 (4:03)
코드보기: 나눗셈 (1:51)
복습 퀴즈
배열의 올바른 정의 (4:54)
배열의 합 구하기 (5:39)
최댓값 찾기 (4:13)
문자 위치 찾기 (9:31)
문자열 길이 구하기 (1:23)
소문자로 바꾸기 (4:36)
문자열 복사 (3:07)
복습 퀴즈
실행 중에 코드 변경하기 (8:17)
정수 배열 합치기 (4:17)
다차원 배열 (3:57)
코드보기: 구구단표 (3:41)
복습 퀴즈
지시문 (1:04)
정리 (1:05)
함수
코드 재활용의 필요성 (8:34)
회귀주소 전달에 대한 고민 (5:07)
간접 참조 (7:13)
코드보기: 계산기 (룩업 테이블) (4:14)
코드보기: 계산기 (룩업 테이블 2) (2:07)
zp 회귀주소의 문제 (4:55)
스택에 회귀주소 저장하기 (5:57)
함수 호출/반환 니모닉 (3:41)
함수 호출/반환 상세 동작표 (7:55)
복습 퀴즈
zp를 이용한 인자 전달 (9:09)
스택을 통한 인자 전달 (8:19)
매개변수가 여럿 있는 경우 (8:07)
스택 원상복구 방법 (6:51)
복습 퀴즈 1
복습 퀴즈 2
zp를 이용한 반환값 전달 (6:36)
스택을 통한 반환값 전달 (2:02)
레지스터를 통한 반환값 전달 (1:29)
워드 크기 이상의 반환값 전달 (2:53)
함수 호출 데이터 위치 베스트 프랙티스 (4:58)
함수 호출 오버헤드 (7:55)
예외적으로 함수가 허용되는 경우 (7:37)
문자열 복사 함수 (5:41)
6502의 간접 주소지정 모드 (5:25)
(zp),y 주소지정 모드 (4:48)
스택을 사용한 문자열 복사 함수 (5:13)
코드보기: C#의 ref 키워드 흉내내기 (3:26)
256 초과 바이트 복사하기 (8:02)
코드보기: 두 배열 더하기 (2:23)
복습 퀴즈
(zp,x) 주소지정 모드 (3:44)
문자열들의 총길이 구하기 (8:13)
간접 주소지정 모드와 성능 (1:17)
배열의 배열 (2:18)
스택에 문자열 복사하기 (4:28)
상태 레지스터 보존 (6:06)
함수 오버로딩, 기본값 인자, 함수 포인터 (4:08)
코드보기: 계산기 (함수 포인터 버전) (4:16)
정리 (6:07)
매크로와 지시문
코드 중복의 문제 (6:12)
DRY 원칙 (5:47)
매크로 (4:39)
매크로 함수 예 (7:46)
코드보기: 인자 제거 (2:01)
복습 퀴즈
.IF (4:27)
.IFCONST (3:10)
.REPEAT (7:06)
코드보기: 인자 제거 (.REPEAT) (1:23)
코드보기: 스택 정리 (3:06)
.INCLUDE (6:57)
null 포인터와 난수 생성 (6:15)
주변기기 연결
메모리 맵 입출력 (2:57)
Apple IIe의 메모리 맵 1 (2:24)
영상 퀴즈
Apple IIe의 메모리 맵 2 (6:02)
제어장치의 입출력 (6:52)
정리 (4:46)
x86-16 소개
x86 아키텍처 소개 (9:28)
x86-16과 패러다임 변화 (7:51)
복습 퀴즈
x86-16 개발환경 (5:50)
운영체제의 역할 (3:10)
MS-DOS 부팅 순서 1~3 (8:44)
MS-DOS 부팅 순서 4~6 (6:00)
셸에서 프로그래밍 실행 (3:27)
보호 모드 (8:16)
Hello x86 (1) (6:56)
Hello x86 (2) (9:01)
8088의 레지스터 (11:41)
변수 및 초기화 (12:07)
복습 퀴즈
피연산자 종류 (4:54)
비간접 피연산자 (6:58)
간접 피연산자 (6:55)
주소지정 모드하고의 차이 (5:53)
x86-16 니모닉
x86-16 니모닉 소개 (3:40)
니모닉 표 읽는 법 (7:04)
데이터 전송 니모닉 (5:36)
데이터 크기 변환 니모닉 (1:32)
포인터 로드 니모닉 (2:17)
스택 사용 니모닉 (9:01)
포트 입출력 니모닉 (1:50)
산술 연산 니모닉 (7:58)
복습 퀴즈
논리 연산 니모닉 (1:05)
비트 이동/회전 니모닉 (2:49)
제어 니모닉 (6:44)
반복문 니모닉 (1:32)
코드보기: 1부터 N 더하기 (5:56)
코드보기: loop 없이 1부터 N 더하기 (2:10)
코드보기: 소수 판별 (5:03)
문자열 니모닉 (1:49)
기타 니모닉 (4:53)
정리 (3:26)
콘솔 입출력
콘솔 출력 (10:08)
코드보기: uitoa() (5:38)
인터럽트란? (5:55)
8088의 인터럽트 (8:53)
인터럽트 서비스 루틴 바꾸기 (6:04)
복습 퀴즈
콘솔 입력 (7:37)
코드보기: 진수 변환기 (5:54)
파일, 디렉터리 (2:23)
정리 (1:49)
문자열, 함수, 구조체
string 니모닉 사용법 (6:54)
string 복사, 로드, 채우기, 비교, 검색 (7:28)
함수와 고수준 언어의 호출 규약 (3:58)
cdecl 호출 규약 (16 비트) (5:40)
cdecl 호출 예 (6:25)
near, far 함수 호출 (5:45)
함수 호출 종류 (near) (7:48)
함수 호출 종류 (far) (4:34)
복습 퀴즈
구조체 (3:54)
레코드 (3:41)
메모리 세그먼테이션
주소 레지스터와 메모리 범위 (3:10)
영상 퀴즈
20 비트 주소 계산법 (5:42)
x86의 메모리 모델 (6:32)
복습 퀴즈
SMALL 메모리 모델과 데이터 오프셋 (5:44)
EXE 파일 헤더 (5:46)
메모리 레지스터의 초기값 (6:10)
위치변경 테이블 (4:47)
COMPACT 메모리 모델 (3:32)
.text, .data, .bss (7:01)
정리 (4:59)
FPU 프로그래밍
8086과 8087 (5:00)
일반적인 8087 사용법 (6:35)
복습 퀴즈
8087의 레지스터와 데이터 형 (5:30)
Hello 제곱근 (2:07)
복습 퀴즈
x87 니모닉과 피연산자 형태 (9:58)
실수/정수 전송 명령어 (7:58)
영상 퀴즈 1
영상 퀴즈 2
영상 퀴즈 3
영상 퀴즈 4
상수 로드, 제어데이터 전송 명령어 (1:30)
사칙 연산 명령어 (6:08)
기타 연산 명령어 (3:56)
비교 명령어 (7:04)
x87 코프로세서의 발전 (5:19)
복습 퀴즈
코드보기: 원의 면적 구하기 (5:05)
코드보기: 3D 공간 변환 (14:53)
정리 (4:34)
인라인 어셈블리
CPU 성능의 비약적 발전 (6:04)
개발 빨리하는 법 (9:30)
모던 소프트웨어 개발 환경 (9:18)
복습 퀴즈
IA-32 아키텍처 (9:53)
IA-32의 레지스터 (4:58)
인라인 어셈블리 문법 비교 (7:00)
인라인 어셈블리로 함수 작성하기 (9:14)
C 언어 기능 사용하기 (5:47)
naked 함수 (7:59)
cdecl (32 비트) (7:03)
stdcall (4:24)
동적 라이브러리의 동작 방법 (6:17)
영상 퀴즈
fastcall (7:22)
복습 퀴즈
정리 (2:54)
SIMD 프로그래밍
컴파일러와 자동 벡터화 (8:44)
SIMD의 필요성 (5:20)
SSE의 발전과 하드웨어 지원 문제 (7:37)
MMX부터 SSE까지 (7:41)
AVX의 발전과 불확실한 미래 (9:14)
요즘 컴파일러와 SIMD 코드 (7:45)
MMX 소개 (6:37)
이동, 덧셈, 뺄셈 (9:25)
unpack (6:46)
논리 연산 (6:01)
broadcast (4:35)
곱셈과 madd (4:56)
비트 이동 (7:29)
pack (2:48)
비교 명령어 (5:29)
reduce로 최댓값 찾기 (6:18)
셔플 (3:50)
horizontal (6:21)
SSE 명령어 1 (7:49)
SSE 명령어 2 (6:45)
SSE2, SSE3, SSE4 (6:58)
SSE로 공간 변환하기 (7:59)
AVX 프로그래밍 (3:46)
gather, scatter (7:37)
복습 퀴즈
정리 (3:45)
X86-64와 내장 함수
64 비트 CPU 타임라인 (6:37)
64 비트 CPU의 시장 점유율 변화 (3:36)
x86-64와 인라인 어셈블리 (5:27)
컴파일러 내장 함수 (5:54)
전치행렬 구하기 (8:55)
정리 (7:11)
강의를 마무리 하며
에필로그 (5:03)
Teach online with
.INCLUDE
강의 내용 잠김
이미 강좌를 등록하셨다면,
로그인 해주세요.
.
잠금을 해제하려면 강좌를 등록하세요!