Masm32 error a2044 invalid character in file

masm32 error a2044 invalid character in file

Masm Odd Errors - posted in Programming: Hey guys I have a problem with some sprers.eu(1): error Ainvalid character in file. The ASCII character corresponding to the given hexadecimal number appeared in the source file but is an illegal character. One possible cause of this error. sprers.eu › › ML nonfatal errors AA masm32 error a2044 invalid character in file

You can watch a thematic video

How To Fix “Invalid parameter given. A valid $fileId[tmp_name] is expected” In Magento

Masm32 error a2044 invalid character in file - not

Windows下编译带CUDA 的TensorFlow (Python,cuDNN ,兼容性 - ,附编译结果下载)

基本参照我的这篇文章:《Windows下编译带CUDA (Update 1)的TensorFlow (RC0)(Python,cuDNN ,兼容性 - ,附编译结果下载)》,有些地方有所改动,重新组织一下步骤。

1. 内存要求

在8个并行任务下(默认并行数为CPU线程数),应有不小于10G的内存,否则会产生编译器堆空间不足的错误。

2. Python & Pip

首先Python需要安装一些包:six、numpy、wheel、setuptools、keras_applications和keras_preprocessing,使用管理员权限打开命令提示符:

 注意,Python路径中不能出现空格,即Windows下默认安装路径C:\Program Files\Python39会在编译时报错,因此如果装到了这个路径,需要在一个没有空格的目录下创建一个链接(不是快捷方式),用mklink命令。

3. CUDA

这里选的CUDA ,CUDA官网下载安装,没什么好说的。

4. Bazel

然后是Bazel,bazel很简单,就一个exe,需要设置环境变量给到Path下,我偷懒直接放到CUDA的bin目录下。我选的版本是。

5. MSYS2

再安装MSYS2,同样需要给msys64\usr\bin目录设置环境变量。

装好后再安装一些包,用的是pacman,由于默认源极慢极慢,所以建议国内换清华源。

进到msys64\etc\pacman.d目录下,修改三个mirrolist,分别在各自所有Server行前加一行:

sprers.eu:

sprers.eu32:

sprers.eu64:

官方教程少提了一个zip包,因此安装命令如下:

6. Visual Studio

 然后是VS,下载VS安装器,为避免麻烦,装到C盘默认路径这次我没有尝试非C盘路径,不知道找不到编译器的bug还在不在)。如果非VS用户,只需安装除必选组件外的MSVC v - VS C++ x64/x86生成工具(随便一个,我选的最新版本)和Windows 10 SDK(同样随便,我选的最新的)。

配置编译

下载TensorFlow 源码,进入解压后的根目录,执行

这版TensorFlow编译SM 会报错,查了一下貌似TensorRT不支持这么低的版本。

代码修改

出现下载依赖失败时

后续编译时,如果出现类似于这种警告:

表明谷歌相应的源码镜像失效了,理论上有备用原始地址,但不知道为什么没有启用,因此修改tensorflow\sprers.eu,对调镜像地址和原始地址(不能直接删除或注释掉镜像地址,因为要求必须至少有两个地址),比如修改SQLite地址,原始为:

 改为:

即可。

启用MKL时

从开始TensorFlow将MKL用到的OpenMP从直接下载二进制可执行文件变为了从LLVM项目下载开源代码并编译,带来了一系列问题,这里建议官网下载安装程序(Pre-Built Binaries)安装LLVM(记住安装中写入系统环境变量),作用有二:

  1. 用现成的sprers.eu和sprers.eu取代编译过程,MSVC编译LLVM的OpenMP会出错。
  2. 将LLVM用到的DLL(在LLVM安装目录\bin下)复制到msys安装目录\usr\bin下,否则在后续编译步骤中使用msys里的bash时没有复制系统环境变量的Path会报错(比如编译Lite相关内容时会报找不到api-ms-win-crt-locale-ldll的错)。

将sprers.eu放到third_party\mkl目录下,并在third_party\mkl\sprers.eu的第75行后插入:

 然后将下方Windows编译配置修改为:

将sprers.eu放到系统环境变量里。

将third_party\llvm_openmp\BUILD第74行修改为0,取消强制使用MSVC:

没有这一步会报类似于如下错误:

此外,最后链接时找不到DLL,需要将LLVM的sprers.eu放到sprers.eu同目录下,否则会出现以下错误:

启动编译

如果需要代理(bazel需要下载大量直连非常慢的资源),在命令提示符中输入:

如果C盘空间不够,可以单独指定临时文件夹位置(实测一次编译下来,临时文件夹需要50GB左右的空间):

构建pip包:

这一行编译,耗时极长。

  1. 下载的bazel会因为权限问题无法写入用户文件夹,指定另外的文件夹是比较方便的操作。
  2. 编译输出最好也指定另外的文件夹,一次编译下来会占用50GB左右的空间。
  3. 之前我说可以从GitHub提前下载bazel本体文件夹的压缩包再解压以免额外时间,即指定--distdir=D:/bazel,但现在发现可能有些包的校验码对不上,还是建议去掉这个选项在线下载。
  4. --config=mkl用于启用MKL(依赖sprers.eu),可以不写以不启用MKL。
  5. 版本的ngraph功能仍无法开启。
  6. --define=tensorflow_enable_mlir_generated_gpu_kernels=0用于关闭MLIR相关编译,否则编译会出错。
  7. --experimental_strict_action_env=false用于启用系统环境变量,以防链接时找不到DLL。

然后构建包,会在源码根目录下创建tfpy文件夹,成功后whl包就会放到这个文件夹下,文件夹名字随意:

构建C++库

执行:

即在bazel-bin\tensorflow目录下得到tensorflow_sprers.eu和tensorflow_sprers.eu。

再执行:

即在bazel-bin\tensorflow目录下得到include文件夹,里面是需要的头文件。

编译得到whl包后,由于源码中依赖包版本限制得比较死,pip安装过程中会各种报错(尤其是grpcio,TensorFlow指定的版本无法在Windows下成功编译),因此需要先去掉依赖安装TensorFlow本体:

然后再安装其依赖的包,如:

如有缺失,后续导入的时候会有明确提示。

如果启用MKL,则需要另外将sprers.eu放到系统sprers.eu同目录下(即便是虚拟环境也要放到系统的Python目录下)。

pip安装包:tensorflowcpcpwin_amdwhl(MB)

pip安装包压缩版:tensorflowcpcpwin_amdrar(MB)

C++库:tensorflow-cpprar(MB)

pip安装包(MKL):tensorflow-mklcpcpwin_amdwhl(MB)

pip安装包压缩版(MKL):tensorflow-mklcpcpwin_amdrar(MB)

C++库(MKL):tensorflow-cpp-mklrar(MB)

sprers.eu:libomp-tensorflowrar(KB)

pip安装包的压缩版,解压后再用ZIP打包,改后缀为“whl”即可正常安装。

KnowledgeBase Archive

An Archive of Early Microsoft KnowledgeBase Articles

View on GitHub

THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Copyright Microsoft Corporation

KnowledgeBase Archive is maintained by PCjs.
This page was generated by GitHub Pages.

>

1 ML Error Messages ML Fatal Errors A cannot open file: filename The assembler was unable to open a source, include, or output file. One of the following may be a cause: u The file does not exist. u The file is in use by another process. u The filename is not valid. u A read-only file with the output filename already exists. u Not enough file handles exist. In MS-DOS, increase the number of file handles by changing the FILES setting in sprers.eu to allow a larger number of open files. FILES=50 is the recommended setting. u The current drive is full. u The current directory is the root and is full. u The device cannot be written to. u The drive is not ready. A A I/O error closing file The operating system returned an error when the assembler attempted to close a file. This error can be caused by having a corrupt file system or by removing a disk before the file could be closed. I/O error writing file The assembler was unable to write to an output file. One of the following may be a cause: u The current drive is full. u The current directory is the root and is full. u The device cannot be written to. u The drive is not ready.

2 A A A A A A I/O error reading file The assembler encountered an error when trying to read a file. One of the following may be a cause: u The disk has a bad sector. u The file-access attribute is set to prevent reading. u The drive is not ready. assembler limit : macro parameter name table full Too many parameters, locals, or macro labels were defined for a macro. There was no more room in the macro name table. Define shorter or fewer names, or remove unnecessary macros. invalid command-line option: option ML did not recognize the given parameter as an option. This error is generally caused when there is a syntax error on the command line. nesting level too deep The assembler reached its nesting limit. The limit is 20 levels except where noted otherwise. One of the following was nested too deeply: u A high-level directive such sprers.eu,.repeat, sprers.eu u A structure definition u A conditional-assembly directive u A procedure definition u A PUSHCONTEXT directive (the limit is 10). u A segment definition u An include file u A macro unmatched macro nesting Either a macro was not terminated before the end of the file, or the terminating directive ENDM was found outside of a macro block. One cause of this error is omission of the dot sprers.eu sprers.eu line too long A line in a source file exceeded the limit of characters. If multiple physical lines are concatenated with the line-continuation character ( \ ), the resulting logical line is still limited to characters.

