SlideShare a Scribd company logo
1 of 16
Download to read offline
TAOCP #1
  1.3.2. MIX 어셈블리 언어
           (연습문제 풀이)

                          아꿈사
      http://cafe.naver.com/architect1


                          최성기
1.3.2. MIX 어셈블리 언어

 연습문제 (1부)   연습문제 (2부)
 2.   [10]    9. [25]
 3.   [23]   10. [31]
 4.   [25]   14. [31]
 8.   [24]   20. [33]
1.3.2. MIX 어셈블리 언어

 연습문제 (1부)   연습문제 (2부)
 2.   [10]    9. [25]
 3.   [23]   10. [31]
 4.   [25]   14. [31]
 8.   [24]   20. [33]
2. [10] 프로그램 M의 줄 12는 “JMP *”인데, 여기서 *는
그 줄의 장소를 뜻한다. 이 자체로 보면 자신으로 점프하
는 명령이므로 무한루프가 될 것 같지만, 프로그램 M은
무한루프에 빠지지 않는다. 왜 그럴까?
2. [10] 프로그램 M의 줄 12는 “JMP *”인데, 여기서 *는
그 줄의 장소를 뜻한다. 이 자체로 보면 자신으로 점프하
는 명령이므로 무한루프가 될 것 같지만, 프로그램 M은
무한루프에 빠지지 않는다. 왜 그럴까?


                          여기서 주소가 재설정됨




         03줄이 실행되는 순간 이 값이 수정된다.
3. [23] 프로그램 M과 함께 쓰인다고 할 때, 다음 프로
그램의 효과는 무엇인가?

                            (0)
                          (0)




     프로그램 M        다음 프로그램(?)
3. [23] 프로그램 M과 함께 쓰인다고 할 때, 다음 프로
그램의 효과는 무엇인가?

              (0)   0번 디바이스에서 1001번지로 데이터 읽어 들임
           (0)      0번 장치가 사용 중이면 제자리로 점프(=대기)
                    rI1 레지스터에 숫자 100(데이터 사이즈) 입력
                    MAXIMUM 서브루틴으로 점프.
                    1000+rI1번지의 값(마지막 데이터)을 rX에 로딩
 최대값을
제일 끝으로              rA의 값(최대값)을 1000+rI1번지(마지막)에 저장
  이동.               rX의 값을 1000+rI2번지(최대값 있던 곳)에 저장
                    rI1 레지의 값을 하나 줄인다. (데이터 사이즈 축소)
                    rI1 레지의 값이 양수라면 1H로 이동.
                    1번 디바이스로 1001번지부터의 값을 출력
                    스토옵 ~


                      selection sort. ������(������2 )
4. [25] 프로그램 P를 손으로 직접 어셈블해 볼 것. (생각
보다는 오래 걸리지 않을 것이다.) 기호적 프로그램에 해
당하는 실제의 수치적 메모리 내용은 무엇인가?




      …교수님, 생각보다 오래 걸리던데요;;
4. [25] 프로그램 P를 손으로 직접 어셈블해 볼 것.

              OP(C)          Addr       ,I   (F)

 MIXAL :     LDA 2000,2(0:3)

                      Addr          I        F     C

Assembly :
             + 2000 2 3 8
              기본 적으로 이런 절차가 50여 회 반복됩니다.
              물론 그 외 다양한 추가 규칙이 등장하며
              로케이션(Location)도 신경 써야겠죠.
4. 정답.
8. [24] 다음 프로그램이 하는 일은 무엇인가? (컴퓨터로
실행하지 말고 직접 손으로 풀어볼 것!)
초                       rI1 <- 1
기                       rI2 <- 0
화
                        rX <- ‘AAAAA’
            Zero(0)출력

메       B                rI2 : 출력 버퍼를 채울 때마다 증가.
인                          (= 출력 데이터의 크기)
    A       ‘AAAAA’출력
처
리                        rI1 : loop A를 돌 때마다 증가.

                         rI3 : rI1로 초기화 후 (2H),
출                         이 값만큼 loop B를 반복한다.
    C D
