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 <stdio.h>
#include <dos.h>
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);
}

Recommended Answers

All 9 Replies

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.

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 :)

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.

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 <stdio.h>
#include <dos.h>
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.

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 <stdio.h>
#include <dos.h>
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.

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

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.

how convert masm program into tasm program

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

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.