3 A unmatched block nesting : A block beginning did not have a matching end, or a block end did not have a matching beginning. One of the following may be involved: u A high-level directive such sprers.eu,.repeat, sprers.eu u A conditional-assembly directive such as IF, REPEAT, or WHILE u A structure or union definition u A procedure definition u A segment definition u A POPCONTEXT directive u A conditional-assembly directive, such as an ELSE, ELSEIF, or ENDIF without a matching IF A A A A directive must be in control block The assembler found a high-level directive where one was not expected. One of the following directives was found: sprers.eu sprers.eu sprers.eu sprers.eu sprers.eu sprers.eu sprers.eu[[cxz]] sprers.eu sprers.euue sprers.eu sprers.eu sprers.eu sprers.eu sprers.eu sprers.eu sprers.eu error count exceeds ; stopping assembly The number of nonfatal errors exceeded the assembler limit of Nonfatal errors are in the range A2xxx. When warnings are treated as errors they are included in the count. Warnings are considered errors if you use the /Wx command-line option, or if you set the Warnings Treated as Errors option in the Macro Assembler Global Options dialog box of PWB. invalid numerical command-line argument : number The argument specified with an option was not a number or was an invalid number. too many arguments There was insufficient memory to hold all of the command-line arguments. This error usually occurs while expanding input filename wildcards (* and?). To eliminate this error, assemble multiple source files separately.

4 A A A statement too complex The assembler ran out of stack space while trying to parse the specified statement. One or more of the following changes may eliminate this error: u Break the statement into several shorter statements. u Reorganize the statement to reduce the amount of parenthetical nesting. u If the statement is part of a macro, break the macro into several shorter macros. missing source filename ML could not find a file to assemble or pass to the linker. This error is generated when you give ML command-line options without specifying a filename to act upon. To assemble files that do not have sprers.eu extension, use the /Ta command-line option. This error can also be generated by invoking ML with no parameters if the ML environment variable contains command-line options. Internal Assembler Error Contact Microsoft Product Support Services The MASM driver called sprers.eu, which generated a system error. Note the circumstances of the error and notify Microsoft Corporation by following the instructions in the Microsoft Support Services section of the introduction to this book. ML Nonfatal Errors A memory operand not allowed in context A memory operand was given to an instruction that cannot take a memory operand. A A A immediate operand not allowed A constant or memory offset was given to an instruction that cannot take an immediate operand. cannot have more than one ELSE clause per IF block The assembler found an ELSE directive after an existing ELSE directive in a conditionalassembly block (IF block). Only one ELSE can be used in an IF block. An IF block begins with an IF, IFE, IFB, IFNB, IFDEF, IFNDEF, IFDIF, or IFIDN directive. There can be several ELSEIF statements in an IF block. One cause of this error is omission of an ENDIF statement from a nested IF block. extra characters after statement A directive was followed by unexpected characters.

5 A A A A symbol type conflict : identifier The EXTERNDEF or LABEL directive was used on a variable, symbol, data structure, or label that was defined in the same module but with a different type. symbol redefinition : identifier The given nonredefinable symbol was defined in two places. undefined symbol : identifier An attempt was made to use a symbol that was not defined. One of the following may have occurred: u A symbol was not defined. u A field was not a member of the specified structure. u A symbol was defined in an include file that was not included. u An external symbol was used without an EXTERN or EXTERNDEF directive. u A symbol name was misspelled. u A local code label was referenced outside of its scope. non-benign record redefinition A RECORD definition conflicted with a previous definition. One of the following occurred: u There were different numbers of fields. u There were different numbers of bits in a field. u There was a different label. u There were different initializers. A syntax error : A token at the current location caused a syntax error. One of the following may have occurred: u A dot prefix was added to or omitted from a directive. u A reserved word (such as C or SIZE) was used as an identifier. u An instruction was used that was not available with the current processor or coprocessor selection. u A comparison run-time operator (such as ==) was used in a conditional assembly statement instead of a relational operator (such as EQ). u An instruction or directive was given too few operands. u An obsolete directive was used.

6 A A A A A A A A syntax error in expression An expression on the current line contained a syntax error. This error message may also be a side-effect of a preceding program error. invalid type expression The operand to THIS or PTR was not a valid type expression. distance invalid for word size of current segment A procedure definition or a code label defined with LABEL specified an address size that was incompatible with the current segment size. One of the following occurred: u A NEAR16 or FAR16 procedure was defined in a bit segment. u A NEAR32 or FAR32 procedure was defined in a bit segment. u A code label defined with LABEL specified FAR16 or NEAR16 in a bit segment. u A code label defined with LABEL specified FAR32 or NEAR32 in a bit segment. PROC, MACRO, or macro repeat directive must precede LOCAL A LOCAL directive must be immediately preceded by a MACRO, PROC, macro repeat directive (such as REPEAT, WHILE, or FOR), or another LOCAL sprers.eu must precede this directive A simplified segment directive or sprers.eup sprers.eu directive was not preceded by sprers.eu directive. sprers.eu directive must specify the model defaults before a simplified segment directive, or sprers.eup sprers.eu directive may be used. cannot define as public or external : identifier Only labels, procedures, and numeric equates can be made public or external using PUBLIC, EXTERN, or EXTERNDEF. Local code labels cannot be made public. segment attributes cannot change : attribute A segment was reopened with different attributes than it was opened with originally. When a SEGMENT directive opens a previously defined segment, the newly opened segment inherits the attributes the segment was defined with. expression expected The assembler expected an expression at the current location but found one of the following: u A unary operator without an operand u A binary operator without two operands u An empty pair of parentheses, ( ), or brackets, [ ]

7 A A A A A A A A A A A operator expected An expression operator was expected at the current location. One possible cause of this error is a missing comma between expressions in an expression list. invalid use of external symbol : identifier An attempt was made to compare the given external symbol using a relational operator. The comparison cannot be made because the value or address of an external symbol is not known at assembly time. operand must be RECORD type or field The operand following the WIDTH or MASK operator was not valid. The WIDTH operator takes an operand that is the name of a field or a record. The MASK operator takes an operand that is the name of a field or a record type. identifier not a record : identifier A record type was expected at the current location. record constants cannot span line breaks A record constant must be defined on one physical line. A line ended in the middle of the definition of a record constant. instruction operands must be the same size The operands to an instruction did not have the same size. instruction operand must have size At least one of the operands to an instruction must have a known size. invalid operand size for instruction The size of an operand was not valid. operands must be in same segment Relocatable operands used with a relational or minus operator were not located in the same segment. constant expected The assembler expected a constant expression at the current location. A constant expression is a numeric expression that can be resolved at assembly time. operand must be a memory expression The right operand of a PTR expression was not a memory expression. When the left operand of the PTR operator is a structure or union type, the right operand must be a memory expression.

8 A A expression must be a code address An expression evaluating to a code address was expected. One of the following occurred: u SHORT was not followed by a code address. u NEAR PTR or FAR PTR was applied to something that was not a code address. multiple base registers not allowed An attempt was made to combine two base registers in a memory expression. For example, the following expressions cause this error: In another example, given the following definition: either of the following lines causes this error:! #"$%& '( % # )&* A multiple index registers not allowed An attempt was made to combine two index registers in a memory expression. For example, the following expressions cause this error:,+,+ A must be index or base register An attempt was made to use a register that was not a base or index register in a memory expression. For example, the following expressions cause this error: # %

9 A A A A A A invalid use of register An attempt was made to use a register that was not valid for the intended use. One of the following occurred: u OFFSET was applied to a register. (OFFSET can be applied to a register under the M option.) u A special register was used in an invalid context. u A register was cast with PTR to a type of invalid size. u A register was specified as the right operand of a segment override operator (:). u A register was specified as the right operand of a binary minus operator ( ). u An attempt was made to multiply registers using the * operator. u Brackets ([ ]) were missing around a register that was added to something. invalid INVOKE argument : argument number The INVOKE directive was passed a special register, or a register pair containing a byte register or special register. These registers are illegal with INVOKE. must be in segment block One of the following was found outside of a segment block: u An instruction u A label definition u A THIS operator u A $ operator u A procedure definition u An ALIGN directive u An ORG directive DUP too complex A declaration using the DUP operator resulted in a data structure with an internal representation that was too large. too many initial values for structure: structure The given structure was defined with more initializers than the number of fields in the type declaration of the structure. statement not allowed inside structure definition A structure definition contained an invalid statement. A structure cannot contain instructions, labels, procedures, control-flow directives,.startup, sprers.eu

