News:

MASM32 SDK Description, downloads and other helpful links
MASM32.com New Forum Link
masmforum WebSite

Why my program slow?

Started by vasant, November 16, 2005, 12:00:54 AM

Previous topic - Next topic

vasant



.MODEL SMALL
INCLUDE MACRO.MAC
.stack 100h
.data
text_1  db 'Put number:$'
text_2  db 'Try again Yes/No or Select new Base (Y/N/B):$'
text_3  db 'Output:$'
error_basein   db 'Error basein$'
error_baseout  db 'Error baseout$'
data    db ?
basein  db ?
baseout db ?
TEXT_11  DB 'Base of input-number  : $'
TEXT_12  DB 'Base of output-number : $'
TEXT_10  DB 'Select base',0ah,0dh,
           '1) base2',0ah,0dh,
           '2) base10',0ah,0dh,
           '3) base16','$'
Num_16 db '0123456789ABCDEF'
Num_10 db '01234567890'

.code
main    proc
        mov ax,@data
        mov ds,ax
        mov es,ax
m1:
        call base
        mov bl,basein
        LN
        Writeln text_1
        cmp bl,1
        jne m2
        call in_2
        jmp e1
m2:     cmp bl,2
        jne m3
        call in_10
        jmp e1
m3:     call in_16
e1:
        LN
        Writeln TEXT_3
        DOS
main    endp
;---------------------------------------------------------------
BASE    PROC NEAR
        WRITELN TEXT_10
        LN
        WRITELN TEXT_11
A1:     MOV AH,8
        INT 21H
        CMP AL,'1'
        JE A2
        CMP AL,'2'
        JE A2
        CMP AL,'3'
        JE A2
        JMP A1
A2:     
        SHOW
        SUB AL,30H
        MOV basein,AL
        LN
        WRITELN TEXT_10
        LN
        WRITELN TEXT_12
A3:     MOV AH,8
        INT 21H
        CMP AL,'1'
        JE A4
        CMP AL,'2'
        JE A4
        CMP AL,'3'
        JE A4
        JMP A3
A4:     SHOW
        SUB AL,30H
        MOV baseout,AL
        RET
BASE    ENDP
;----------------------------------------------------------------------
in_2    proc
        mov cx,8   ;count loop
        mov bx,0   ;store data
b1:     mov ah,8
        int 21h
        cmp al,'1'
        je  b2
        cmp al,'0'
        je  b2
        jmp b1
b2:     show        ;show char in al
        sub al,30h
        cmp al,1
        jne b3
        stc
        rcl bl,1
        jmp b4
b3:     clc
        rcl bl,1
b4:
        loop b1
        mov data,bl
        ret
in_2    endp
;------------------------------------------------------------------------
in_16   proc
        mov bx,0
        lea di,Num_16
        mov cx,2
b1:     mov ah,8
        int 21h
        push cx
        mov cx,16
        repne scasb  ;check char from list
        je b2
        jcxz b1
b2:     show
        cmp al,'9'
        ja b3
        sub al,30h
b3:     sub al,37h
        mov cl,4
        rol bl,cl
        mov bl,al
        pop cx
        loop b1
        mov data,bl
        ret
in_16   endp
;-------------------------------------------------------------------------
in_10   proc
        mov   bx,0
        mov   cx,2
        lea   di,Num_10
b1:     mov   ah,8
        int   21h
        push  cx
        mov   cx,10
        repne scasb
        je    b2
        jcxz  b1
b2:     show
        pop   cx
        cmp   cx,1
        jne   b3
        mov   dl,10
        mul   dl
b3:     add   bl,al
        loop  b1
        mov   data,bl
        ret
in_10   endp
;------------------------------------------------------------------------
out_2   proc
        mov  cx,8
        mov  bx,0
        mov  bl,data
        mov  ah,2
c1:     rcl  bl,1
        jc   c2
        mov  dl,'0'
        jmp  c3
c2:     mov  dl,'1'
c3:     int  21h
        loop c1
        ret
out_2   endp
;-------------------------------------------------------------------------
out_16  proc
        mov  bx,0
        mov  bl,data
        mov  cl,4
        rol  bx,cl
        ror  bl,cl
        HEX  bh
        HEX  bl
        mov  ah,2
        mov  dl,bh
        int  21h
        mov  dl,bl
        int  21h
        ret
out_16  endp
;-------------------------------------------------------------------------
out_10  proc
        mov  al,data
        mov  bl,10
        div  bl
        mov  bh,ah      ;remender
        mov  ah,2
        mov  dl,al
        int  21h
        mov  dl,bh
        int  21h
        ret
out_10  endp
end
{MACRO}

AGAIN MACRO
Local start,A1,END_AGAIN,Lowercase
   
A1:     Mov ah,8
        Int 21H
        cmp al,0dh      ;ENTER?
        je END_AGAIN
        cmp al,'y'      ;AL = Y or y
        je END_AGAIN
        cmp al,'Y'
        je Lowercase
        cmp al,'n'
        je END_AGAIN
        cmp al,'N'
        je Lowercase
        cmp al,'b'
        je END_AGAIN
        cmp al,'B'
        je Lowercase
        jmp A1
Lowercase: add al,20h
END_AGAIN:
                ENDM
;--------------------------------------------------------------------
HEX Macro DATA
Local higher,END_CHA
        cmp data,9
        ja higher
        add data,30h
        jmp END_CHA
Higher: add DATA,37H
END_CHA:
        ENDM
;--------------------------------------------------------------------
DOS MACRO
        Mov AH,4ch
        INT 21H
        ENDM
;--------------------------------------------------------------------
WRITELN MACRO DATA
        MOV AH,9
        LEA DX,DATA
        INT 21H
        ENDM
;---------------------------------------------------------------------
SHOW    MACRO
        MOV AH,2
        MOV DL,AL
        INT 21H
        ENDM
;-----------------------------------------------------------------------
LN      macro
        mov ah,2
        mov dl,0DH
        int 21
        mov dl,0AH
        int 21
        endm
;_______________________________________________________________________



vasant

I use masm 6.15 and link 5.3 .

HosAh

what compiler did u use?
                                                                          just chill :wink

HosAh

Quote from: Hpin on November 23, 2005, 08:50:37 PM
what compiler did u use?
                                                                          just chill :wink

because i read somewhere on the net related to that , inform me also i'm intrested :U

vasant