728x90
Machine Language

Machine Language

  • 어셈블러 : Symbolic한 코드(어셈블리어)를 기계어로 바꿔줌
    • ex. 1 ADD 56 > 1 000 0000 0011 1000
  • 컴파일러 : 고급 언어(C, Java, ...)를 기계어로 바꿔줌

Assembly Language

  • 어셈블러 : Symbolic Program을 기계어로 변환
  • 기계마다 기계어가 다르므로, 어셈블러 역시 기계마다 다르게 동작
  • 어셈블리 명렁어의 구성요소
    • Lable : 공백 or Symbolic Address
      • Symbolic Address
        • 알파벳 형태로 주소 지정
        • 첫 글자는 반드시 대문자로 써야 하며, 콤마(,)로 종료
    • Instruction : machine / pseudo Instruction
      • pseudo instruction
        • ORG(Origin of Program), DEC(Decimal), END(END of program) 등
        • 실제 동작에는 관여하지 않고, 어셈블러 동작에 필요한 정보 지정
      • MRI(Memory Reference Instruction)의 경우 공백으로 구분되는 Symbol 명령어
        • 명령어 + 주소 (+ Indirect)로 구성
        • ex. ADD OPR / ADD OPR I (Indirect MRI)
      • non-MRI : 1개 Symbol ex. CLA(Clear ACC)
    • Comment : 코드 주석
  • Code Example : subtract code
    • ORG 100 : 100번 주소에서 코드 시작
    • LDA SUB : SUB 명령어를 Load
      • SUB 명령어는 107에 저장되어 있음
      • SUB의 Opcode가 010이므로 Hex Code 2107로 표현됨
      • MIN : 계산할 값
      • SUB : 뺄 값
      • DIF : 차이
    • CMA - INC - ADD MIN
      • 2진수 빼기는 2의 보수(1의 보수 + 1)을 더하는 방식으로 진행
    • STA DIF : DIF 주소(108)에 결과 저장
    • HLT : 컴퓨터 종료
    • END : 코드의 끝
728x90

+ Recent posts