.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
;_______________________________________________________________________
I use masm 6.15 and link 5.3 .
what compiler did u use?
just chill :wink
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
Masm 6.15