cer-0 / 5cv14

Práctica de la materia de compiladores
0 stars 0 forks source link

El programa genera el código objeto (ensamblador) del programa, para la declaración y asignación #7

Closed DavidENicolasC closed 9 months ago

DavidENicolasC commented 9 months ago

El programa genera el código objeto para la asignación y las operaciones (el programa en ensamblador)

Por ejemplo, el programa siguiente, que asigna 5 a la variable y e 20 a la variable a:

int a;
int y;
y = 5;
a = 3 * y + 5;

Se traduce como:

.model small

.stack

.data
    a DW ?
    y DW ?
    T0 DW ?
    T1 DW ?
    T2 DW ?

.code
begin:
    mov ax, @data
    mov ds, ax

    mov ax, 5
    mov T0, ax
    mov ax, T0
    mov y, ax

    mov ax, 3
    mov bx, y
    mul bx
    mov T0, ax

    mov ax, T0
    add ax, 5
    mov T1, ax

    mov ax, T1
    mov T2, ax
    mov ax, T2
    mov a, ax

    END begin

A continuación, una muestra del funcionamiento del programa, en emu8086: Ejemplo de ejecucion en emu8086

Se observa que el programa asigna 05H (5 decimal) a la variable y, y asigna 14H (20 decimal) a la variable a, como se espera.