= Assembly íŠœí„°ë§ = * êµìˆ˜í•™ìŠµì„¼í„°ì—ì„œ 진행하는 íŠœí„°ë§ í”„ë¡œê·¸ëž¨ì— ì°¸ê°€í•´ íŠœí„°ë§ í™œë™ì„ 진행 * 튜터 : [김태진] * 튜티 : [김민재],[ì–‘ì•„ì„],[장지í¬],[ì´ìŠ¹ì¤€],[김수연] == 1주차 == === ê°•ì˜ ë‚´ìš© === * ì‚¬ì „ ì‹¤ë ¥ì ê²€ 테스트 * 어셈블리란? * ì´ ê³¼ëª©ì—ì„œ 가장 주로 다루는 어셈블리 언어를 사용하는 ì´ìœ 와 현재 ì–´ë–¤ ê³³ì— ì‚¬ìš©ë˜ëŠ”지, íŠ¹ì§•ì€ ë¬´ì—‡ì´ë©° 장단ì ì€ ë¬´ì—‡ì¸ì§€ 알아보ìž. * 컴퓨터 구조 * 어셈블리 ê³¼ëª©ì˜ íŠ¹ì„±ìƒ í•˜ë“œì›¨ì–´ì™€ ì†Œí”„íŠ¸ì›¨ì–´ì˜ ì´í•´ê°€ ë™ì‹œì— 필요한ë°, ì´ ë¶€ë¶„ì— ê´€í•´ 알아보기 위해 하드웨어가 ì–´ë–¤ ì‹ìœ¼ë¡œ ëª…ë ¹ì„ ì²˜ë¦¬í•˜ëŠ”ì§€ 알아보ìž. === ê³¼ì œ === * 어셈블리 언어란 무엇ì´ë©°, 왜 ì“°ê³ ìž¥ë‹¨ì ì€ ë¬´ì—‡ì¸ì§€ ì¨ë³´ìž.(ì„œìˆ ì‹ìœ¼ë¡œ ìžì‹ ì´ ì•„ëŠ” ë‚´ìš©/ì±…ì—ì„œ 찾아본 ë‚´ìš©ì„ ì¨ë‚´ë ¤ê°€ë³´ìž.) * 컴퓨터 구조가 ì–´ë–¤ ì‹ìœ¼ë¡œ ë˜ì–´ìžˆëŠ”지 ì¨ë³´ê³ , CPUì—는 ì–´ë–¤ ê²ƒì´ ìžˆìœ¼ë©° ê°ê° 무슨 ì¼ì„ 하는지 ì¨ë³´ìž. * ìž¬ê·€í•¨ìˆ˜ì— ê´€í•´ ì¨ë³´ê³ , n!ì„ ìž¬ê·€í•¨ìˆ˜ë¡œ ìž‘ì„±í• ë•Œ ë¬´ì—‡ì„ ê³ ë¯¼í•´ì•¼í•˜ëŠ”ì§€ ì¨ë³´ìž. * 가능하다면 n!ì„ ì§ì ‘ êµ¬í˜„í•´ë³´ê³ ëŒë ¤ë³´ìž. * 승준ì´ë¥¼ 위한 ê³¼ì œ * 0ê³¼ 1000 사ì´ì˜ ì •ìˆ˜ë¥¼ ìž…ë ¥ë°›ì•„ ëª¨ë“ ìžë¦¿ìˆ˜ë¥¼ ë”하여 ì¶œë ¥í•˜ëŠ” í”„ë¡œê·¸ëž¨ì„ ì§œë³´ìž. * /10, %10 ë“±ì„ ì´ìš©í•´ì„œ í•´ 보세요. * 소문ìžë¥¼ 대문ìžë¡œ 바꾸는 í”„ë¡œê·¸ëž¨ì„ ìž‘ì„±í•´ë³´ìž. * 2중 forë¬¸ì„ ì‚¬ìš©í•˜ì—¬ ë‹¤ìŒ ëª¨ì–‘ì˜ ë³„ì°ê¸°ë¥¼ 작성해보ìž. {{{ 1. ***** **** *** ** * 2. * ** *** **** ***** }}} == 2주차 == === ê°•ì˜ ë‚´ìš© === * Virtual, 2진수, 메모리 공간, ALUì—°ì‚°, Pipeline, Multitasking, 보호모드, Little-endian, RISC&CISC === ê³¼ì œ === * 9ê°œì˜ ë‹¨ì–´ 중 3개를 ê³¨ë¼ ìˆ˜ì—…ì‹œê°„ì— ê·¸ì— ê´€í•´ ì„¤ëª…í• ìˆ˜ 있ë„ë¡ ì¤€ë¹„í•˜ìž. * 아래 ë¬¸ì œëŠ” ê¸°ì¶œë¬¸ì œìž…ë‹ˆë‹¤. --* 1. ê° dataê°€ ë©”ëª¨ë¦¬ì— ì–´ë–»ê²Œ ì €ìž¥ë˜ëŠ”지 쓰세요. {{{ .data arrV BYTE 12h,34h,56h,78h arrD WORD 0502h, 0603h arrW DWORD 13141516h }}} 1. 10진수값 223ì„ 16진수 값으로 변환하세요. 1. ì‹ì§„수 14ì—ì„œ 5를 빼는 ê³¼ì •ê³¼ 결과를 2진수로 표현하여 쓰세요. 1. Instruction Execution Cycleì„ ë„ì‹í•˜ê³ , 설명하세요. * ì–´ì…ˆë¸”ë¦¬ì–¸ì–´ì˜ ê¸°ë³¸ë¬¸ë²•ì„ ë³´ê³ , ì–´ë–¤ 프로그램ì´ë“ 컴파ì¼ì‹œí‚¤ê³ 실행시켜보ìž. == 3주차 == === ê°•ì˜ ë‚´ìš© === === ê³¼ì œ === 1. Directive와 instructionì˜ ì°¨ì´ì ì— ëŒ€í•´ 설명하시오. 1. ê° ë°°ì—´ì„ ê·¸ë¦¼ìœ¼ë¡œ í‘œí˜„í•˜ê³ , 다ìŒì˜ 실행결과가 나오ë„ë¡ ê´„í˜¸ë¥¼ 채우시오. {{{ arrayB BYTE 12h, 34h, 56h, 78h; arrayW WORD 1324h, 5768h; arrayD DWORD 87654321h; mov al, ( ) // al = 21 mov ax, ( ) // ax = 7856 mov eax, ( ) // eax = 57681324 }}} 3. {{{ .data arrV BYTE 12h,34h,56h,78h arrD WORD 0502h, 0603h arrW DWORD 13141516h }}} a) ê° dataê°€ ë©”ëª¨ë¦¬ì— ì–´ë–»ê²Œ ì €ìž¥ë˜ëŠ”지 쓰세요. b) ë‹¤ìŒ ì½”ë“œë¥¼ ë°ì´í„°ì— ë”°ë¼ ì™„ì„±í•˜ì„¸ìš”. .code ; 3412h ì¶œë ¥ ; 1314h ì¶œë ¥ 4.ë‹¤ìŒ ë°©ì‹(indirect, indexed)ë¡œ 코드를 ìž‘ì„±í•˜ê³ , 설명하시오. {{{ .data arrayD BYTE 100h, 200h, 300h indirect operands indexed operands ;ax=100h 1) 1) ;ax=ax+300h; 2) 2) 3) 3) 4) 4) }}} ---- [2013년활ë™ì§€ë„]