10 A A A A A A A A missing operand for macro operator The assembler found the end of a macro s parameter list immediately after the! or % operator. line too long A source-file line exceeded the limit of characters. If multiple physical lines are concatenated with the line-continuation character ( \ ), the resulting logical line is still limited to characters. segment register not allowed in context A segment register was specified for an instruction that cannot take a segment register. string or text literal too long A string or text literal, or a macro function return value, exceeded the limit of characters. statement too complex A statement was too complex for the assembler to parse. Reduce either the number of tokens or the number of forward-referenced identifiers. identifier too long An identifier exceeded the limit of characters. invalid character in file The source file contained a character outside a comment, string, or literal that was not recognized as an operator or other legal character. missing angle bracket or brace in literal An unmatched angle bracket (either < or >) or brace (either { or }) was found in a literal constant or an initializer. One of the following occurred: u A pair of angle brackets or braces was not complete. u An angle bracket was intended to be literal, but it was not preceded by an exclamation point (!) to indicate a literal character.

11 A A A A A A missing single or double quotation mark in string An unmatched quotation mark (either ' or ") was found in a string. One of the following may have occurred: u A pair of quotation marks around a string was not complete. u A pair of quotation marks around a string was formed of one single and one double quotation mark. u A single or double quotation mark was intended to be literal, but the surrounding quotation marks were the same kind as the literal one. empty (null) string A string consisted of a delimiting pair of quotation marks and no characters within. For a string to be valid, it must contain characters. nondigit in number A number contained a character that was not in the set of characters used by the current radix (base). This error can occur if a B or D radix specifier is used when the default radix is one that includes that letter as a valid digit. syntax error in floating-point constant A floating-point constant contained an invalid character. real or BCD number not allowed A floating-point (real) number or binary coded decimal (BCD) constant was used other than as a data initializer. One of the following occurred: u A real number or a BCD was used in an expression. u A real number was used to initialize a directive other than DWORD, QWORD, or TBYTE. u A BCD was used to initialize a directive other than TBYTE. text item required A literal constant or text macro was expected. One of the following was expected: u A literal constant, which is text enclosed in < > u A text macro name u A macro function call u A % followed by a constant expression

12 A forced error The conditional-error sprers.eu sprers.eu1 was used to generate this error. A forced error : value equal to 0 The conditional-error sprers.eu was used to generate this error. A forced error : value not equal to 0 The conditional-error sprers.eu was used to generate this error. A A A A A A A A A forced error : symbol not defined The conditional-error sprers.euf was used to generate this error. forced error : symbol defined The conditional-error sprers.eu was used to generate this error. forced error : string blank The conditional-error sprers.eu was used to generate this error. forced error : string not blank The conditional-error sprers.eu was used to generate this error. forced error : strings equal The conditional-error sprers.eu sprers.eui was used to generate this error. forced error : strings not equal The conditional-error sprers.eu sprers.eui was used to generate this error. [[ELSE]]IF2/.ERR2 not allowed : single-pass assembler A directive for a two-pass assembler was found. The Microsoft Macro Assembler (MASM) is a one-pass assembler. MASM does not accept the IF2, ELSEIF2, sprers.eu2 directives. This error also occurs if an ELSE directive follows an IF1 directive. expression too complex sprers.euxz An expression used in the condition that sprers.euxz was too complex. sprers.euXZ directive can take only one expression, which can contain only == or!=. It cannot take other comparison operators or more complex expressions using operators like. can ALIGN only to power of 2 : expression The expression specified with the ALIGN directive was invalid. The ALIGN expression must be a power of 2 between 2 and , and must be less than or equal to the alignment of the current segment, structure, or union. A structure alignment must be 1, 2, or 4 The alignment specified in a structure definition was invalid.

13 A A A A A A A A A A expected : token The assembler expected the given token. incompatible CPU mode and segment size An attempt was made to open a segment with a USE16, USE32, or FLAT attribute that was not compatible with the specified CPU, or to change to a bit CPU while in a bit segment. The USE32 and FLAT attributes must be preceded by one of the following processor directives,c,p,, orp. LOCK must be followed by a memory operation The LOCK prefix preceded an invalid instruction. No instruction can take the LOCK prefix unless one of its operands is a memory expression. instruction prefix not allowed One of the prefixes REP, REPE, REPNE, or LOCK preceded an instruction for which it was not valid. no operands allowed for this instruction One or more operands were specified with an instruction that takes no operands. invalid instruction operands One or more operands were not valid for the instruction they were specified with. initializer too large for specified size An initializer value was too large for the data area it was initializing. cannot access symbol in given segment or group: identifier The given identifier cannot be addressed from the segment or group specified. operands have different frames Two operands in an expression were in different frames. Subtraction of pointers requires the pointers to be in the same frame. Subtraction of two expressions that have different effective frames is not allowed. An effective frame is calculated from the segment, group, or segment register. cannot access label through segment registers An attempt was made to access a label through a segment register that was not assumed to its segment or group.

14 A A A A A A A A jump destination too far [: by 'n' bytes] The destination specified with a jump instruction was too far from the instruction. One of the following may be a solution: u Enable the LJMP option. u Remove the SHORT operator. If SHORT has forced a jump that is too far, n is the number of bytes out of range. u Rearrange code so that the jump is no longer out of range. jump destination must specify a label A direct jump s destination must be relative to a code label. instruction does not allow NEAR indirect addressing A conditional jump or loop cannot take a memory operand. It must be given a relative address or label. instruction does not allow FAR indirect addressing A conditional jump or loop cannot take a memory operand. It must be given a relative address or label. instruction does not allow FAR direct addressing A conditional jump or loop cannot be to a different segment or group. jump distance not possible in current CPU mode A distance was specified with a jump instruction that was incompatible with the current processor mode. For example, bit jumps require or above. missing operand after unary operator An operator required an operand, but no operand followed. cannot mix and bit registers An address expression contained both and bit registers. For example, the following expression causes this error: A A invalid scale value A register scale was specified that was not 1, 2, 4, or 8. constant value too large A constant was specified that was too big for the context in which it was used.

15 A A instruction or register not accepted in current CPU mode An attempt was made to use an instruction, register, or keyword that was not valid for the current processor mode. For example, bit registers require or above. Control registers such as CR0 require privileged modep or above. This error will also be generated for the NEAR32, FAR32, and FLAT keywords, which require or above. reserved word expected One or more items in the list specified with a NOKEYWORD option were not recognized as reserved words. A instruction form requires / An instruction was used that was not compatible with the current processor mode. One of the following processor directives must precede the instruction,c,p,, orp. A A END directive required at end of file The assembler reached the end of the main source file and did not find sprers.eu directive. too many bits in RECORD : identifier One of the following occurred: u Too many bits were defined for the given record field. u Too many total bits were defined for the given record. The size limit for a record or a field in a record is 16 bits when doing bit arithmetic or 32 bits when doing bit arithmetic. A A A positive value expected A positive value was not found in one of the following situations: u The starting position specified for SUBSTR u The number of data objects specified for COMM u The element size specified for COMM index value past end of string An index value exceeded the length of the string it referred to when used with INSTR, count must be positive or zero The operand specified to the SUBSTR macro function, SHL operator, SHR operator, or DUP operator was negative.

16 A A A A A A A A count value too large The length argument specified for SUBSTR exceeded the length of the specified string. operand must be relocatable An operand was not relative to a label. One of the following occurred: u An operand specified with the END directive was not relative to a label. u An operand to the SEG operator was not relative to a label. u The right operand to the minus operator was relative to a label, but the left operand was not. u The operands to a relational operator were either not both integer constants or not both memory operands. Relational operators can take operands that are both addresses or both non-addresses but not one of each. constant or relocatable label expected The operand specified must be a constant expression or a memory offset. segment, group, or segment register expected A segment or group was expected but was not found. One of the following occurred: u The left operand specified with the segment override operator (:) was not a segment register (CS, DS, SS, ES, FS, or GS), group name, segment name, or segment expression. u The ASSUME directive was given a segment register without a valid segment address, segment register, group, or the special FLAT group. segment expected : identifier The GROUP directive was given an identifier that was not a defined segment. invalid operand for OFFSET The expression following the OFFSET operator must be a memory expression or an immediate expression. invalid use of external absolute An attempt was made to subtract a constant defined in another module from an expression. You can avoid this error by placing constants in include files rather than making them external. segment or group not allowed An attempt was made to use a segment or group in a way that was not valid. Segments or groups cannot be added.

17 A A A A A A A A A A A A cannot add two relocatable labels An attempt was made to add two expressions that were both relative to a label. cannot add memory expression and code label An attempt was made to add a code label to a memory expression. segment exceeds 64K limit A bit segment exceeded the size limit of 64K. invalid type for data declaration : type The given type was not valid for a data declaration. HIGH and LOW require immediate operands The operand specified with either the HIGH or the LOW operator was not an immediate expression. cannot have implicit far jump or call to near label An attempt was made to make an implicit far jump or call to a near label in another segment. use of register assumed to ERROR An attempt was made to use a register that had been assumed to ERROR with the ASSUME directive. only white space or comment can follow backslash A character other than a semicolon (;) or a white-space character (spaces or TAB characters) was found after a line-continuation character ( \ ). COMMENT delimiter expected A delimiter character was not specified for a COMMENT directive. The delimiter character is specified by the first character that is not white space (spaces or TAB characters) after the COMMENT directive. The comment consists of all text following the delimiter until the end of the line containing the next appearance of the delimiter. conflicting parameter definition A procedure defined with the PROC directive did not match its prototype as defined with the PROTO directive. PROC and prototype calling conventions conflict A procedure was defined in a prototype (using the PROTO, EXTERNDEF, or EXTERN directive), but the calling convention did not match the corresponding PROC directive. invalid radix tag The specified radix was not a number in the range 2

18 A A A A A A A A A INVOKE argument type mismatch : argument number The type of the arguments passed using the INVOKE directive did not match the type of the parameters in the prototype of the procedure being invoked. invalid coprocessor register The coprocessor index specified was negative or greater than 7. instructions and initialized data not allowed in AT segments An instruction or initialized data was found in a segment defined with the AT attribute. Data in AT segments must be declared with the? initializer. /AT option requires TINY memory model The /AT option was specified on the assembler command line, but the program being assembled did not specify the TINY memory model with sprers.eu directive. This error is only generated for modules that specify a start address or use sprers.eup directive. cannot have segment address references with TINY model An attempt was made to reference a segment in a TINY model program. All TINY model code and data must be accessed with NEAR addresses. language type must be specified A procedure definition or prototype was not given a language type. A language type must be declared in each procedure definition or prototype if a default language type is not specified. A default language type is set using either sprers.eu directive, OPTION LANG, or the ML command-line options /Gc or /Gd. PROLOGUE must be macro function The identifier specified with the OPTION PROLOGUE directive was not recognized as a defined macro function. The user-defined prologue must be a macro function that returns the number of bytes needed for local variables and any extra space needed for the macro function. EPILOGUE must be macro procedure The identifier specified with the OPTION EPILOGUE directive was not recognized as a defined macro procedure. The user-defined epilogue macro cannot return a value. alternate identifier not allowed with EXTERNDEF An attempt was made to specify an alternate identifier with an EXTERNDEF directive. You can specify an optional alternate identifier with the EXTERN directive but not with EXTERNDEF.

19 A A A A A A A A A A text macro nesting level too deep A text macro was nested too deeply. The nesting limit for text macros is missing macro argument A required or a user-defined macro was not specified. EXITM used inconsistently The EXITM directive was used both with and without a return value in the same macro. A macro procedure returns a value; a macro function does not. macro function argument list too long There were too many characters in a macro function s argument list. This error applies also to a prologue macro function called implicitly by the PROC directive. VARARG parameter must be last parameter A parameter other than the last one was given the VARARG attribute. The :VARARG specification can be applied only to the last parameter in a parameter list for macro and procedure definitions and prototypes. You cannot use multiple :VARARG specifications in a macro. VARARG parameter not allowed with LOCAL An attempt was made to specify :VARARG as the type in a procedure s LOCAL declaration. VARARG parameter requires C calling convention A VARARG parameter was specified in a procedure definition or prototype, but the C, SYSCALL, or STDCALL calling convention was not specified. ORG needs a constant or local offset The expression specified with the ORG directive was not valid. ORG requires an immediate expression with no reference to an external label or to a label outside the current segment. register value overwritten by INVOKE A register was passed as an argument to a procedure, but the code generated by INVOKE to pass other arguments destroyed the contents of the register. The AX, AL, AH, EAX, DX, DL, DH, and EDX registers may be used by the assembler to perform data conversion. Use a different register. structure too large to pass with INVOKE : argument number An attempt was made with INVOKE to pass a structure that exceeded bytes. Pass structures by reference if they are larger than bytes.

20 A A A A A A A A A A A too many arguments to INVOKE The number of arguments passed using the INVOKE directive exceeded the number of parameters in the prototype for the procedure being invoked. too few arguments to INVOKE The number of arguments passed using the INVOKE directive was fewer than the number of required parameters specified in the prototype for the procedure being invoked. invalid data initializer The initializer list for a data definition was invalid. This error can be caused by using the R radix override with too few digits. RET operand too large The operand specified to RET, RETN, or RETF exceeded two bytes. too many operands to instruction Too many operands were specified with a string control instruction. cannot have more than sprers.eu clause sprers.eu block The assembler found more than sprers.eu clause within the sprers.eu block. sprers.eu for all but the last block. expected data label The LENGTHOF, SIZEOF, LENGTH, or SIZE operator was applied to a non-data label, or the SIZEOF or SIZE operator was applied to a type. cannot nest procedures An attempt was made to nest a procedure containing a parameter, local variable, USES clause, or a statement that generated a new segment or group. EXPORT must be FAR : procedure The given procedure was given EXPORT visibility and NEAR distance. All EXPORT procedures must be FAR. The default visibility may have been set with the OPTION PROC:EXPORT statement or the SMALL or COMPACT memory models. procedure declared with two visibility attributes : procedure The given procedure was given conflicting visibilities. A procedure was declared with two different visibilities (PUBLIC, PRIVATE, or EXPORT). The PROC and PROTO statements for a procedure must have the same visibility. macro label not defined : macrolabel The given macro label was not found. A macro label is defined with :macrolabel.

21 A A A A A A A A invalid symbol type in expression : identifier The given identifier was used in an expression in which it was not valid. For example, a macro procedure name is not allowed in an expression. byte register cannot be first operand A byte register was specified to an instruction that cannot take it as the first operand. word register cannot be first operand A word register was specified to an instruction that cannot take it as the first operand. special register cannot be first operand A special register was specified to an instruction that cannot take it as the first operand. coprocessor register cannot be first operand A coprocessor (stack) register was specified to an instruction that cannot take it as the first operand. cannot change size of expression computations An attempt was made to set the expression word size when the size had been already set using the EXPR16, EXPR32, SEGMENT:USE32, or SEGMENT:FLAT option or the or higher processor selection directive. syntax error in control-flow directive The condition for a control-flow directive (such sprers.eu sprers.eu) contained a syntax error. cannot use bit register with a bit address An attempt was made to mix bit and bit offsets in an expression. Use a bit register with a symbol defined in a bit segment. For example, if is defined in a bit segment, the following causes this error: A A constant value out of range An invalid value was specified for the PAGE directive. The first parameter of the PAGE directive can be either 0 or a value in the range The second parameter of the PAGE directive can be either 0 or a value in the range missing right parenthesis A right parenthesis, ), was missing from a macro function call. Be sure that parentheses are in pairs if nested.

