1: unit, sub, -, -
2: *, x, p, $1
3: >, $1, y, 5
4: jump, -, -, 7
5: :=, x, -, 9
6: jump, -, -, 8
7: :=, z, -, 9
8: endu, sub, -, -
9: unit, main, -, -
10: +, x, y, $2
11: par, $2, V, -
12: par, z, R, -
13: call, sub, -, -
14: endu, main, -, -
xseg segment public code
assume cs:xseg, ds:xseg, ss:xseg
org 100h
main proc near
call near ptr _main_1
mov ax, 4C00h
int 21h
main endp
@1: ; (unit, sub, -, -)
_sub_2 proc near
push bp
mov bp, sp
sub sp, 4
@2: ; (*, x, p, $1)
mov ax, word ptr [bp-2]
mov cx, word ptr [bp+10]
imul cx
mov word ptr [bp-4], ax
@3: ; (>, $1, y, 5)
mov ax, word ptr [bp-4]
mov si, word ptr [bp+4]
mov dx, word ptr [si-4]
cmp ax, dx
jg @5
@4: ; (jump, -, -, 7)
jmp @7
@5: ; (:=, x, -, 9)
mov ax, word ptr [bp-2]
mov si, word ptr [bp+8]
mov word ptr [si], ax
@6: ; (jump, -, -, 8)
jmp @8
@7: ; (:=, z, -, 9)
mov si, word ptr [bp+4]
mov ax, word ptr [si-6]
mov si, word ptr [bp+8]
mov word ptr [si], ax
@8: ; (endu, sub, -, -)
@sub_2: mov sp, bp
pop bp
ret
_sub_2 endp
@9: ; (unit, main, -, -)
_main_1 proc near
push bp
mov bp, sp
sub sp, 8
@10: ; (+, x, y, $2)
mov ax, word ptr [bp-2]
mov dx, word ptr [bp-4]
add ax, dx
mov word ptr [bp-8], ax
@11: ; (par, $2, V, -)
mov ax, word ptr [bp-8]
push ax
@12: ; (par, z, R, -)
lea si, word ptr [bp-6]
push si
@13: ; (call, sub, -, -)
sub sp, 2
push bp
call near ptr _sub_2
add sp, 8
@14: ; (endu, main, -, -)
@main_1:mov sp, bp
pop bp
ret
_main_1 endp
xseg ends
end main