Help with assembler 8086

0

I'm using emu 8086 for a university project, at the beginning I had multiple compilation errors when declaring the variables, I asked around here in the forum that is in English and that problem was solved by declaring the variables after the ret, now the problem is that the code compiles but does nothing, does not even show me the console, as if it had not entered any function in itself. Except for the functions of print probe the rest of the code in visual studio with asm and it works well, of course, using the short variables of C.

org 100h  
    ; Genera un numero pseudo aleatorio con la siguiente formula matematica x = (seed*r2 + r1) % limite;
    jmp random
    random :
    mov ax, seed
        mov cx, r2
        mul cx
    ; x = seed*r2
    mov x,ax
    mov ax,x
    add ax,r1
    ; x = x+c
    mov x,ax
    mov ax,x
    mov cx,l
    div cx
    ; x = x%limite
    mov x,dx
    mov y,dx
    mov ax,seed
    ; Agrego uno a la semilla para generar un numero diferente la proxima vez
    add ax,1
    mov seed,ax
    ; Ya genero el numero al azar, ahora agregara ese numero al azar a la posicion actual del objeto para que vayan apareciendo obstaculos
    mov ax, x
    add ax, a
    mov x, ax
    mov ax, y
    add ax, b
    mov y, ax
    cmp ax, 15
    ; *Imprimir posicion del obstaculo*

    lea dx,mensaje_1
    mov ah,09h
    int 21h

    ; *Continuar*
    ; *Falta imprimir la posicion x, el espacio, la posicion y, el espacio

    jmp recorrido
    recorrido :
    ; El objeto se movera indefinidamente pero para detener la ejecucion del programa en algun punto se determino que el programa finalizara la ejecucion cuando llegue a la posicion 15
        mov ax, a
        cmp ax, 15
        ja fin
        cmp caso, 1
        je cumple
        mov ax, a
        jmp comparar_x
    ; Si la posicion actual del objeto+1 es igual a la posicion del obstaculo el objeto se movera
        comparar_x : 

        lea dx,mensaje_2
        mov ah,09h
        int 21h      


    ; *Continuar*
    ; *Falta imprimir la posicion x, el espacio, la posicion y, el espacio
    mov ax, a
    add ax, 1
    mov a, ax
    mov cx, b
    add cx, 1
    mov b, cx
    mov bx, x
    cmp bx, ax
    jz comparar_y
    ja resultado_zero
    jb resultado_zero

    comparar_y :
    mov bx, y
        cmp bx, cx
        jz resultado
        ja resultado_zero
        jb resultado_zero

        resultado :
        mov caso, 1
        jmp recorrido

        resultado_zero :
        mov caso, 0
        jmp recorrido

        cumple :
        ; Mueve el objeto
        mov cx, b
        add cx, 1
        mov b, cx  

        ;*Imprimir*

       lea dx,mensaje_3
        mov ah,09h
        int 21h      


    ; *Continuar*
    ; *Falta imprimir la posicion x, el espacio, la posicion y, el espacio 

    jmp producto_escalar
; *Imprimir posicion del obstaculo*

    lea dx,mensaje_1
    mov ah,09h
    int 21h

; *Continuar*
; *Falta imprimir la posicion x, el espacio, la posicion y, el espacio 

    jmp recorrido
    producto_escalar :
    ; Producto escalar(a, b) y(a - 1, b - 2)
    ; Producto escalar entre la posicion antes de moverse y la posicion luego de moverse
        mov cx, a
        dec cx
        mov ax, x
        mul cx
        mov p, ax
        mov ax, b
        mov cx, y
        sub cx, 1
        mul cx
        add p, ax
        mov caso, 0
    ; Formula usada para calcular el angulo = ( producto escalar * 10 ) % 360
    mov cx, 10
    mov ax, p
    mul cx
    mov p, ax
    mov ax, p
    mov cx, 360
    div cx
    mov p, dx
    ;Devuelve el objeto a la trayectoria normal (funcion y=x)
    jmp continuar
    continuar :
    mov ax, a
        add ax, 1
        mov a, ax
        mov b, ax
; *Imprimir posicion del obstaculo*

    lea dx,mensaje_4
    mov ah,09h
    int 21h

; *Continuar*
; *Falta 
    mov ax, a
    cmp ax, 15
    jz fin
    ja fin
    jb random
    fin :
ret
caso dw 0
x dw 0
y dw 0
a dw 1
p dw 0
b dw 1
seed dw 1
r1 dw 99
l dw 6
r2 dw 4
mensaje_1 dw 'Obstaculo, se encuentra en la posicion [ $'
mensaje_2 dw 'Se encuentra en la posicion [ $'
mensaje_3 dw 'Se movio hacia [ $'
mensaje_4 dw ' con un angulo de $'
mensaje_41 dw 'grados$'
mensaje_5 dw 'Volvio a su curso normal en la posicion [ $'
    
asked by EternalGrey 04.12.2018 в 13:05
source

0 answers