22 A type is wrong size for register An attempt was made to assume a general-purpose register to a type with a different size than the register. For example, the following pair of statements causes this error: ) + + % *%+ & ##% A A A A A A A A structure cannot be instanced An attempt was made to create an instance of a structure when there were no fields or data defined in the structure definition or when ORG was used in the structure definition. non-benign structure redefinition : label incorrect A label given in a structure redefinition either did not exist in the original definition or was out of order in the redefinition. non-benign structure redefinition : too few labels Not enough members were defined in a structure redefinition. OLDSTRUCT/NOOLDSTRUCT state cannot be changed Once the OLDSTRUCTS or NOOLDSTRUCTS option has been specified and a structure has been defined, the structure scoping cannot be altered or respecified in the same module. non-benign structure redefinition : incorrect initializers A STRUCT or UNION was redefined with a different initializer value. When structures and unions are defined more than once, the definitions must be identical. This error can be caused by using a variable as an initializer and having the value of the variable change between definitions. non-benign structure redefinition : too few initializers A STRUCT or UNION was redefined with too few initializers. When structures and unions are defined more than once, the definitions must be identical. non-benign structure redefinition : label has incorrect offset The offset of a label in a redefined STRUCT or UNION differs from the original definition. When structures and unions are defined more than once, the definitions must be identical. This error can be caused by a missing member or by a member that has a different size than in its original definition. structure field expected The righthand side of a dot operator (.) is not a structure field. This error may occur with some code acceptable to previous versions of the assembler. To enable the old behavior, use OPTION OLDSTRUCTS, which is automatically enabled by OPTION M or the /Zm command-line option.

23 A A A A A A A A A unexpected literal found in expression A literal was found where an expression was expected. One of the following may have occurred: u A literal was used as an initializer u A record tag was omitted from a record constant divide by zero in expression An expression contains a divisor whose value is equal to zero. Check that the syntax of the expression is correct and that the divisor (whether constant or variable) is correctly initialized. directive must appear inside a macro A GOTO or EXITM directive was found outside the body of a macro. cannot expand macro function A syntax error prevented the assembler from expanding the macro function. too few bits in RECORD There was an attempt to define a record field of 0 bits. macro function cannot redefine itself There was an attempt to define a macro function inside the body of a macro function with the same name. This error can also occur when a member of a chain of macros attempts to redefine a previous member of the chain. invalid qualified type An identifier was encountered in a qualified type that was not a type, structure, record, union, or prototype. floating point initializer on an integer variable An attempt was made to use a floating-point initializer with DWORD, QWORD, or TBYTE. Only integer initializers are allowed. nested structure improperly initialized The nested structure initialization could not be resolved. This error can be caused by using different beginning and ending delimiters in a nested structure initialization.

