Difference between revisions of "MPLab1 Addition"

From MKWiki
Jump to navigation Jump to search
Line 5: Line 5:
 
.stack 100H  
 
.stack 100H  
 
</pre>
 
</pre>
 +
 
2. Define your data in the data section ( here you can define various data items: '''variables, constants, strings, arrays''')
 
2. Define your data in the data section ( here you can define various data items: '''variables, constants, strings, arrays''')
 
<pre>
 
<pre>
Line 13: Line 14:
 
sum db 10,13,"The sum is :$"  
 
sum db 10,13,"The sum is :$"  
 
</pre>
 
</pre>
 +
 
3. Define your instruction in the code section (here you write the assembly instructions that perform computations, control program flow, and interact with data variables and memory)
 
3. Define your instruction in the code section (here you write the assembly instructions that perform computations, control program flow, and interact with data variables and memory)
 
<pre>
 
<pre>
 
.code                          ; .code directive indicates the beginning of code section  
 
.code                          ; .code directive indicates the beginning of code section  
data1 dd 00H
+
.startup                        ;  the entry point of the program
 +
 
 
num1 db 10,13,"Enter the first number: $"  
 
num1 db 10,13,"Enter the first number: $"  
 
num2 db 10,13,"Enter the second number: $"  
 
num2 db 10,13,"Enter the second number: $"  

Revision as of 00:01, 18 September 2023

32-bit Binary Addition Step by Step

1. Specify the memory model for code, data, and stack segments

.model small 
.stack 100H 

2. Define your data in the data section ( here you can define various data items: variables, constants, strings, arrays)

.data                           ; .data directive indicates the beginning of data section 
data1 dd 00H 
num1 db 10,13,"Enter the first number: $" 
num2 db 10,13,"Enter the second number: $" 
sum db 10,13,"The sum is :$" 

3. Define your instruction in the code section (here you write the assembly instructions that perform computations, control program flow, and interact with data variables and memory)

.code                           ; .code directive indicates the beginning of code section 
.startup                        ;  the entry point of the program

num1 db 10,13,"Enter the first number: $" 
num2 db 10,13,"Enter the second number: $" 
sum db 10,13,"The sum is :$" 

The function of Lex is as follows:

  • Firstly lexical analyzer creates a program lex.l in the Lex language. Then Lex compiler runs the lex.l program and produces a C program lex.yy.c.
  • Finally C compiler runs the lex.yy.c program and produces an object program a.out.
  • a.out is lexical analyzer that transforms an input stream into a sequence of tokens.

Running Lex Programs

The Lex Format

A Lex program is separated into three sections by %% delimiters. The format of Lex source is as follows:

{ definitions }
%%

{ rules }   

%%
{ user subroutines }



Here

  • Definitions include declarations of constant, variable and regular definitions.
  • Rules define the statement of form p1 {action1} p2 {action2}....pn {action}. Where pi describes the regular expression and action1 describes the actions what action the lexical analyzer should take when pattern pi matches a lexeme.
  • User subroutines are auxiliary procedures needed by the actions. The subroutine can be loaded with the lexical analyzer and compiled separately.



1. web: https://www.epaperpress.com/lexandyacc/index.html [ LEX & YACC TUTORIAL by Tom Niemann ]
2. web: https://www.javatpoint.com/lex