home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Jason Aller Floppy Collection
/
181.img
/
TASM-101.ZIP
/
MANUAL.DOC
< prev
next >
Wrap
Text File
|
1988-10-31
|
17KB
|
539 lines
TURBO ASSEMBLER 1.0: MANUAL ADDITIONS AND CORRECTIONS
-----------------------------------------------------
General note: The casing of the predefined segment symbol names
(those beginning with the at-sign (@)) are incorrect in the
manuals. The entire name should be in lowercase. This case is
significant when you assemble with the /ML option.
The correct names are
@code
@data
@fardata
@fardata?
@curseg
Turbo Assembler User's Guide
----------------------------
For your convenience, many of the examples are provided on the dis-
tribution diskettes. Consult the files listed at the bottom of the
README file for their names and the page on which the example appears.
Page
33 - In the last sentence of the first paragraph, change AX
to CX.
42 - The example at the bottom of the page should be
10000
+ 201
-----
10201
47 - In Footnote 2, remove the text in parentheses.
50 - The table in the manual does not include the 80287 and
80387 instructions. The following table describes them.
Instruction Processor Instruction Processor
------------------------------------------------------
FSETPM 287-387 FCOS 387
FPREM1 387 FPREMI 387
FSIN 387 FSINCOS 387
FUCOM 387 FUCOMP 387
FUCOMPP 387
61 - The first sentence of the second paragraph on the
page should read: "If you want to assemble multiple files,
you can separate their names with the plus sign(+):"
Remove the first example following the paragraph.
63 - The syntax description for the /b command-line
option should read, "/b."
74 - The table in the /w command-line option is missing
several items; add the following options:
RES - Reserved word warning
TPI - Turbo Pascal illegal warning
PQK - Assuming constant for [const] warning
ALN - Segment alignment
75 - At the top of the page, the first sentence should
read, "By default, Turbo Assembler first starts assembling
your file with all warnings enabled except the inefficient
code-generation (ICG) and the write-to-memory in
protected-mode (PRO) warnings.
78 - The first paragraph should say...
...Assembler, it will look for a file called TASM.CFG in
your current directory. If running on DOS 3.X or later, it
will also look in the directory that Turbo Assembler was
loaded from. If Turbo Assembler finds the file ....
85 - On the second line of the page, change "Table 4.2 on page 169"
to "Table 2.1 on page 47."
97 - The following example instructions will only work
correctly while in Ideal mode:
mov al, [100+8]
and
mov al, [108]
The equivalent instructions in MASM mode follow:
mov al, ds:[100+8]
and
mov al, ds:[108]
135 - In the first paragraph of the section titled "Named
Memory Locations," the last sentence should read, "The
LABEL directive is another handy way to name a memory
location without allocating any storage."
142 - The sentence at the end of the fourth paragraph should
read: "...;it also matters when you're converting between
data sizes and when you're executing conditional jumps."
146 - In the second paragraph, "first-in" should be "last-in."
179 - From the first sentence of the fourth paragraph, delete
this text: "...and considerably less flexible than register
passing."
188 - In the second sentence of the last paragraph on the page,
change "table" to "label."
212 - Add the following types to the table of EXTRN types in the
middle of the page:
DATAPTR A near or far data pointer depending on
the current memory model.
UNKNOWN An unknown type.
<Structure Name> The name of a user-defined STRUC type.
220 - Delete the second paragraph on the page: "You'll notice
... fields that overflow."
227 - Delete the first paragraph on this page: "You should ...
symbol table."
230 - In the last line of the second paragraph, change the word
"enabled" to "disabled."
232 - The last sentence of the first complete paragraph should
read, "Normally, fields that overflow are not truncated
(%NOTRUNC)."
241 - Add the following to the list of conditional error
directives at the bottom of the page:
.ERRE, .ERRNZ, .ERRDIFI, .ERRIDNI
283,285,287,288,290,298,302,310 - Change the case of -s and -b
to -S and -B, respectively.
290 - The second line of the last paragraph should read, "80387
processors, inline assembly that supports the 80286,
80287, 80386, and 80387."
304 - The comment in the middle of the page should be
; ?debug L 15
319 - The last line of the third paragraph should be "FILE2.ASM,
rather than in the FARDATA segment."
328 - The last sentence of the first paragraph should read,
"Another convenience is that the labels defined with ARG
are limited in scope to the procedure they're used in when
you declare them with the local label prefix (see LOCALS
in the Reference manual), so you need never worry about
.... "
446 - The second sentence of the first paragraph should read,
"For example, in the following code, when TestStruc is
created, the first byte of field A is initialized to 1 and
the first byte of field B is initialized to 2, while the
second byte of each field is initialized to 20h (a
space)."
453 - The word "bytes" in the comments for the example code
should be "bits."
455 - The second statement "jnz LoopTop" in the example code
should be "jnz ShortLoopTop."
473 - The statement "mov ax, [InitValue]" should be moved after
the statement "mov es, ax."
519 - The constant value 800000000h should have one less zero in
it: 80000000h.
522 - The constant value 100000000h should have one less zero in
it: 10000000h.
531 - The first line of the second paragraph should read, "FCOS
calculates the cosine of the ST(0) register; FSIN
calculates the sine."
543 - The last sentence of the second paragraph should read,
"The directive works the same in both modes with one
exception: SYMTYPE will not return a value for an
undefined identifier. Otherwise, this operator returns the
types of various symbols."
553 - The last two sentences of the first paragraph, the modes
Ideal and MASM are reversed. It should read, "In Ideal
mode, the PUBLIC .... In MASM mode, because ....".
580 - The second entry in the index for T should read
TASM.CFG files 78
Turbo Assembler Reference Guide
-------------------------------
Page
6 - The first paragraph on the page should read, "The
following rule applies to predefined symbols starting with
an at-sign(@): The first letter of each word that makes up
part of a symbol name is an uppercase letter, except for
segment-name aliases; the rest of the word is lowercase.
As an example,
@FileName
@WordSize
@curseg
@fardata
Change the predefined symbol entry @Code to @code and the
example should read:
mov ax,@code
mov dx,ax
ASSUME ds:@code
8 - Change the predefined symbol entry @Data to @data and the
example should read:
mov ax,@data
mov ds,ax
ASSUME ds:@data
9 - In the first sentence of the Remarks section for
@DataSize, @DataSize is set to 0 for the tiny model also.
The example for ??Date should be:
ASMDATE db ??Date
10 - Change the predefined symbol entry @FarData to @fardata and the
example should read:
mov ax,@fardata
mov ds,ax
ASSUME ds:@fardata
Change the predefined symbol entry @FarData? to @fardata? and the
example should read:
mov ax,@fardata?
mov ds,ax
ASSUME ds:@fardata?
15 - In Table 2.2, add the operator SYMTYPE at the end.
16 - Add the following sentence to the Remarks section for the
* operator: "The * operator can also be used between a
register and a constant, to support 386 addressing modes.
24 - The example for DWORD should be
call dword fptr
27 - The example for HIGH should be
; MASM and Ideal modes
Magic equ 1234h
mov cl, HIGH Magic
Ideal
; Ideal mode only
Big DD 12345678h
mov ax, [word HIGH Big] ; loads 1234h into AX
30 - The example for LOW should be
; MASM and Ideal modes
Magic equ 1234h
mov bl, LOW Magic
Ideal
; Ideal mode only
Big DD 12345678h
mov ax, [word LOW Big] ; loads 5678h into AX
31 - The example for MASK should be
stat record a:3,b:4,c:5
newstat stat <0,2,1>
mov al, newstat
and al, MASK b
mov al, MASK stat
33 - The example for NEAR should be
Ideal
proc farp far
; body of procedure
endp farp
; still in same segment
push cs
call NEAR farp
35 - The example for PROC should be
.model large
.code
Ideal
call proc Test1
proc Test1
35 - Add DATAPTR to the list of data types for the PTR
operator. Also, in MASM mode, the expression to the right
of PTR can be anything that evaluates to a constant.
39 - The last paragraph in the Remarks section for the SIZE
operator should read, "In Ideal mode, SIZE returns the
byte count within a DUP. To get the byte count of the DUP,
use LENGTH."
In the first line of the Remarks section for SMALL, change
LARGE to SMALL.
40 - Delete MASM from the Mode description of SYMTYPE.
41 - Add DATAPTR to the list of data types for the THIS
operator.
42 - The example for the .TYPE operator should be
if (.type ABC) and 3
assume ds:seg abc
mov ax, seg abc
mov ds, ax
endif
49 - In the % operator, add these lines to the end of the
second paragraph: "The evaluated expression will be
represented as a numerical string in the current RADIX.
Also, a text macro name can be specified after the %,
causing a full substitution of the text macro body for the
macro argument."
53 - Add the % directive, which is a one-line macro that uses
all current text macros as possible arguments.
59 - Add the following sentence to the end of the Remarks
section for the ALIGN directive: "ALIGN generates a
warning if the segment alignment is not strict enough."
61 - Add DATAPTR to the list of valid data types in the third
paragraph.
62 - The example for the ARG directive should be
fp PROC FAR
ARG SRC:WORD,DEST:WORD = ARGLEN
push bp
mov bp,sp
mov di,DEST
mov si,SRC
;<Procedure body>
pop bp
ret ARGLEN
fp ENDP
67 - The Syntax description for COMMENT should be
COMMENT delimiter [text]
[text]
delimiter
69 - Delete the second paragraph of the Remarks section for the
.CREF directive; .CREF is not used by default.
The third paragraph should read, "Turbo Assembler includes
cross-reference information in the listing file as well as
in a separate .XRF file."
71 - The first sentence in the Remarks section for the %CTLS
directive should say that listing-control directives are
normally *not* listed.
75 - Add DATAPTR to list of valid data types in the first
paragraph on the page.
Change the number in the first bulleted item from
4,294,967,295 to 2,147,483,647.
76 - Add DATAPTR to list of valid data types in the second
paragraph of the Remarks section for DF.
77 - The DISPLAY directive is available in both MASM and Ideal
modes.
You may use the substitute operator inside a string passed
to the DISPLAY directive. For example,
MAKE_DATA macro VALUE
display "Initializing a byte to: &VALUE&"
db VALUE
endm
79 - DP defines a far 48-bit pointer, not 32.
In DQ, change the numeric range in the first bulleted item
from -2^64+1 to 2^64-1.
81 - Add DATAPTR to list of valid data types in the first
paragraph on the page. Also, the number in the first
bulleted item on the page should be 32,767, not 65,536.
87 - The EQU directive is available in both MASM and Ideal
modes.
97 - Add the following sentence to the end of the Remarks
section for the EVEN directive: "A warning is generated
for the EVEN directive if alignment is not strict enough."
98 - Add to the Remarks section of EVENDATA: "It even-aligns by
merely advancing the location counter without emitting
data, which is useful for uninitialized segments. Also, it
gives a warning if the segment alignment isn't strict
enough."
99 - Add DATAPTR to the list of types in the Remarks section of
EXTRN. Also each argument of EXTRN accepts the same syntax
as an argument of ARG or LOCAL.
103 - Add DATAPTR to the list of types in the Remarks section of
the GLOBAL directive. Also add to the Remarks section that
each argument of GLOBAL accepts the same syntax as an
argument of EXTRN, ARG, or LOCAL.
117 - Add DATAPTR to list of valid data types in the Remarks
section for LABEL.
120 - In the middle of the page, delete the first part of the
paragraph that begins, "If you have enabled MASM51..", and
leave "You can use this alternative syntax for each
localdef."
121 - Add DATAPTR to the list of valid data types in the first
paragraph on this page.
124 - Remove the third bulleted item in the Remarks section for
the MASM51 directive. The last bulleted item should read,
"Extended model PROCs are all PUBLIC with a leading
underscore if the language is C."
125 - In the fourth line of the fourth paragraph, add the word
"DATA" between "and" and "segments." Add this phrase to
the last sentence in the same paragraph: "...if you want
16-bit segments."
128 - Add the last three lines in the example for %NEWPAGE to
MULTERRS.
129 - Delete the last three lines in the example for %NEWPAGE.
137 - You may use the substitute operator inside a string passed
to the %OUT directive. For example,
MAKE_DATA macro VALUE
%out Initializing a byte to: &VALUE&
db VALUE
endm
145 - The example for PROC should be
READLINE proc near
; Body of procedure
READLINE endp
call READLINE
146 - In the Remarks section for %PUSHLCTL, change %WCL to %INCL
and change %NOWCL to %NOINCL.
156 - The example for the STRUC directive should be
Ideal
model small
dataseg
struc B
B1 DD 0
B2 DB ?
ends
struc A
A1 DW ?
A2 DD ?
binst B <>
struc
D DB "XYZ"
E DQ 1.0
ends
ends
ainst A <>
cinst A ?
dinst A
codeseg
mov al, [ainst.binst.b2]
mov al, [ainst.d]
mov ax, [word cinst.binst.b1]
end
160 - Remove the last paragraph in the Remarks section for
%TRUNC. Note that %NOTRUNC is the default mode when Turbo
Assembler starts assembling a file.
163 - In the table of 80386 32-bit registers, remove EDS and
EES.
164 - Add the following to the list of warning identifiers:
RES - Reserved word warning
TPI - Turbo Pascal illegal warning
PQK - Assuming constant for [const] warning
ALN - Segment alignment
171 - In the section for mexpr9, add the following:
o mexpr10
173 - In the section for expr, capitalize the reserved word
"symtype."
191 - Disregard the 'NOTE.' in the middle of the page.
216 - Remove the second to last paragraph on the page, "By
default ..."