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

📄 ewcalc.asm

📁 简易的计算器,能进行加,减,乘,除等简单的运算!
💻 ASM
📖 第 1 页 / 共 5 页
字号:
         title   Assembler Calculator
         comment '======================================================|'
         comment '* EWCalc v1.0                                         *'
         comment '* Copyright (r) Ewayne L. Wagner, All Rights Reserved.*'
         comment '* Unless you can improve on the program and send me   *'
         comment '* the changes. yooper@kalamazoo.net                   *'
         comment '======================================================|'

            .586
            .model   flat, STDCALL
            include  \MASM32V1\include\Win32API.inc
            include  \MASM32V1\include\USER32.inc
            include  \MASM32V1\include\KERNEL32.inc
            include  \MASM32V1\include\GDI32.inc
            include  \MASM32V1\include\COMCTL32.inc
            option   casemap: none

MOVmd       MACRO Var1, Var2
                 push     Var2
                  pop     Var1
            ENDM

.data
FontName        db  'Courier New',0
FontNamep       db  'Courier',0
FontName1       db  'Times New Roman',0
FmtA            db  '%lu',0        ; output as ascii string
FmtH            db  '%lX',0        ; output as hex UC
PLBuff          db  50 dup(?),0
PRBuff          db  50 dup(?),0
HLBuff          db  50 dup(?),0
HRBuff          db  50 dup(?),0
LBuff           db  50 dup(?),0
RBuff           db  50 dup(?),0
ConvH           db  120 dup(?),0
ConvI           db  120 dup(?),0
ConvO           db  120 dup(?),0
Buff            db  120 dup(?),0
Clear           db  50 dup(' '),0
Zeros           db  64 dup('0'),0
AppName         db  'ASM CALCULATOR',0
class           db  'Calculator',0
TB02class       db  'TB01',0
ToolClass       db  'ToolbarWindow32',0
ErrorMsg        db  "** The output is out of range **            ",0
TB              db  ' CALCULATOR Written in Assembler',0
Info            db  38 dup(' ')
                db  'Most of the functions are self explanatory.'
                db  0Dh,0Ah,0Dh,0Ah
                db  'There Are Three Two Step Functions.'
                db  0Dh,0Ah
                db  '(1). X**n  Enter the base number click the X**n button enter the exponent click =.'
                db  0Dh,0Ah
                db  '(2). HYP  Enter the X number click the HYP button enter the Y number click =.'
                db  0Dh,0Ah
                db  '(3). %  Enter the first number click the X button enter the second number click %.'
                db  0Dh,0Ah
                db  'Or Enter the first number click the +,-,x or div button enter the % number click % click =.',0
EditPT          db  'EDIT',0
Butt            db  'BUTTON',0
Stat            db  'STATIC',0 
ButtT1          db  'Push',0
float           db  'Floating Point',0
arc             db  'Arc',0
BackS           db  'Back Space',0
CE              db  'CE',0
CLR             db  'C',0
DegT            db  'Deg',0
RadT            db  'Rad',0
DecT            db  'Dec',0
HexT            db  'Hex',0
OctT            db  'Oct',0
BinT            db  'Bin',0
Pi              db  '3.141592653589793238',0  ;4626433832795',0
Period          db  '.',0
Zero            db  '0',0
One             db  '1',0
M               db  'M',0
S               db  '-',0
PO              db  '+',0
SO              db  '-',0
MO              db  'x',0
DO              db  '/',0
EO              db  '=',0
operator        db  ?
Work            dd  0
CW            WORD  10
CWRound       WORD  037fh
CWNoRound     WORD  0f7fh
RNum10      REAL10  ?
RWrk10      REAL10  ?
RMem10      REAL10  ?
RDeg10      REAL10  0.01745329252
RRad10      REAL10  57.2957795130
Temp10      REAL10  ?
QW              dq  0
; dwords (1 - 4 Intergers) (5 - 8 Decimals)
; (9 = Num of intergers) (10 = Num of decimals)
; (11 = Num of leading zeros) (12 = Minus)
A               dd  0,0,0,0,0,0,0,0
B               dd  0,0,0,0,0,0,0,0
D               dd  0,0,0,0,0,0,0,0,0,0,0,0
R               dd  0,0,0,0,0,0,0,0,0,0,0,0
R1              dd  0,0,0,0
R2              dd  0,0,0,0
R3              dd  0,0,0,0
R4              dd  0,0,0,0,0,0,0,0
R5              dd  0,0,0,0,0,0,0,0,0,0
PT              dd  0,0,0,0,0,0,0,0,0,0,0,0
MEM             dd  0,0,0,0,0,0,0,0,0,0,0,0
Sav             dd  0,0,0,0,0,0,0,0,0,0,0,0
RH              dd  0,0,0,0,0,0,0,0,0,0,0,0
Modulo          dd  0 
HeadC           dd  00ff0000h 
TextC           dd  00000000h 
BackGC          dd  00b1987ch
hInst           dd  0
hSave           dd  0
hWnd            dd  0
hMenu           dd  0
hFont           dd  0
hDspF           dd  0
CommandLine     dd  0
hEDC            dd  0
hEdit           dd  0
hDspl           dd  0
hFloat          dd  0
hArc            dd  0
hMem            dd  0
hBkSp           dd  0
hOpr            dd  0
hCE             dd  0
hCLR            dd  0
hDeg            dd  0
hRad            dd  0
hDec            dd  0
hHex            dd  0
hOct            dd  0
hBin            dd  0
hTB01           dd  0
hTB02           dd  0
hTB03           dd  0
hTB04           dd  0
hTB05           dd  0
SubEdit         dd  0
SubTool         dd  0
sebx            dd  0
sedi            dd  0
sesi            dd  0
Float           dd  0
First           dd  0
sw1             dd  0
sw2             dd  0
Min             dd  0
Key             dd  0
HPress          dd  0
NPress          dd  0
RPress          dd  0
BPress          dd  0
Branch          dd  0 
Len             dd  0
HLen            dd  0
w1              dd  0
w2              dd  0
XP              dd  0
YP              dd  0
cnt             dd  0
ArcOn           dd  0
NoFix           dd  0
cpy             dd  0
Row             dd  0
Col             dd  0
Pos             dd  0
DecPos          dd  0
DP              dd  0
FPLZ            dd  0
PassDec         dd  0
I               dd  0
N               dd  0
T               dd  1 
W               dd  0
Base            dd  10
HBase           dd  0
PrevBase        dd  0
 
IDI_ICON1       EQU 101
IDR_MENU1       EQU 102
IDB_BUT07       EQU 207
IDB_BUT08       EQU 208
IDB_BUT09       EQU 209
IDB_BUTADD      EQU 218
IDB_BUTSQ       EQU 223
IDB_BUT04       EQU 204
IDB_BUT05       EQU 205
IDB_BUT06       EQU 206
IDB_BUTSUB      EQU 219
IDB_BUTPCT      EQU 224
IDB_BUT01       EQU 201
IDB_BUT02       EQU 202
IDB_BUT03       EQU 203
IDB_BUTMUL      EQU 220
IDB_BUTPOW      EQU 225
IDB_BUT00       EQU 200
IDB_BUTPER      EQU 216
IDB_BUTEQ       EQU 222
IDB_BUTDIV      EQU 221
IDB_BUTPM       EQU 217
IDB_BUTA        EQU 210
IDB_BUTB        EQU 211
IDB_BUTC        EQU 212
IDB_BUTD        EQU 213
IDB_BUTE        EQU 214
IDB_BUTF        EQU 215
IDB_BUTMC       EQU 226
IDB_BUTMR       EQU 227
IDB_BUTMS       EQU 228
IDB_BUTMP       EQU 229
IDB_BUTMM       EQU 230
IDB_BUTHYP      EQU 231
IDB_BUTREC      EQU 232
IDB_BUTXN       EQU 233
IDB_BUTPI       EQU 234
IDB_BUTSIN      EQU 235
IDB_BUTCOS      EQU 236
IDB_BUTTAN      EQU 237
IDB_BUTCSC      EQU 238
IDB_BUTSEC      EQU 239
IDB_BUTCOT      EQU 240
IDB_BUTLOG      EQU 241
IDB_BUT2X       EQU 242
IDB_BUT10X      EQU 243
IDB_BUTEX       EQU 244

