Λύση 3ου θέματος

 1:   unit, f, -, -
 2:   >, x, y, 4
 3:   jump, -, -, 6
 4:   :=, x, -, a
 5:   jump, -, -, 6
 6:   endu, f, -, -
 7:   unit, main, -, -
 8:   par, b, R, -
 9:   par, a, V, -
10:   call, -, -, f
11:   endu, main, -, -

xseg    segment public code
        assume cs:xseg, ds:xseg, ss:xseg
        org 100h

main    proc	near
        call	near ptr _main_2
        mov	ax, 4C00h
        int	21h
main    endp
@1:		; (unit, f, -, -)
_f_1    proc	near
        push	bp
        mov	bp, sp
        sub	sp, 0
@2:		; (>, x, y, 4)
        mov	si, word ptr [bp+4]
        mov	ax, word ptr [si-8]
        mov	dx, word ptr [bp+8]
        cmp	ax, dx
        jg	@4
@3:		; (jump, -, -, 6)
        jmp	@6
@4:		; (:=, x, -, a)
        mov	si, word ptr [bp+4]
        mov	ax, word ptr [si-8]
        mov	si, word ptr [bp+10]
        mov	word ptr [si], ax
@5:		; (jump, -, -, 6)
        jmp	@6
@6:		; (endu, f, -, -)
@f_1:   mov	sp, bp
        pop	bp
        ret
_f_1    endp
@7:		; (unit, main, -, -)
_main_2 proc	near
        push	bp
        mov	bp, sp
        sub	sp, 8
@8:		; (par, b, R, -)
        lea	si, word ptr [bp-6]
        push	si
@9:		; (par, a, V, -)
        mov	ax, word ptr [bp-4]
        push	ax
@10:		; (call, -, -, f)
        sub	sp, 2
        push	bp
        call	near ptr _f_1
        add	sp, 8
@11:		; (endu, main, -, -)
@main_2:mov	sp, bp
        pop	bp
        ret
_main_2 endp

xseg    ends
        end	main
  

Επιστροφή στις εκφωνήσεις