954,479 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

c program convert to tasm

Hello everyone, Im new in assembly language. I would like to ask your help to teach me how to convert the below C language into tasm language. thank you very much.

#include
#include
main()
{
unsigned int year;
unsigned char month;
unsigned char day;
union REGS regin,regout;

clrscr();
regin.h.ah=0x2A;
/* intdos(&regin,&regout);*/ int86(0x21,&regin,&regout);
day=regout.h.dh;
year=regout.x.cx;
printf("Today's date is: %d-%d-%d\n",month,day,year);
return(0);
}

faith07
Newbie Poster
1 post since Feb 2007
Reputation Points: 10
Solved Threads: 0
 

I'd write an assembler program that just printed out "Hello World" first. In doing that, you'll find you've built 70% of what that date printer does.

Purple Avenger
Light Poster
49 posts since Jan 2007
Reputation Points: 31
Solved Threads: 0
 

well i think you can't use much C lang stuff with tasm.. the reason is that it uses DOS and you know that it can only program 16 bit stuff not 32-bit.. so i got the same problem but just upgraded to masm.. there's inbuilt libraries available in that. or you can work with nasm/fasm.. try any.. have a nice day! good luck :)

mytime19
Junior Poster in Training
50 posts since Dec 2006
Reputation Points: 10
Solved Threads: 3
 
well i think you can't use much C lang stuff with tasm.. the reason is that it uses DOS and you know that it can only program 16 bit stuff not 32-bit.. so i got the same problem but just upgraded to masm.. there's inbuilt libraries available in that. or you can work with nasm/fasm.. try any.. have a nice day! good luck :)

Nonsense! First, there are C compilers available for DOS. Second, TASM does support 32-bit code.

Nathan.

Evenbit
Junior Poster
140 posts since Mar 2005
Reputation Points: 99
Solved Threads: 5
 

Hello everyone, Im new in assembly language. I would like to ask your help to teach me how to convert the below C language into tasm language. thank you very much.

#include #include main() { unsigned int year; unsigned char month; unsigned char day; union REGS regin,regout;

clrscr(); regin.h.ah=0x2A; /* intdos(&regin,&regout);*/ int86(0x21,&regin,&regout); day=regout.h.dh; year=regout.x.cx; printf("Today's date is: %d-%d-%d\n",month,day,year); return(0); }

Simple:

mov ah, 0x2A
int 0x21

You should find the 'day' in DH and the 'year' in CX.

Nathan.

Evenbit
Junior Poster
140 posts since Mar 2005
Reputation Points: 99
Solved Threads: 5
 
Hello everyone, Im new in assembly language. I would like to ask your help to teach me how to convert the below C language into tasm language. thank you very much. #include #include main() { unsigned int year; unsigned char month; unsigned char day; union REGS regin,regout; clrscr(); regin.h.ah=0x2A; /* intdos(&regin,&regout);*/ int86(0x21,&regin,&regout); day=regout.h.dh; year=regout.x.cx; printf("Today's date is: %d-%d-%d\n",month,day,year); return(0); }





for this regarding DOS interrupt int21h u can refer any DOS or BIOS interrupt manuals, that clearly will explain u what are all the register that got affected after an interrupt in invoked. For printing the final result on the display you need to first of all convert the packed decimal value returned in any general purpose register in to proper string, just by dividing the entire decimal value by 10 and extracting the remainder to find out the character. Later u can use some other DOS int services or BIOS Display related services (int 10h) to display the actual character in the screen positioned.
-------------------------------
here is how it will look like.
-------------------------------
under data section you need to define the below mentioned things.
________________________________________________________
year dw 0
month db 0
day db 0

________________________________________________________
clrscr();
// Garni - for clearing the screen u can use any of the display set mode BIOS services.

regin.h.ah=0x2A;

// Garni - mov ah,2ah

/* intdos(&regin,&regout);*/ int86(0x21,&regin,&regout);

// Garni - int 21h

day=regout.h.dh;
// Garni - mov day,dh

year=regout.x.cx;
// Garni - mov year,cx

printf("Today's date is: %d-%d-%d\n",month,day,year);

// Garni - take care of printing the value as explained above.

return(0);

// Garni - for terminating the exe and for telling DOS the exe statsu we have another DOS service, refer to DOS and BIOS interrupt service manuals.

Garni
Newbie Poster
8 posts since Feb 2007
Reputation Points: 10
Solved Threads: 1
 

Do we have a program which can convert C or C++ to assembly ?
Please give me a link for help me
Tanks a lot

dr.m
Newbie Poster
1 post since Aug 2007
Reputation Points: 10
Solved Threads: 0
 
Do we have a program which can convert C or C++ to assembly ? Please give me a link for help me Tanks a lot


Yes, these programs are called compilers. You can find a nice list of C and/or C++ compilers here: http://www.thefreecountry.com/compilers/cpp.shtml

Study the command-line options... most have a switch or two to allow you to specify the assembly language output.

Evenbit
Junior Poster
140 posts since Mar 2005
Reputation Points: 99
Solved Threads: 5
 

how convert masm program into tasm program

baazy
Newbie Poster
1 post since Oct 2010
Reputation Points: 10
Solved Threads: 0
 

main()
{
int i,j;
int a[10];
while(i<=9) a[i]=0;
while(j<=5) a[i]=5;
}

neha afreen
Newbie Poster
1 post since Dec 2011
Reputation Points: 10
Solved Threads: 0
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You