TI Sekolah Dasar Arsitektur Komputer

Operasi: (A + (B – C) × D) / (E + F)
Buatlah program instruksi 0 alamat (0-address instructions) untuk operasi aritmetika tersebut.

Arsitektur Komputer

Operasi: (A + (B – C) × D) / (E + F)
Buatlah program instruksi 0 alamat (0-address instructions) untuk operasi aritmetika tersebut.

Jawaban dan Penjelasan:

Untuk mempermudah perancangan program intruksi 0 alamat dari operasi aritmetika tersebut, kita dapat mengubahnya ke bentuk postfix terlebih dahulu, karena instruksi 0 alamat menggunakan pengalamatan “implisit“ yang mengandalkan stack.

Ekspresi (Infix): X = A+(B-C)*D/(E+F)

Konversi ke Postfix

(E: Ekspresi yang dibaca, S: Stack = [top...bottom], P: Postfix)

  • E = (
    S = [ ( ]
    P = ""
  • E = A
    S = [ ( ]
    P = "A"
  • E = +
    S = [ + ( ]
    P = "A"
  • E = (
    S = [ ( + ( ]
    P = "A"
  • E = B
    S = [ ( + ( ]
    P = "AB"
  • E = -
    S = [ - ( + ( ]
    P = "AB"
  • E = C
    S = [ - ( + ( ]
    P = "ABC"
  • E = )
    S = [ + ( ]
    P = "ABC-"
  • E = *
    S = [ * + ( ]
    P = "ABC-"
  • E = D
    S = [ * + ( ]
    P = "ABC-D"
  • E = )
    S = [ ]
    P = "ABC-D*+"
  • E = /
    S = [ / ]
    P = "ABC-D*+"
  • E = (
    S = [ ( / ]
    P = "ABC-D*+"
  • E = E
    S = [ ( / ]
    P = "ABC-D*+E"
  • E = +
    S = [ + ( / ]
    P = "ABC-D*+E"
  • E = F
    S = [ + ( / ]
    P = "ABC-D*+EF"
  • E = )
    S = [ / ]
    P = "ABC-D*+EF+"
  • E = stop
    S = [ ]
    P = "ABC-D*+EF+/"

Notasi postfix: ABC-D*+EF+/

Program Instruksi 0-alamat

[tex]\begin{array}{lll}\sf\underline{Instruksi}&\sf\underline{Ket.}&\sf\underline{Stack}\\\tt PUSH&\tt A&\tt top=A\\\tt PUSH&\tt B&\tt top=B\\\tt PUSH&\tt C&\tt top=C\\\tt SUB&&\tt top=B-C\\\tt PUSH&\tt D&\tt top=D\\\tt MUL&&\tt top=(B-C)*D\\\tt ADD&&\tt top=A+(B-C)*D\\\tt PUSH&\tt E&\tt top=E\\\tt PUSH&\tt F&\tt top=F\\\tt ADD&&\tt top=E+F\\\tt DIV&&\tt top=(A+(B-C)*D)/(E+F)\\\tt POP&\tt X&\end{array}[/tex]

[answer.2.content]