Untitled

 avatar
unknown
plain_text
2 months ago
672 B
4
Indexable
; Register allocation:
;   EAX = accumulator / general working register
;   EBX = a
;   ECX = i
;   EDX = j
;   ESI = stores a/6 temporarily

; Step 1: a / 6
MOV  EAX, a         ; load a into EAX
CDQ                 ; sign-extend EAX into EDX for division
MOV  EBX, 6        ; divisor = 6
IDIV EBX            ; EAX = a / 6
MOV  ESI, EAX       ; save a/6 into ESI

; Step 2: 10 - j
MOV  EAX, 10        ; EAX = 10
SUB  EAX, j         ; EAX = 10 - j

; Step 3: i * (10 - j)
IMUL EAX, i         ; EAX = i * (10 - j)

; Step 4: (a/6) + i*(10-j)
ADD  EAX, ESI       ; EAX = a/6 + i*(10-j)

; Step 5: store result
MOV  res, EAX       ; res = final answer
Editor is loading...
Leave a Comment