⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 prog12.asm

📁 主要是8051源代码
💻 ASM
字号:
;  PROG12 - Stack Arithmetic Operations
;
;  This Application uses the Simulator to Demonstrate how high
;   Level Language ("C") statements can be implemented in an 8051.
;
;  Note, that comments starting with ";;" are "C" Source Code with the
;   8051 Assembler Source Following.  With this virtual HLL, I am assuming
;   a word size of eight bits.
;
;  This program will run in the UMPS simulator for a DS80C320.
;
;  Myke Predko
;  98.02.12
;
;  Hardware Notes:
;   This program is only meant to run on the Simulator

;  Variable Declarations
;  These declarations are modelled on the "C" Variable Declarations
;;int i, j;                     //  Define some 8 Bit Counters
;;char Output;                  //  Output Character
i EQU 0                         ;  Define R0 as the Counter "i"
j EQU 1                         ;   NOTE: Defines are to Memory Locations, NOT
                                ;   as Bank Registers

Temp EQU 03Fh                   ;  Have a Temporary Register for intermediate
                                ;   Values

Output EQU 030h                 ;  Location for Saving Data

;  Mainline
 org 0                          ;  Execution Starts Here

;;  i = 4 - 3

  mov    i,#1                   ;  Initialize "i" (This was optimized)

;;  j = i + 7

  mov    A,#7                   ;  First, Load the Second Value (which is
  push   ACC                    ;   Added to "i") - Note that "ACC" is being
                                ;   pushed and not "A".
  push   i                      ;  Add the Second value for the assignment to
                                ;   the Stack.
  pop    ACC                    ;  Get the First Value to operate on
  pop    Temp                   ;  Get the Second Value to operate on and put
                                ;   in a variable that can access "ACC"
  add    A,Temp                 ;  A = A - Temp
                                ;    = i + 7
  push   ACC                    ;  Save the Result for the Next Operation
  pop    j                      ;  Retrieve Result and Store in the Destination

;;  Output = ( i * j ) + 'A';   //  Now, Have a Compound Operation

  mov    A,#'A'                 ;  Put the Character Value onto the Stack
  push   ACC

  push   j                      ;  Store the Parameters for the Operations
  push   i

  pop    ACC                    ;  Get the Numbers to Multiply
  pop    B

  mul    AB                     ;  Perform the Multiplication Operation

  pop    Temp

  add    A,Temp                 ;  Add ASCII 'A' to the Multiplication Result

  mov    Output,A               ;  Store the Result (Optimized)


Loop:                           ;  Loop Here Forever when Finished
  ajmp   Loop

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -