학교/컴퓨터학개론

[컴퓨터학개론 16]- Assembly Language

재한 2022. 7. 3. 23:02

Assembly Language

 

Assembly Language 

  • 기계어 명령어를 숫자가 아니라 , 영어 단어로 표현

Assembler

  • 사람이 이해하기 쉽게 만든 영어 단어-> 컴퓨터가 이해하기 쉬운 기계어 명령으로 변환해줌.
사람은 기계어가 어려움. -> 어셈블리 언어를 통해서 영어로 표현함.
하지만 영어는 컴퓨터가 불편함. -> 따라서 그 영어를 2진수로 바꿔주는 역할(Assembler)이 필요하다.

 

Pep/8 Assembly Language

 i : immediate addressing mode 

d :  direct addressing mode

 

 

A new Program 

  • 3개의 수를 일겅서 그 합을 출력하는 프로그램을 작성
    • X+Y+Z
    • load 0 -> sum 초기화
    • add X
    • add Y
    • add Z
    • store

BR(branch)

  • 해당 메모리 주소로 jump
  • pc값을 변경

pseudo operation [의사 동작]

  • 진짜 명령은 아니지만, 명령과 비슷
  • 주로 데이터 저장에 사용
  • Label : 해당 위치의 address를 의미

 

BLOCK 2라서 2byte를 차지함.

 

 

Selection : 결정연산

  • BR프로그램을 선택적으로 수행하는 방법?
    • PC의 값을 바꾸면 가능하다.
    • BRLT [Branch Less than] 누산기 A <0 -> set PC
    • BREQ [Branch Equal] 누산기 A ==0 -> set PC

 

  • PC : BRLT 명령의 위치
  • BRPL 명령을 가져온 후
  • PC <- 다음 명령 STA위치
    • A <0
      • PC <- NegMsg위치
      • 다음 명령 : CHARO를 수행
    • A <0이 아닌 경우
      • PC: 현재 상태를 유지
      • 다음 명령 STA를 수행

Iteration [반복]

정해진 개수만큼 수를 읽어 그 합을 구하는 프로그램을 작성한다.
  • 값은 몇 개인가?
  • 이 값은 어디에서 읽었는가?
  • 반복해서 읽고 합하는 과정이 필요할 것
  • 다 끝 낫는지는 어떻게 판별?

loop를 통해서 limit 설정, 숫자를 입력할 때마다 count를 늘려줘서 limt와 count를 CPA 때려줌. 

두 값의 차이가 누산기에 저장됨. 

BREQ 해서 0이면 quit --> 끝

 

어셈블러는 어셈블리어를 기계가 알아들을 수 있는 기계어로 바꿔주며 1대 1 매칭 되는 것이 특징이다.