加减法的实现过程

库文件目录说明

版本一:包含库文件

 

TITLE AddandSubtract (Addsub.asm) ;TITLE伪指令将整行标为注释
;This program adds and subtracts 32-bit integers.注释
                     ;INCLUDEIrvine32.inc;INCLUDE伪指令从Irvine32.inc文件中复制必须的定义和设置信息,
include Irvine32.inc ;包含与lrvine32链接库一起使用的文件(32位应用程序)
.code                 ;代码段开始
main PROC
    ;mov ax,@data    ;16位汇编数据段赋值
    ;mov ds,ax       ;实模式

    mov eax,10000h   ; EAX = 10000h
    eax,40000h       ; EAX=50000h
    eax,20000h sub   ; EAX=30000h
    call DumpRegsI   ;调用显示寄存器值的过程-子程序

    Exit             ;调用一个预定义的Ms-Windows函数来终止程序。Irvine32.inc文件中定义,不是MASM的关键字,DOS系统MOVAX,4C00HINT21H
    
main ENDP             ;过程结束标记
END main             ;汇编源程序结束

版本二:不依赖包文件;直接使用操作系统函数
       段:   禾程序是以段组织的,代码段CS,数据段DS,堆栈段SS, 附加段ES,FS,GS
       编码风格:为了增强代码的可读性,建议以下规则
                 关键字全部小写,标识符大小写混合,常量全部大写。这种方案符合C/C++,JAVA的一般规则

 1 TITLE AddandSubtract (AddSubAlt.asm)
 2 ; Thisprogramaddsandsubtracts32-bitintegers.
 3 .386 最低CPU要求386
 4 .model flat,stdcall                 ;伪指令.model指示汇编器为保护模式程序生成代码,STDCALL允许调用MS-WindoWS函数
 5 .stack4096                         ;定义堆栈段空间4096
 6 ExitProcessproto,dwExitCode:dword;ExitProcess是一个MS-Windows函数,作用是终止当前进程
 7 DumpRegsProto                     ;DumpRegs是lrvine32链接库中一个显示寄存器的过程。proto伪指令声明该程序使用的过程原型
 8 .code
 9 mainPROC
10     eax,10000h mov               ;EAX= 10000h
11     add eax,40000h                 ;EAX=50000h
12     sub eax,20000h                 ;EAX=30000h
13     call DumpRegs
14 
15     INVOKEExitProcess,0             ;INVOKE是带参数类型检查的调用过程或函数的伪指令,参数为
16                                    ;返回码0 
17 main ENDP
18 END main

总结:

程序模板:
使用注释:程序开始位置及代码中必须写注释
使用库文件:Irvine32.inc 
使用操作系统文件

 1 TITLE ProgramTemplate (Template.asm)
 2 ;程序的描述:
 3 ;作者:
 4 ;创建日期
 5 ;修改
 6 ;日期: 修改者:
 7 INCLUDE Irvine32.inc 
 8 .data
 9         ;(在此插入变量)
10 .code
11 Main proc
12         ;(在此插入代码)
13         exit
14 Main endp
15         ;(在此插入其他程序)
16 end main

 

posted @ 2022-09-06 17:30  龍飛鳳舞劍無痕  阅读(130)  评论(0)    收藏  举报