24 A A A A A A A A invalid use of FLAT There was an ambiguous reference to FLAT as a group. This error is generated when there is a reference to FLAT instead of a FLAT subgroup. For example,! #" # )& +! #" # )& structure improperly initialized There was an error in a structure initializer. One of the following occurred: u The initializer is not a valid expression. u The initializer is an invalid DUP statement. improper list initialization In a structure, there was an attempt to initialize a list of items with a value or list of values of the wrong size. initializer must be a string or single item There was an attempt to initialize a structure element with something other than a single item or string. This error can be caused by omitting braces ({ }) around an initializer. initializer must be a single item There was an attempt to initialize a structure element with something other than a single item. This error can be caused by omitting braces ({ }) around an initializer. initializer must be a single byte There was an attempt to initialize a structure element of byte size with something other than a single byte. improper use of list initializer The assembler did not expect an opening brace ({) at this point. improper literal initialization A literal structure initializer was not properly delimited. This error can be caused by missing angle brackets (< >) or braces ({ }) around an initializer or by extra characters after the end of an initializer.

25 A A extra characters in literal initialization A literal structure initializer was not properly delimited. One of the following may have occurred: u There were missing or mismatched angle brackets (< >) or braces ({ }) around an initializer. u There were extra characters after the end of an initializer. u There was a syntax error in the structure initialization. must use floating point initializer A variable declared with the REAL4, REAL8, and REAL10 directives must be initialized with a floating-point number or a question mark (?). This error can be caused by giving an initializer in integer form (such as 18) instead of in floating-point form (). A cannot sprers.eu for OS_OS2 with The INVOKE generated by sprers.eu statement under OS_OS2 requires the (or higher) directive, since it must be able to use the PUSH instruction to push immediates directly. A A A A A A invalid combination with segment alignment The alignment specified by the ALIGN or EVEN directive was greater than the current segment alignment as specified by the SEGMENT directive. INVOKE requires prototype for procedure The INVOKE directive must be preceded by a PROTO statement for the procedure being called. When using INVOKE with an address rather than an explicit procedure name, you must precede the address with a pointer to the prototype. cannot include structure in self You cannot reference a structure recursively (inside its own definition). symbol language attribute conflict Two declarations for the same symbol have conflicting language attributes (such as C and PASCAL). The attributes should be identical or compatible. non-benign COMM redefinition A variable was redefined with the COMM directive to a different language type, distance, size, or instance count. Multiple COMM definitions of a variable must be identical. COMM variable exceeds 64K A variable declared with the COMM directive in a bit segment was greater than 64K.

26 A A A A A A A A A A parameter or local cannot have void type The assembler attempted to create an argument or create a local without a type. This error can be caused by declaring or passing a symbol followed by a colon without specifying a type or by using a user-defined type defined as void. cannot use TINY model with OS_OS2 sprers.eu statement specified the TINY memory model and the OS_OS2 operating system. The tiny memory model is not allowed under OS/2. expression size must be bits There was an attempt to use the bit expression evaluator in a bit segment. In a bit segment (USE32 or FLAT), you cannot use the default bit expression evaluator (OPTION EXPR16)sprers.eu does not work with bit segments sprers.eu directive cannot be used in a bit segment; it is valid only when generating bit sprers.eup does not work with bit segments sprers.euP directive cannot be used in a bit segment; it is valid only when generating bit code. ORG directive not allowed in unions The ORG directive is not valid inside a UNION definition. You can use the ORG directive inside STRUCT definitions, but it is meaningless inside a UNION. scope state cannot be changed Both OPTION SCOPED and OPTION NOSCOPED statements occurred in a module. You cannot switch scoping behavior in a module. This error may be caused by an OPTION SCOPED or OPTION NOSCOPED statement in an include file. illegal use of segment register You cannot use segment overrides for the FS or GS segment registers when generating floating-point emulation instructions with the /FPi command-line option or OPTION EMULATOR. cannot declare scoped code label as PUBLIC A code label defined with the label: syntax was declared PUBLIC. Use the label:: syntax, the LABEL directive, or OPTION NOSCOPED to eliminate this sprers.eut directive is obsolete : ignored The Microsoft Binary Format is no longer supported. You should convert your code to the IEEE numeric standard, which is used in the 80xseries coprocessors.

27 A A ESC instruction is obsolete : ignored The ESC (Escape) instruction is no longer supported. All numeric coprocessor instructions are now supported directly by the assembler. missing operator in expression An expression cannot be evaluated because it is missing an operator. This error message may also be a side-effect of a preceding program error. The following line will generate this error: " % A missing right parenthesis in expression An expression cannot be evaluated because it is missing a right (closing) parenthesis. This error message may also be a side-effect of a preceding program error. The following line will generate this error: " % A missing left parenthesis in expression An expression cannot be evaluated because it is missing a left (opening) parenthesis. This error message may also be a side-effect of a preceding program error. The following line will generate this error: " % A A reference to forward macro redefinition A macro cannot be accessed because it has not been yet defined. Move the macro definition ahead of all references to the macro. cannot run sprers.eu The MASM driver could not spawn sprers.eu One of the following may have occurred: u sprers.eu was not in the path. u The READ attribute was not set on sprers.eu u There was not enough memory. ML Warnings A cannot modify READONLY segment An attempt was made to modify an operand in a segment marked with the READONLY attribute.

28 A A A A A A non-unique STRUCT/UNION field used without qualification A STRUCT or UNION field can be referenced without qualification only if it has a unique identifier. This conflict can be resolved either by renaming one of the structure fields to make it unique or by fully specifying both field references. The NONUNIQUE keyword requires that all references to the elements of a STRUCT or UNION be fully specified. start address on END directive ignored sprers.eup sprers.euP and a program load address (optional with the END directive) were specified. The address specification with the END directive was ignored. cannot ASSUME CS An attempt was made to assume a value for the CS register. CS is always set to the current segment or group. unknown default prologue argument An unknown argument was passed to the default prologue. The default prologue understands only the FORCEFRAME and LOADDS arguments. too many arguments in macro call There were more arguments given in the macro call than there were parameters in the macro definition. option untranslated, directive required : option There is no ML command-line equivalent for the given MASM option. The desired behavior can be obtained by using a directive in the source file. Option Directive /sprers.eu /P OPTION READONLY /sprers.eu A A A invalid command-line option value, default is used : option The value specified with the given option was not valid. The option was ignored, and the default was assumed. insufficient memory for /EP : /EP ignored There is not enough memory to generate a first-pass listing. expected '>' on text literal A macro was called with a text literal argument that was missing a closing angle bracket.

29 A A A A A sprers.eu directives found :.MODEL ignored More than sprers.eu directive was found in the current module. Only the sprers.eu statement is used. line number information for segment without class 'CODE' There were instructions in a segment that did not have a class name that ends with CODE. The assembler did not generate CodeView information for these instructions. CodeView cannot process modules with code in segments with class names that do not end with CODE. instructions and initialized data not supported in AT segments An instruction or initialized data was found in a segment defined with the AT attribute. The code or data will not be loaded at run time. Data in AT segments must be declared with the? initializer. cannot open file: filename The given filename could not be in the current path. Make sure that filename was copied from the distribution disks and is in the current path. label defined but not referenced A jump target was defined with the label, but the target was not used by a jump instruction. One common cause of this error is insertion of an extra label between the jump and the label that the jump originally referred to. A expression expected, assume value 0 A There was an IF, ELSEIF, IFE, IFNE, ELSEIFE, or ELSEIFNE directive without an expression to evaluate. The assembler assumes a 0 for the comparison expression. externdef previously assumed to be external The OPATTR sprers.eu operator was applied to a symbol after the symbol was used in an EXTERNDEF statement but before it was declared. These operators were used on a line where the assembler assumed that the symbol was external. A A length of symbol previously assumed to be different The LENGTHOF, LENGTH, SIZEOF, or SIZE operator was applied to a symbol after the symbol was used in an EXTERNDEF statement but before it was declared. These operators were used on a line where the assembler assumed that the symbol had a different length and size. symbol previously assumed to not be in a group A symbol was used in an EXTERNDEF statement outside of a segment and then was declared inside a segment.

View more


\***************************************************/



Sun, 29 Jun GMT 

Randall Hyd
#4 / 15

 Hello World?

Well, the problem here is that this is an HLA (high level assembly)
program and you're trying to assemble with with the wrong tool.
HLA requires its own compiler that translates this code into MASM
compatible code that it then assembles with MASM.
You can download HLA from sprers.eu
Once you get the executables and place them in an appropriate spot
(e.g., in your PATH), you can compile this program
by typing:

hla helloworld

HLA will do the rest (including "assembling" it with MASM).
Randy Hyde
p.s., despite what the other posts claim, this *is* an assembly
language program, not Pascal.  The fact that it looks like
Pascal is one of the better attributes of HLA.

Quote:

> I can not get this program to compile by pressing build all or assemble
> asm file as seen in AoA:

> program helloWorld;
> #include( "sprers.eu" );

