Ensamblador - Imprimir numero de 5 digitos en emu8086

   
Vista:
Imágen de perfil de Nath Camila

Imprimir numero de 5 digitos en emu8086

Publicado por Nath Camila (1 intervención) el 09/12/2015 21:48:00
Estoy construyendo un compilador, ya tengo la generacion de codigo intermedio, pero al generar el codigo objeto solo eh podido hacer que imprima numeros menores a 256. ¿Hay alguna manera de imprimir numeros mayores? ¿Como? Ayuda, pliss :(
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Imprimir numero de 5 digitos en emu8086

Publicado por Requeteprogramador (26 intervenciones) el 10/12/2015 11:01:08
No se entiende cuál es el problema.

Si quieres sacar números en hexadecimal puedes usar las rutinas obsequio de borland

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
HexWrite8 proc
;
; AL has two hex digits that will be written to ES:EDI in ASCII form
;
 
        mov     ah, al
        and     al, 0fh
        shr     ah, 4
                                ; ah has MSD
                                ; al has LSD
        or      ax, 3030h
        xchg    al, ah
        cmp     ah, 39h
        ja      @@4
@@1:
        cmp     al, 39h
        ja      @@3
@@2:
        stosw
        ret
@@3:
        sub     al, 30h
        add     al, 'A' - 10
        jmp     @@2
@@4:
        sub     ah, 30h
        add     ah, 'A' - 10
        jmp     @@1
HexWrite8 endp
;-----------------------------------------------------------------------------
HexWrite16 proc
;
; AX has four hex digits in it that will be written to ES:EDI
;
        push    ax
        xchg    al,ah
        call    HexWrite8
        pop     ax
        call    HexWrite8
        ret
HexWrite16 endp
;-----------------------------------------------------------------------------
HexWrite32 proc
;
; EAX has eight hex digits in it that will be written to ES:EDI
;
        push    eax
        shr     eax, 16
        call    HexWrite16
        pop     eax
        call    HexWrite16
        ret
HexWrite32 endp

Si quieres sacarlos en decimal tienes que ir sacando cada dígito con la rutina recursiva que anda por todas partes.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar