none
Programa Calculadora RRS feed

  • Pregunta

  • Envio un cordial saludo esperando me puedan auxiliar con este programa que he realizado en Visual C++ utilizando lenguaje ensamblador se trata de una calculadora basica, solo que es sobre una aplicacion de 16 bits y lo quiero pasar a 32 bits para lo cual no puedo usar la interrupcion 21 (INT 21H). Se pudiera agregar un gethche para leer el dato que leo con la funcion 1 de la INT 21h??? ademas de los errores que enlisto a continuacion, espero alguien me pueda ayudar:

    (13): error C3861: 'Readnum': no se encontró el identificador

    (15): error C3861: 'Readnum': no se encontró el identificador

    (32): error C3861: 'Dispn': no se encontró el identificador

    (35): error C3861: 'Break': no se encontró el identificador

    (53): error C2443: conflicto de tamaño de operando

    (55): error C2443: conflicto de tamaño de operando

    (61): error C2443: conflicto de tamaño de operando

    (69): error C2443: conflicto de tamaño de operando

    #include "stdafx.h"

    int temp;
    void main (void)

    {
        int temp1, oper;
        while (1)
        {
            oper = Readnum();
            temp1 = temp;
            if ( Readnum() == '=' )
            {
                switch(oper)
                {
                    case '+':
                    temp += temp1;
                    break;
                    case '-':
                    temp = temp1 - temp;
                    break;
                    case '/':
                    temp = temp1 / temp;
                    break;
                    case '*':
                    temp *= temp1;
                    break;
                }
                Dispn(temp);
            }
            else
                Break;
            }
        }
    int Readnum()
    {
        int a;
        temp = 0;
        _asm
        {
            Readnum1:
            mov ah,1
            int 21h
            cmp al,30h
            jb Readnum2
            cmp al,39h
            ja Readnum2
            sub al,30h
            shl temp,1
            mov bx,temp
            shl temp,2
            add temp,bx
            add byte ptr temp,al
            adc byte ptr temp+1,0
            jmp Readnum1
            Readnum2:
            Mov ah,0
            mov a,ax
        }
        return a;
    }
    int Dispn (int DispnTemp)
    {
        _asm
        {
            mov ax,DispnTemp
            mov bx,10
            push bx
        Dispn1:
            mov dx,0
            div bx
            push dx
            cmp ax,0
            jne Dispn1
        Dispn2:
            pop dx
            cmp dl,bl
            je Dispn3
            add dl,30h
            mov ah,2    
            int 21h
            jmp Dispn2
        Dispn3:
            mov dl,13
            int 21h
            mov dl,10
            int 21h
        }
    }

    Gracias!!!!!!

    jueves, 26 de marzo de 2015 3:47