Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
en:multiasm:papc:chapter_6_12 [2025/11/16 15:44] – [Constants] ktokarzen:multiasm:papc:chapter_6_12 [2026/02/27 02:10] (current) – [Statements] jtokarz
Line 1: Line 1:
-====== MASM basics ======+====== MASM Basics ======
 An assembler, understood as software that translates assembler source code into machine code, can be implemented in various ways. While the processor's instructions remain constant, other language elements may be implementation-specific. In this chapter, we present the most important language elements specific to the MASM assembly implementation. For a detailed description of MASM assembler language implementation, please refer to the Microsoft© website((https://learn.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference?view=msvc-170)). An assembler, understood as software that translates assembler source code into machine code, can be implemented in various ways. While the processor's instructions remain constant, other language elements may be implementation-specific. In this chapter, we present the most important language elements specific to the MASM assembly implementation. For a detailed description of MASM assembler language implementation, please refer to the Microsoft© website((https://learn.microsoft.com/en-us/cpp/assembler/masm/microsoft-macro-assembler-reference?view=msvc-170)).
 ===== Alphabet ===== ===== Alphabet =====
Line 198: Line 198:
 <code asm> <code asm>
 int_const1 EQU 5                ; no suffix by default decimal value int_const1 EQU 5                ; no suffix by default decimal value
-int_const_dec = 7               ; finished with "d", "D", "t", "T", or by default without suffix+int_const_dec = 7               ; finished with "d", "D", "t", "T", or  
 +                                ; by default without suffix
 int_const_binary = 100100101b   ; finished with "b", "B", "y", or "Y" int_const_binary = 100100101b   ; finished with "b", "B", "y", or "Y"
 int_const_octal = 372o          ; finished with "o", "O", "q", or "Q" int_const_octal = 372o          ; finished with "o", "O", "q", or "Q"
 int_const_hex = 0FFA4h          ; finished with "h", or "H" int_const_hex = 0FFA4h          ; finished with "h", or "H"
-int_const_expr = const_dec * 5+int_const_expr = int_const_dec * 5
 </code>  </code> 
 Floating-point numeric constants can be defined with the **EQU** directive only. The number can be expressed in decimal or scientific notation. Floating-point numeric constants can be defined with the **EQU** directive only. The number can be expressed in decimal or scientific notation.
Line 209: Line 210:
 real_const2 EQU 6.28e2          ; scientific real_const2 EQU 6.28e2          ; scientific
 </code> </code>
-Text string constants can be defined with **EQU** or **TEXTEQU** directives. Text constants assigned with the **EQU** directive can be redefined later in the program. The **TEXEQU** is considered a text macro and is described in the section about macros.+Text string constants can be defined with **EQU** or **TEXTEQU** directives. Text constants assigned with the **EQU** or **TEXTEQU** directive can be redefined later in the program. The **TEXTEQU** is considered a text macro and is described in the section about macros.
 <code asm> <code asm>
 text_const1 EQU 'Hello World!' text_const1 EQU 'Hello World!'
 text_const2 EQU "Hello World!" text_const2 EQU "Hello World!"
 </code> </code>
- 
-Integer constants: 
-binary, 1b, 0101B, -10y, 111111Y 
-octal, 34o, -746O, 2167q, 0Q 
-decimal, 39, 12d, 1200D, -90t, 56T 
-hex, 0h, 14A6h, 0FE3H 
-.RADIX base directive: 
-(.RADIX 16) 
-Floating point constants: 
-decimal notation, 1.0, 3.1415, -0.5 
-exponent notation, 1e5, 1.56e-2, -15.7e+12 
- 
-String is an array of characters. 
-‘Hello world’ 
-”123*x=??? 
-Equal notations: 
-mov BH,’A’ 
-mov BH,”A” 
-mov BH,41h 
  
  
Line 261: Line 243:
 All fields in a statement are optional. A statement can be composed of a label only (ended with a colon), an operation only (if it doesn't require operands), or a comment only. A few examples of proper statements are presented in the following code. All fields in a statement are optional. A statement can be composed of a label only (ended with a colon), an operation only (if it doesn't require operands), or a comment only. A few examples of proper statements are presented in the following code.
 <code asm> <code asm>
-; name    ; operation ; operands ; comment+; name ; operation ; operands ; comment
  
-cns_y      EQU         134       ; definition of a constant named cns_y with the value 134+cns_y   EQU         134       ; definition of a constant named cns_y with the  
 +                              ;   value 134
  
-           .DATA                 ; operation only - directive to start data section +        .DATA                 ; operation only - directive to start data section 
-var_x      DB          123       ; definition of a variable named var_x with init value 123+var_x   DB          123       ; definition of a variable named var_x with init  
 +                              ;   value 123
  
-           .CODE                 ; operation only - directive to start code section +        .CODE                 ; operation only - directive to start code section 
-begin:                           ; name only - label that represents an address +begin:                        ; name only - label that represents an address 
-           mov         rax, rbx  ; operation and corresponding operands +        mov         rax, rbx  ; operation and corresponding operands 
-                                 ; comment only statement +                              ; comment only statement 
-           END                   ; operation only - end of the source file+        END                   ; operation only - end of the source file
 </code> </code>
en/multiasm/papc/chapter_6_12.1763300699.txt.gz · Last modified: by ktokarz
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0