B1              EQU 500

IDD_INFO        EQU 1999
IDD_ABOUT       EQU 2000
IDD_CALC        EQU 2102
IDM_CLOSE       EQU 6003
IDM_INFO        EQU 6026
IDM_ABOUT       EQU 6027
IDT_TOOLBAR1    EQU 301
IDT_TOOLBAR2    EQU 302
IDT_TOOLBAR3    EQU 303
IDT_TOOLBAR4    EQU 304
IDT_TOOLBAR5    EQU 305

IDT             dd  IDT_TOOLBAR1,IDT_TOOLBAR2,IDT_TOOLBAR3,IDT_TOOLBAR4,IDT_TOOLBAR5

wsprintfA       PROTO C :DWORD,:VARARG
wsprintf        equ <wsprintfA>
WinMain         PROTO           :DWORD, :DWORD, :DWORD, :DWORD
WinProc         PROTO           :DWORD, :DWORD, :DWORD, :DWORD
EditProc        PROTO           :DWORD, :DWORD, :DWORD, :DWORD
ToolbarProc     PROTO           :DWORD, :DWORD, :DWORD, :DWORD
CLRMW           PROTO           :DWORD, :DWORD           
CopyMW          PROTO           :DWORD, :DWORD, :DWORD
CompMW          PROTO           :DWORD, :DWORD, :DWORD
MOVem           PROTO           :DWORD, :DWORD

tb1      TBBUTTON    <0,IDB_BUTSIN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <1,IDB_BUTCOT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <2,IDB_BUTMC,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <3,IDB_BUT07,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <4,IDB_BUT08,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <5,IDB_BUT09,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <6,IDB_BUTADD,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <7,IDB_BUTSQ,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
tbb1     TBBUTTON    <8,IDB_BUTHYP,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
tbl1     EQU         ($-tbb1)

tb2      TBBUTTON    <0,IDB_BUTCOS,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <1,IDB_BUTLOG,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <2,IDB_BUTMR,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <3,IDB_BUT04,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <4,IDB_BUT05,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <5,IDB_BUT06,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <6,IDB_BUTSUB,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <7,IDB_BUTPCT,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
tbb2     TBBUTTON    <8,IDB_BUTREC,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
tbl2     EQU         ($-tbb2)

tb3      TBBUTTON    <0,IDB_BUTTAN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <1,IDB_BUT2X,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <2,IDB_BUTMS,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <3,IDB_BUT01,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <4,IDB_BUT02,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <5,IDB_BUT03,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <6,IDB_BUTMUL,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <7,IDB_BUTPOW,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
tbb3     TBBUTTON    <8,IDB_BUTXN,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
tbl3     EQU         ($-tbb3)

tb4      TBBUTTON    <0,IDB_BUTCSC,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <1,IDB_BUT10X,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <2,IDB_BUTMP,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <3,IDB_BUT00,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <4,IDB_BUTPER,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <5,IDB_BUTEQ,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <6,IDB_BUTDIV,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <7,IDB_BUTPM,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
tbb4     TBBUTTON    <8,IDB_BUTPI,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
tbl4     EQU         ($-tbb4)

tb5      TBBUTTON    <0,IDB_BUTSEC,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <1,IDB_BUTEX,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <2,IDB_BUTMM,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <3,IDB_BUTA,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <4,IDB_BUTB,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <5,IDB_BUTC,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <6,IDB_BUTD,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
         TBBUTTON    <7,IDB_BUTE,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
         TBBUTTON    <0,0,TBSTATE_ENABLED,TBSTYLE_SEP,0,0>
tbb5     TBBUTTON    <8,IDB_BUTF,TBSTATE_ENABLED,TBSTYLE_BUTTON,0,0>
tbl5     EQU         ($-tbb5)
tb       dd  tb1,tb2,tb3,tb4,tb5
tbl      dd  tbl1,tbl2,tbl3,tbl4,tbl5

wc       WNDCLASS     <?>
msg      MSG          <?>
lf       LOGFONT      <?>

⌨️ 快捷键说明

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