I have been trying to figure these out from the book but couldn't .Im studying correspondence so im also on my own
Thanks alot for any help !


1. if the program TEST.ASM has been designed as an EXE program , can the program TEST.OBJ be executed successfully?


2. What is the meaning of the following directive ?
PAGE 55,132


3. In a program consisting of seperately compiled modules what is the assembler's name for a reference to a label outside the current module?


4. given the following map file:

Start Stop Length Name Class
00000H 00023H 00024H _TEXT CODE
00030H 00031H 00002H _DATA DATA

if this programs code segment were loaded by DOS at absolute address 18400h , what would be the absolute addresses of the data and stack segments ?

Thanks a million !

Recommended Answers

All 3 Replies

Hi,

I left assembly a long time back. So dont remember much. May be u find following usefull but please cross verify.

4) Data segment will start at absolute address 18400H + 00030H i.e. 18430 H. I am not sure of Stack segment since its location is not given in map. My best guess would be STACK at 18440H

3). You simply can access the label by putting 2 colons instead of 1

if the program TEST.ASM has been designed as an EXE program , can the program TEST.OBJ be executed successfully
No. Object files are simply a binary image of what the compiler determined is the most appropriate interpretation of source. You must then take that/those object files and link them together. For example, I use NASM and it would look like this.

c:\>nasmw -fwin32 Test.asm
c:\>link /entry:Main /subsystem:console /machine:ix86 Test kernel32.lib user32.lib gdi32.lib

So the compiler generates Test.obj from Test.asm and the linker generates Test.exe from Test.obj.

What is the meaning of the following directive ?
PAGE 55,132
If you direct the compiler to emit an assembly listing it will put 55 lines/page and each line will be a maximum of 132 columns

In a program consisting of seperately compiled modules what is the assembler's name for a reference to a label outside the current module?

In the case of NASM, where I declare the variable I have to qualify it with
global

global ScrBuff
ScrBuff db 0

then in the other file where I want to access

extern ScrBuff

if this programs code segment were loaded by DOS at absolute address 18400h , what would be the absolute addresses of the data and stack segments ?

Generally a map files address can be treated as offsets. So all you do is add the start to your destination. I would recommend though you don't use map information as a form of coding because once you start programming in protected systems absolute addresses are somewhat irrelevant.

Thanks for the replies guys ,i've figured the answers out :)

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.