==masm汇编不同环境的写法==



这个是本人多年前的MASM学习笔记 最近拿出来温故知新 对于新手看了应该有新帮助

这里简单介绍masm不同环境的写法:

早期在dos6环境的汇编是怎么写的

;#####################################################

;=============测试环境masm5=============

;#####################################################

CODE SEGMENT                 ;定义程序段开始
     ASSUME CS:CODE,DS:CODE

     MOV AX,CODE          ;将字符所在的段地址,放到数据段寄存器ds内
     MOV DS,AX            ;

     MOV DX,OFFSET MSG1   ;将字符所在的偏移地址(OFFSET),放到数据寄存器dx

     MOV AH,9             ;显示内容
     INT 21H              ;

     MOV AH,4CH           ;程序结束返回dos
     INT 21H              ;
MSG1 DB "Hi  MASM5! $"    ;存储器变量--要输出的字符

CODE ENDS                 ;定义程序段结束

;===========end=================

 

到了masm6.*它们的编写的框架就变成下面的样子

;################################################

;=========== 测试环境masm614=============

;################################################

.MODEL SMALL                ;选择small模型
.DATA                       ;指示data段开始
MES1 DB 13,10,10,0
MES2 DB 'Hi MASM611',0

.CODE                       ;指示code段开始

;#######################################################

;显示数据段中由si寻址的字符串的过程,字符串必须以0为结束

;本过程改变ax,dx和si

;#######################################################
STRING PROC NEAR
       LODSB          ;从串得到字符
       CMP AL,0       ;测试是否为0
       JE  STRING1    ;如果是0
       MOV DL,AL      ;将ascii码送dl
       MOV AH,2       ;选择功能号02h
       INT 21H        ;执行dos功能调用
       JMP STRING     ;重复直到0为止
STRING1:
       RET            ;从过程返回
STRING ENDP
       .STARTUP       ;指示程序开始
       CLD            ;选择加1
       MOV  SL,OFFSET MES1   ;寻址mes1
       CALL STRING           ;显示mes1
       MOV  SI,OFFSET MES2   ;寻址mes2
       CALL STRING           ;显示mes1 
       .EXIT                 ;返回dos
       END                   ;程序结束
;===========end==============

在win32环境写的汇编对于熟悉platform sdk开发和熟悉win32 api的程序员很容易上手的:)

;#########################################################################

;==========测试环境32位masm(masm32)==========

;##########################################################################

; #########################################################################

      .386
      .model flat, stdcall
      option casemap :none  
; #########################################################################

      include \masm32\include\windows.inc
      include \masm32\include\user32.inc
      include \masm32\include\kernel32.inc

      includelib \masm32\lib\user32.lib
      includelib \masm32\lib\kernel32.lib

; #########################################################################
.data
MsgBoxCaption db "你好win32汇编!",0
MsgBoxText db "这个是一个win32汇编比以前简单多了哈哈!",0
.code
start:
invoke MessageBox, NULL,addr MsgBoxText,addr MsgBoxCaption,MB_OK
invoke ExitProcess, NULL 
end start
;##########################################################################

先就写怎么点,网上有很多这个方面很好的教程,我也会陆续把我自己几年前学习这个方面的

学习笔记放出来的.:)

下面是我以前的新浪博客早就不用了,现在我会在CSDN续写些东西

http://blog.sina.com.cn/s/blog_4d2985010100cbb1.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值