> begin helloWorld;

>     sprers.eu( "Hello, World of Assembly Language", nl );

> end helloWorld

> arr cant figure out how to attach files in deja so heres some of the
> errors i get
>  Assembling: C:\masm32\programs\sprers.eu
> C:\masm32\programs\sprers.eu(1) : error A syntax error :
> program
> C:\masm32\programs\sprers.eu(2) : error A invalid character
> in file
> C:\masm32\programs\sprers.eu(3) : error A invalid character
> in file
> C:\masm32\programs\sprers.eu(4) : error A invalid character
> in file
> C:\masm32\programs\sprers.eu(5) : error A invalid character
> in file
> C:\masm32\programs\sprers.eu(6) : error A invalid character
> in file
> C:\masm32\programs\sprers.eu(7) : error A invalid character
> in file
> C:\masm32\programs\sprers.eu(8) : error A invalid character
> in file
> C:\masm32\programs\sprers.eu(9) : error A invalid character
> in file

> etcetc

> Sent via sprers.eu
> sprers.eu



Mon, 30 Jun GMT 

her..
#5 / 15

 Hello World?

oops again im using HLA

Sent via sprers.eu
sprers.eu



Mon, 30 Jun GMT 

her..
#6 / 15

 Hello World?

oops hehe

Sent via sprers.eu
sprers.eu



Mon, 30 Jun GMT 

her..
#7 / 15

 Hello World?

ok now im getting

C:\hla>hla helloworld
Error in file "sprers.eu" at line 2 [errid/sprers.eu]:
Could not open include file "sprers.eu".
Near: << ) >>

Error in file "sprers.eu" at line 6 [errid/sprers.eu]:
Expected ':', encountered '.'.
Near: << . >>

Bad command or file name
Bad command or file name

whats wrong? my code is as follows

program helloWorld;
#include( "sprers.eu" );

begin helloWorld;

    sprers.eu( "Hello, World of Assembly Language", nl );

end helloWorld

i ran sprers.eu
i don't understand

Quote:

> Well, the problem here is that this is an HLA (high level assembly)
> program and you're trying to assemble with with the wrong tool.
> HLA requires its own compiler that translates this code into MASM
> compatible code that it then assembles with MASM.
> You can download HLA from sprers.eu
> Once you get the executables and place them in an appropriate spot
> (e.g., in your PATH), you can compile this program
> by typing:

> hla helloworld

> HLA will do the rest (including "assembling" it with MASM).
> Randy Hyde
> p.s., despite what the other posts claim, this *is* an assembly
> language program, not Pascal.  The fact that it looks like
> Pascal is one of the better attributes of HLA.

> > I can not get this program to compile by pressing build all or
assemble
> > asm file as seen in AoA:

> > program helloWorld;
> > #include( "sprers.eu" );

> > begin helloWorld;

> >     sprers.eu( "Hello, World of Assembly Language", nl );

> > end helloWorld

> > arr cant figure out how to attach files in deja so heres some of the
> > errors i get
> >  Assembling: C:\masm32\programs\sprers.eu
> > C:\masm32\programs\sprers.eu(1) : error A syntax error :
> > program
> > C:\masm32\programs\sprers.eu(2) : error A invalid
character
> > in file
> > C:\masm32\programs\sprers.eu(3) : error A invalid
character
> > in file
> > C:\masm32\programs\sprers.eu(4) : error A invalid
character
> > in file
> > C:\masm32\programs\sprers.eu(5) : error A invalid
character
> > in file
> > C:\masm32\programs\sprers.eu(6) : error A invalid
character
> > in file
> > C:\masm32\programs\sprers.eu(7) : error A invalid
character
> > in file
> > C:\masm32\programs\sprers.eu(8) : error A invalid
character
> > in file
> > C:\masm32\programs\sprers.eu(9) : error A invalid
character
> > in file

> > etcetc

> > Sent via sprers.eu
> > sprers.eu

Sent via sprers.eu
sprers.eu


Tue, 01 Jul GMT 

Randall Hyd
#8 / 15

 Hello World?

Quote:

> ok now im getting

> C:\hla>hla helloworld
> Error in file "sprers.eu" at line 2 [errid/sprers.eu]:
> Could not open include file "sprers.eu".
> Near: << ) >>

You should set the following environment variables:

set hlainc = c:\hla\include
set hlalib = c:\hla\hlalib\sprers.eu

While you're at it, you'll probably need to set up the
LIB environment variable too.

The basic problem here is that you've not set up
HLA properly.  Please see the lab exercises in
Volume One, Chapter Five for details.

You can also check on the details at
sprers.eu

Quote:

> Error in file "sprers.eu" at line 6 [errid/sprers.eu]:
> Expected ':', encountered '.'.
> Near: << . >>

> Bad command or file name
> Bad command or file name

This is a direct result of the include file failure.

Please follow the directions for HLA installation
in the URL above.  If you just execute the
SET commands I've given, the next problem
you'll encounter is that the linker can't find the
kernel32 and user32 library files.
Heck, I'll save you the trouble of going to the
URL, here's the text cut and pasted from that
document:

Running HLA
Here's what you will need in order to run HLA:

  a.. MASM or later (in particular, you will need the sprers.eu and sprers.eu
files). If you want to assemble certain Pentium Pro, Pentium II, and MMX
instructions, you will need MASM or later (an update from MASM to
MASM is available on Microsoft's Web Page).
  b.. Microsoft linker (sprers.eu) v or later, as well as all
associated DLLs needed to run the linker. This version of the linker comes
with Visual C++ It (or other compatible versions) may come with other
Microsoft products as well.
  c.. Kernellib and Userlib. These files come with Visual C++ It
(or other compatible versions) may come with other Microsoft products as
well. They are generally available as part of the Microsoft Windows SDK.
Copies of the SDK are available freely on the internet. Note: future
versions of HLA may also require sprers.eu and possibly other win32 API
library files. All of these are available from the same source.
  d.. Windows NT (HLA has not been tested on other versions of Windows,
it may or may not run under other versions of Windows; many users have
reported success with Windows 95, 98, and ).
  e.. Microsoft Library Manager (sprers.eu) v or later, as well as
all associated DLLs needed to run the linker. This version of the librarian
comes with Visual C++ It (or other compatible versions) may come with
other Microsoft products as well. This program is only required if you wish
to modify and recompile the HLA Standard Library.
  f.. sprers.eu, sprers.eu, sprers.eu, and the HLA include files (These
are part of the standard HLA distribution.
  g.. Borland C++ and appropriate tools (necessary only if you wish to
recompile sprers.eu, the HLA driver program, or sprers.eu, the HLA
compiler).

HLA was developed on the following system: MHz Pentium II, 64MBytes RAM,
4 GByte disk (ultra SCSI), etc., etc. (a high performance system a few years
ago, but a relatively mediocre one today). In general, your system should
match or exceed the HLA development system if you expect reasonable results.
Memory is probably the most important parameter. Some of my students have
reported success running HLA under Windows 95 & I have not personally
tested this yet, though that issue should be resolved soon.

HLA is a Win32 console application. Therefore, you must run HLA from a Win32
command window prompt. It is not a DOS application and will not run from a
bit DOS window. HLA is not a stand-alone application. It requires MASM
vx and a version of the Microsoft bit linker. These programs must be
in the command window execution PATH in order for HLA to execute properly 1
. Without question, the biggest problem HLA users have when attempting to
install HLA is getting the PATHs to MASM and the linker correct. If you are
having problems, copy MASM, the linker, kernellib, userlib, and other
necessary files (i.e., ERR and DLL files) to the same directory as HLA and
attempt to run the compiler from that directory. If this works, then you're
having PATH problems.

Before running the HLA compiler, should should initialize the HLALIB and
HLAINC environment variables so that they point at the directories
containing the HLA Standard Library include files and the HLA Standard
Library library file(s). From the command line prompt, you can execute
commands similar to the following to do this:

set hlalib=c:\hla\hlalib\sprers.eu
set hlainc=c:\hla\hlainc

This example, of course, assumes that you've installed the HLA system on
your C: drive in a directory named "HLA" (the typical HLA installation).

Note that Windows allows you to set up environment variables as part of
system configuration. If you set up the hlalib and hlainc environment
variables within Windows, you will not have to execute these two statements
each time you open a command window.

The HLA distribution includes a sample BATch file (sprers.eu, for "initialize
HLA") that sets up the paths for a typical system configuration. You may
want to take a look at this batch file and make any necessary modifications
to the file for your particular system. Running this batch file each time
you start up a command window to run HLA may solve a good number of your
problems. Here is an example of the contents of the sprers.eu file:

path=c:\hla;%path%
set lib=c:\hla\hlalib;%lib%
set include=c:\hla\include;%include%
set hlainc=c:\hla\include
set hlalib=c:\hla\hlalib\sprers.eu

This particular version of the sprers.eu file assumes that sprers.eu, sprers.eu,
sprers.eu, and other appropriate files are all in the c:\hla subdirectory. This
batch file also assumes that the LIB files (kernellib and userlib) are
in the c:\hla\hlalib subdirectory (along with the sprers.eu file).

Once that above is achieved, you can run the HLA compiler. The HLA compiler
consists of two executables: sprers.eu, which is a shell that processes
command line arguments, compiles HLA files to .ASM files, assembles the .ASM
files by calling MASM, and links the resulting files together using
sprers.eu; the second executable is sprers.eu which compiles a single .HLA
file to a MASM assembly language file. Generally, you would only run
sprers.eu HLAPARSE, MASM, and LINK are all automatically run by the sprers.eu
shell. The sprers.eu command uses the following syntax:

hla  optional_command_line_parameters  Filename_list

The filenames list consists of one or more unambiguous filenames having the
extension: HLA, ASM, or OBJ. HLA will first run the HLAPARSE program on all
files with the HLA extension (producing files with the same basename and an
ASM extension). Then HLA runs the MASM program on all files with the ASM
extension (including the files produced by HLAPARSE). Finally, HLA runs the
linker to combine all the OBJ files together (including the OBJ files that
MASM produces). The ultimate result, assuming there were no errors along the
way, is an executable file with an EXE extension.

HLA supports the following command line parameters:

  -s       Compile to .ASM files only.
  -c       Compile and assemble to .OBJ files only.
  -w       Compile as windows app (default is console app).
  -o name  Executable output filename.
  -d       Dump symbol table after compile.
  -?       Display this help message.
  -t       Send diagnostic info to stdout rather than stderr
            (This option is intended for HLA test/debug purposes).
  -v       Verbose compile.

The -s option tells the HLA program to run only the HLAPARSE compiler; HLA
will not run MASM or the linker. As a result, HLA ignores any ASM or OBJ
filenames you supply on the command line. This option is useful if you wish
to view the output of an HLA compilation without producing any actual object
code.

The -c option tells HLA to run the HLAPARSE compiler and the MASM assembler,
producing OBJ files. HLA will process all filenames on the command line that
have HLA or ASM extension, but it will ignore any filenames with OBJ
extensions. If you compile an HLA unit without compiling an HLA program at
the same time, you will need to use this option or the linker will complain
about not finding the main program.

The -w option informs HLA that you are compiling a standard Windows (GUI)
application rather than a console application. By default, HLA assumes that
you are compiling a executable that will run from the command window. If you
want to write a full Windows application, you will need to supply this
option to tell HLA not to link the code for console operation.

By default, HLA creates an executable filename using the extension EXE and
the basename of the first filename on the command line. You can use the -o
option to specify a different executable file name.

The -d option dumps the symbol table after compiling each file with an HLA
extension. This option is primarily intended for testing and debugging the
HLA compiler; however, this information can be useful to the HLA programmer
on occasion.

The -? option cause HLA to dump the list of command line options and
immediately quit without further work.

The -t option is intended for HLAPARSE testing and debugging purposes only.
It causes the compiler to send all error messages to the standard output
device rather than the standard error device. This allows the test code to
redirect all errors to a text file for comparison against other files.

The -v option (verbose) causes HLA to print additional information during
compile to show the progress of the compilation. Due to a bug in MASM, if
you do not specify the -v option the compilation isn't completely quiet.
MASM will still output data to the standard error device even in

read more »



Wed, 02 Jul GMT 

Ada
#9 / 15

 Hello World?

Quote:


>p.s., despite what the other posts claim, this *is* an assembly
>language program, not Pascal.  The fact that it looks like
>Pascal is one of the better attributes of HLA.

Can I be nit-picky here and suggest that this is a HLA program not an assembly
program as such

The fact that it looks like pascal may be one of the better attributes of HLA,
but it tends to make it less like asm doesn't it

Just my $

-Adam-

--
/***************************************************\
&#;&#;-!+ L-!Hello, World of Assembly Language

(wondering what are the funny characters there)
also now i find that my command history is lost. ie i cannot get the
last command run from command prompt. doskey is also not helping.
what is going on ??

what was the warning for "No stack"

i hope i am doing the right steps.

Quote:

> I put it through my TASM and got roughly the same errors and
messagesall
> that needs to be done is to prefix the "code" with a period and it
compiles
> just fine with melet me know if this doesn't work for you and I'll
have
> yet another go)

> e.g.
> model tiny
> sprers.eu
>          org     h
>  start:
>          mov     ah,09h
>          mov     dx,offset msg
>          int     21h

>          mov     ax,4c00h
>          int     21h

>          msg     db     "Hello, World of Assembly Language$"
> end start

> Hope This Helps You Out,
> Beth :)

> > hi adam
> > i tried to compile your program with tasm and it gives
> > the following errors:
> > Turbo Assembler  Version  Copyright (c) , Borland
> > Internatiol

> > Assembling file:   sprers.eu
> > **Error** sprers.eu(2) Illegal instruction
> > **Error** sprers.eu(6) Code or data emission to undeclared segment
> > **Error** sprers.eu(7) Code or data emission to undeclared segment
> > **Error** sprers.eu(8) Code or data emission to undeclared segment
> > **Error** sprers.eu(10) Code or data emission to undeclared segment
> > **Error** sprers.eu(11) Code or data emission to undeclared segment
> > **Error** sprers.eu(13) Code or data emission to undeclared segment
> > Error messages:    7
> > Warning messages:  None
> > Passes:            1

Sent via sprers.eu
sprers.eu


Sun, 13 Jul GMT 

Alexei A. Frounz
#15 / 15

 Hello World?

I guess you made a wrong EXE program, e.g. wrongly converted source for a
COM program to a source for an EXE.
1. EXE doesn't require "org h" (it's only for COM)
2. in EXE you must load DS and ES with data segment value at the beginning
of the program (in COM they're already set up by DOS)
3. an EXE program requires a stack segment definition.
Try something like this:
<
code segment para public use16
assume cs:code,ds:data,es:data,ss:stack
start:
mov ax, data
mov ds, ax
mov es, ax
lea dx, msg
mov ah, 9
int 21h
mov ax, 4c00h
int 21h
code ends

data segment para public
msg db "hello world!",13,10,"$"
data ends

stack segment para public stack
db dup(?)
stack ends

end start
<

Good Luck
--
Alexei A. Frounze
alexfru [AT] chat [DOT] ru
frounze [AT] ece [DOT] rochester [DOT] edu
sprers.eu
sprers.eu
sprers.eu

Quote:

> well, i was finally able to get your program running.
> but here are the things i did , please let me know if this is
> ok and why

> your program sprers.eu at first gave the following errors

> Turbo Assembler  Version  Copyright (c) , Borland
> International

> Assembling file:   sprers.eu
> **Error** sprers.eu(12) Extra characters on line
> **Fatal** sprers.eu(14) Unexpected end of file encountered
> Error messages:    2
> Warning messages:  None
> Passes:            1
> Remaining memory:  k

> i had to put the end start as the last line

> after this tasm /zi sprers.eu gave no erors or warnings.

> THis created a sprers.eu file

> next i ran
> tlink /v hello3
> Turbo Link  Version Copyright (c) , Borland
> International

> Warning: No stack

> this created a file sprers.eu i could run this file from command
> prompt and the output looks like this

>    

Thanks for: Masm32 error a2044 invalid character in file

Masm32 error a2044 invalid character in file
SQL NETWORK INTERFACES ERROR 26 VISUAL STUDIO
Masm32 error a2044 invalid character in file
ERROR CODE 14001 3DS MAX


    "Life is defined by the ability to Die."           "Life is defined by the ability to Die."      

[sprers.eu #] Build error OpenSSL i

ThreadMatt Caswell via RT

OP reports this now working. Closing ticket. Matt __ OpenSSL Project sprers.eu Development Mailing List [email protected] Automated List Manager [email protected]

RE: [sprers.eu #] Build error OpenSSL i

ThreadMangino, Nicholas @ CSG - CSE via RT

Finally got it to build. Many thanks for all your help. -Original Message- From: Andy Polyakov psexec error code 1 RT [mailto:[email protected]] Sent: Monday, October 27, PM To: Mangino, Nicholas @ CSG - CSE Cc: [email protected] Subject: Re: [sprers.eu #] Build error OpenSSL i Followed your instructions regarding changing the target. But received different problems with the assembler. See below Y:\OpenSSL\opensslicmd /c nasm -f win64 -v 1NUL 21 Y:\OpenSSL\openssliif 1 NEQ 0 goto ml64 Y:\OpenSSL\openssliperl ms\uplink-x86_pl masm 1ms\sprers.eu Y:\OpenSSL\openssliml64 -c -Foms\sprers.eu ms\sprers.eu 'ml64' is not recognized as an internal or external command, operable program or batch file. You do need assembler. If you don't have ml64 (no, ml won't do), then just download nasm and drop it anywhere on %PATH%. Actually nasm is preferred. If in doubt, always use nasm. __ OpenSSL Project sprers.eu Development Mailing List [email protected] Automated List Manager [email protected]

RE: [sprers.eu #] Build error OpenSSL i

ThreadMangino, Nicholas @ CSG - CSE via RT

\sprers.eu() : error Aundefined symbol : rdx ms\sprers.eu() : error Aundefined symbol : r8 ms\sprers.eu() : fatal error Aerror count exceeds ; stopping assembly NMAKE : fatal error U 'C:\Program Files (x86)\Microsoft Visual Studio \VC\BIN\sprers.eu' : r eturn code '0x1' Stop. Y:\OpenSSL\openssli Any suggestions? -Original Message- From: Andy Polyakov via RT [mailto:[email protected]] Sent: Thursday, October 23, AM To: Mangino, Nicholas @ CSG - CSE Cc: [email protected] Subject: Re: [sprers.eu #] Build error OpenSSL i I am attempting to build Open SSL i on Intel 64, Windows 7, using Visual Studio Professional I configured the build with perl Configure debug-VC-WIN64I no-asm no-hw WIN64I denotes Itanium, while what you need on Windows 7 is WIN64A. ms\do_win64i complains about not finding ias but continues. Running nmake -f ms\sprers.eu generates the following errors ml /c ms\sprers.eu Microsoft (R) Macro Assembler Version Copyright (C) Microsoft Corporation. All rights reserved. Assembling: ms\sprers.eu ms\sprers.eu(1) : error claiming usb interface n900 Asyntax error :masm32 error a2044 invalid character in file. ms\sprers.eu(2) : error Ainvalid character in file ms\sprers.eu(3) : error Ainvalid character in file ms\sprers.eu(5) : error Ainvalid character in file ms\sprers.eu(6) : error Amust be in segment block ms\sprers.eu(7) : error Asyntax error :. ms\sprers.eu(8) : error Amissing angle bracket or brace in literal ms\sprers.eu(9) : error Asyntax error : loc0 ms\sprers.eu(10) : error Asyntax error :. ms\sprers.eu(11) : error Asyntax error ms\sprers.eu(12) : error Ainvalid character in file ms\sprers.eu(13) : error Asyntax error :. ms\sprers.eu(14) : error Amissing angle bracket or brace in literal ms\sprers.eu(15) : error Amissing angle bracket or brace in literal ms\sprers.eu(16) : error Amissing angle bracket or brace in literal ms\sprers.eu(17) : error Ainvalid character in file ms\sprers.eu(18) : error Amissing angle bracket or brace in literal ms\sprers.eu(19) : error Amissing angle bracket or brace in literal ms\sprers.eu() : error Amissing angle bracket or brace in literal ms\sprers.eu() : error Ainvalid character in file ms\sprers.eu() : fatal error Aerror count exceeds ; stopping assembly NMAKE : fatal error U 'C:\Program Files (x86)\Microsoft Visual Studio \VC\BIN\sprers.eu' : r eturn code '0x1' Stop. I configured for no assembler code but nmake is attempting to assemble this code. Yes, even with no-asm you need assembler to compile one little assembly module. How can I gert around this error and complete the build? You correct target. Confusion likely arouse from the fact that Intel started to use Intel 64 to denote x86_64 processors. I mean it's easy to mix IA64 and Intel __ OpenSSL Project sprers.eu Development Mailing List [email protected] Automated List Manager [email protected]

Re: [sprers.eu #] Build error OpenSSL i

ThreadAndy Polyakov via RT

Followed your instructions regarding changing the target. But received different problems with the assembler. See below Y:\OpenSSL\opensslicmd /c nasm -f win64 -v 1NUL 21 Y:\OpenSSL\openssliif 1 NEQ 0 goto ml64 Y:\OpenSSL\openssliperl ms\uplink-x86_pl masm 1ms\sprers.eu Y:\OpenSSL\openssliml64 -c -Foms\sprers.eu ms\sprers.eu 'ml64' is not recognized as an internal or external command, operable program or batch file. You do need assembler. If you don't have ml64 (no, ml won't do), then just download nasm and drop it anywhere on %PATH%, masm32 error a2044 invalid character in file. Actually nasm is preferred. If in doubt, always use nasm. __ OpenSSL Project sprers.eu Development Mailing List [email protected] Automated List Manager [email protected]

Re: [sprers.eu #] Build error OpenSSL i

ThreadAndy Polyakov via RT

I am attempting to build Open SSL i on Intel 64, Windows 7, using Visual Studio Professional I configured the build with perl Configure debug-VC-WIN64I no-asm no-hw WIN64I denotes Itanium, while what you need on Windows 7 is WIN64A. ms\do_win64i complains about not finding ias but continues. Running nmake -f ms\sprers.eu generates the following errors ml /c ms\sprers.eu Microsoft (R) Macro Assembler Version Copyright (C) Microsoft Corporation. All rights reserved. Assembling: ms\sprers.eu ms\sprers.eu(1) : error Asyntax error :. ms\sprers.eu(2) : error Ainvalid character in file ms\sprers.eu(3) : error Ainvalid character in file ms\sprers.eu(5) : error Ainvalid character in file ms\sprers.eu(6) : error Amust be in segment block ms\sprers.eu(7) : error Asyntax error masm32 error a2044 invalid character in file. ms\sprers.eu(8) : error Amissing angle bracket or brace in literal ms\sprers.eu(9) : error Asyntax error : loc0 socket error 10057 : error Asyntax masm32 error a2044 invalid character in file :. ms\sprers.eu(11) : error Asyntax error ms\sprers.eu(12) : error Ainvalid character in file ms\sprers.eu(13) : error Asyntax error :. ms\sprers.eu(14) : error Amissing angle bracket or brace in literal ms\sprers.eu(15) : error Amissing angle bracket or brace in literal ms\sprers.eu(16) : error Amissing angle bracket or brace in literal ms\sprers.eu(17) : error Ainvalid character in file ms\sprers.eu(18) : error Amissing angle bracket or brace in literal ms\sprers.eu(19) : error Amissing angle bracket or brace in literal ms\sprers.eu() : error Amissing angle bracket or brace in literal ms\sprers.eu() : error Ainvalid character in file ms\sprers.eu() : fatal error Aerror count exceeds ; stopping assembly NMAKE : fatal error U 'C:\Program Files (x86)\Microsoft Visual Studio \VC\BIN\sprers.eu' : r eturn code '0x1' Stop. I configured for no assembler code but nmake is attempting to assemble this code. Yes, masm32 error a2044 invalid character in file, even with no-asm you need assembler to compile one little assembly module. How can I gert around this error and complete the build? You correct target. Confusion likely arouse from the fact that Intel started to use Intel 64 to denote x86_64 processors. I mean it's easy to mix IA64 and Intel __ OpenSSL Project sprers.eu Development Mailing List [email protected] Automated List Manager [email protected]

[sprers.eu #] Build error OpenSSL i

ThreadMangino, Nicholas @ CSG - CSE via RT

I am attempting to build Open SSL i on Intel 64, Windows 7, using Error app die id Studio Professional I configured the build with perl Configure debug-VC-WIN64I no-asm no-hw ms\do_win64i complains about not finding ias but continues. Running nmake -f ms\sprers.eu generates the following errors ml /c ms\sprers.eu Microsoft (R) Macro Assembler Version Copyright (C) Microsoft Corporation. All rights reserved. Assembling: ms\sprers.eu ms\sprers.eu(1) : error Asyntax error :. ms\sprers.eu(2) : error Ainvalid character ipbox 200 error flash file ms\sprers.eu(3) : error Ainvalid character in file ms\sprers.eu(5) : error Ainvalid character in file ms\sprers.eu(6) : error Amust be in segment block ms\sprers.eu(7) : error Asyntax error :. ms\sprers.eu(8) : error Amissing angle bracket or brace in literal ms\sprers.eu(9) : error Asyntax error : loc0 ms\sprers.eu(10) : error Asyntax error :. ms\sprers.eu(11) : error Asyntax error ms\sprers.eu(12) : error Ainvalid character in file ms\sprers.eu(13) : error Asyntax error :. ms\sprers.eu(14) : error Amissing angle bracket or brace in literal ms\sprers.eu(15) : error Amissing angle bracket or brace in literal ms\sprers.eu(16) : error Amissing angle bracket or brace in literal ms\sprers.eu(17) : error Ainvalid character in file masm32 error a2044 invalid character in file : error Amissing angle bracket or brace in literal ms\sprers.eu(19) : error Amissing angle bracket or brace in literal ms\sprers.eu() : error Amissing angle bracket or brace in literal ms\sprers.eu() : error Ainvalid character in file ms\sprers.eu() : fatal error Aerror count exceeds ; stopping assembly NMAKE : fatal error U 'C:\Program Files (x86)\Microsoft Visual Studio \VC\BIN\sprers.eu' : r eturn code '0x1' Stop. I configured for no assembler code but nmake is attempting to assemble this code. How can I gert around this error and complete the build? Appreciate any help you can give. __ OpenSSL Project sprers.eu Development Mailing List [email protected] Automated List Manager [email protected]

                                                 

0 Comments

Leave a Comment