력
메모리   아름답지 못한 출력.
9. [25] 장소 INST에는 하나의 MIX 명령에 해당하는 하
나의 MIX 워드가 들어있다. 그 워드가 유효한 C, ± AA, I,
F 필드를 가진다면 장소 GOOD으로, 아니면 BAD로 점프
하는 프로그램을 작성하라.

  -> 메모리 블록의 데이터에 대해,
   올바른 MIX 명령인지 판별하라는 소리.
±AA I F C
I 필드 : 값이 6 이하이면 유효
C 필드 : 존재하는 값이면 (표 1.3.1-1) 유효
F 필드 : C필드에 따라 다르게 판단.
ex) C=7(MOVE)이면 F는 어떤 값이든 가능.
    C=8(LDA)이면 F는 8L+R 형태여야 한다.
    ( 0 ≤ ������ ≤ ������ ≤ 5 )
±AA필드 : C가 메모리 주소를 요구하는 명령이고
  I=0일 때에는 올바른 메모리 주소 (0~3999) 여야 한다.
끝. 질문은
         님께~

More Related Content

More from sung ki choi

[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기sung ki choi
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.sung ki choi
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장sung ki choi
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'sung ki choi
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장sung ki choi
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표sung ki choi
 
[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자sung ki choi
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열sung ki choi
 
101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbmssung ki choi
 
100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용sung ki choi
 
100511 boost&tips 최성기
100511 boost&tips 최성기100511 boost&tips 최성기
100511 boost&tips 최성기sung ki choi
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32sung ki choi
 

More from sung ki choi (12)

[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
[아꿈사/111105] html5 9장 클라이언트측 데이터로 작업하기
 
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
[111015/아꿈사] HTML5를 여행하는 비(非) 웹 개발자를 위한 안내서 - 1부 웹소켓.
 
[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장[아꿈사/110903] 도메인주도설계 4장
[아꿈사/110903] 도메인주도설계 4장
 
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
[110730/아꿈사발표자료] mongo db 완벽 가이드 : 7장 '고급기능'
 
[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장[아꿈사/110528] 멀티코어cpu이야기 5,6장
[아꿈사/110528] 멀티코어cpu이야기 5,6장
 
[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표[아꿈사/110514] 멀티코어cpu이야기 시작발표
[아꿈사/110514] 멀티코어cpu이야기 시작발표
 
[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자[110331] visual studio 속성 관리자
[110331] visual studio 속성 관리자
 
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
110212 [아꿈사발표자료] taocp#1 1.2.8. 피보나치수열
 
101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms101102 endofdb select.1_rdbms
101102 endofdb select.1_rdbms
 
100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용100526 windows7 mfc_최성기_배포용
100526 windows7 mfc_최성기_배포용
 
100511 boost&tips 최성기
100511 boost&tips 최성기100511 boost&tips 최성기
100511 boost&tips 최성기
 
Touch Ux With Win32
Touch Ux With Win32Touch Ux With Win32
Touch Ux With Win32
 

[아꿈사발표자료] TAOCP 1.3.2 MIX 어셈블리 언어 연습문제 (110312)

  • 1. TAOCP #1 1.3.2. MIX 어셈블리 언어 (연습문제 풀이) 아꿈사 http://cafe.naver.com/architect1 최성기
  • 2. 1.3.2. MIX 어셈블리 언어 연습문제 (1부) 연습문제 (2부) 2. [10] 9. [25] 3. [23] 10. [31] 4. [25] 14. [31] 8. [24] 20. [33]
  • 3. 1.3.2. MIX 어셈블리 언어 연습문제 (1부) 연습문제 (2부) 2. [10] 9. [25] 3. [23] 10. [31] 4. [25] 14. [31] 8. [24] 20. [33]
  • 4. 2. [10] 프로그램 M의 줄 12는 “JMP *”인데, 여기서 *는 그 줄의 장소를 뜻한다. 이 자체로 보면 자신으로 점프하 는 명령이므로 무한루프가 될 것 같지만, 프로그램 M은 무한루프에 빠지지 않는다. 왜 그럴까?
  • 5. 2. [10] 프로그램 M의 줄 12는 “JMP *”인데, 여기서 *는 그 줄의 장소를 뜻한다. 이 자체로 보면 자신으로 점프하 는 명령이므로 무한루프가 될 것 같지만, 프로그램 M은 무한루프에 빠지지 않는다. 왜 그럴까? 여기서 주소가 재설정됨 03줄이 실행되는 순간 이 값이 수정된다.
  • 6. 3. [23] 프로그램 M과 함께 쓰인다고 할 때, 다음 프로 그램의 효과는 무엇인가? (0) (0) 프로그램 M 다음 프로그램(?)
  • 7. 3. [23] 프로그램 M과 함께 쓰인다고 할 때, 다음 프로 그램의 효과는 무엇인가? (0) 0번 디바이스에서 1001번지로 데이터 읽어 들임 (0) 0번 장치가 사용 중이면 제자리로 점프(=대기) rI1 레지스터에 숫자 100(데이터 사이즈) 입력 MAXIMUM 서브루틴으로 점프. 1000+rI1번지의 값(마지막 데이터)을 rX에 로딩 최대값을 제일 끝으로 rA의 값(최대값)을 1000+rI1번지(마지막)에 저장 이동. rX의 값을 1000+rI2번지(최대값 있던 곳)에 저장 rI1 레지의 값을 하나 줄인다. (데이터 사이즈 축소) rI1 레지의 값이 양수라면 1H로 이동. 1번 디바이스로 1001번지부터의 값을 출력 스토옵 ~ selection sort. ������(������2 )
  • 8. 4. [25] 프로그램 P를 손으로 직접 어셈블해 볼 것. (생각 보다는 오래 걸리지 않을 것이다.) 기호적 프로그램에 해 당하는 실제의 수치적 메모리 내용은 무엇인가? …교수님, 생각보다 오래 걸리던데요;;
  • 9. 4. [25] 프로그램 P를 손으로 직접 어셈블해 볼 것. OP(C) Addr ,I (F) MIXAL : LDA 2000,2(0:3) Addr I F C Assembly : + 2000 2 3 8 기본 적으로 이런 절차가 50여 회 반복됩니다. 물론 그 외 다양한 추가 규칙이 등장하며 로케이션(Location)도 신경 써야겠죠.
  • 11. 8. [24] 다음 프로그램이 하는 일은 무엇인가? (컴퓨터로 실행하지 말고 직접 손으로 풀어볼 것!) 초 rI1 <- 1 기 rI2 <- 0 화 rX <- ‘AAAAA’ Zero(0)출력 메 B rI2 : 출력 버퍼를 채울 때마다 증가. 인 (= 출력 데이터의 크기) A ‘AAAAA’출력 처 리 rI1 : loop A를 돌 때마다 증가. rI3 : rI1로 초기화 후 (2H), 출 이 값만큼 loop B를 반복한다. C D 력
  • 12. 메모리 아름답지 못한 출력.
  • 13. 9. [25] 장소 INST에는 하나의 MIX 명령에 해당하는 하 나의 MIX 워드가 들어있다. 그 워드가 유효한 C, ± AA, I, F 필드를 가진다면 장소 GOOD으로, 아니면 BAD로 점프 하는 프로그램을 작성하라. -> 메모리 블록의 데이터에 대해, 올바른 MIX 명령인지 판별하라는 소리.
  • 14. ±AA I F C I 필드 : 값이 6 이하이면 유효 C 필드 : 존재하는 값이면 (표 1.3.1-1) 유효 F 필드 : C필드에 따라 다르게 판단. ex) C=7(MOVE)이면 F는 어떤 값이든 가능. C=8(LDA)이면 F는 8L+R 형태여야 한다. ( 0 ≤ ������ ≤ ������ ≤ 5 ) ±AA필드 : C가 메모리 주소를 요구하는 명령이고 I=0일 때에는 올바른 메모리 주소 (0~3999) 여야 한다.
  • 15.
  • 16. 끝. 질문은 님께~