汇编开篇学习

来源:互联网 发布:免冠照片制作软件 编辑:程序博客网 时间:2024/04/30 06:26

      这学期开了汇编课程,初学是满头雾水,汇编编程软件,所需的环境就研究了一番,终于有了点概念。

      初学下了一个“Masm for Windows 集成实验环境 2009.7”,这个有自己的界面,系统会自动生出代码,运行起来很是方便,但是,这是一个共享版的,而且有很详细的说明讲解,但是,对于初学者来说,这个集成环境简化了很多,不利于更多的编程学习,要学习还是一步步脚踏实地的实在些。下面是运行的第一个“Hello World”程序:

DATAS SEGMENT
    ;此处输入数据段代码 
    STRING DB 'Hello World!',13,10,'$'
DATAS ENDS

STACKS SEGMENT
    ;此处输入堆栈段代码
STACKS ENDS

CODES SEGMENT
    ASSUME CS:CODES,DS:DATAS,SS:STACKS
START:
    MOV AX,DATAS
    MOV DS,AX
    ;此处输入代码段代码
    LEA DX,STRING
    MOV AH,9
    INT 21H
    MOV AH,4CH
    INT 21H
CODES ENDS
    END START
直接点击运行,在DOS窗口中就会出现“Hello World! ”

     另下了MASM5.0版的,代码如下:

STACK_SEG SEGMENT

DW 256 DUP(?)   ;分配堆栈段大小为256个字

TOP LABEL WORD  ;定义堆栈栈底位置,刚开始,顶即底

STACK_SEG ENDS

DATA_SEG SEGMENT

STRING DB 'Hello,world!','$' ;定义字符串数据

DATA_SEG ENDS

CODE_SEG SEGMENT

ASSUME CS:CODE_SEG,DS:DATA_SEG,SS:STACK_SEG  ;建立代码段与逻辑段关联

START:MOV AX,DATA_SEG      ;程序执行起始点

      MOV DS,AX            ;将段寄存器指向用户数据段

      mov ax,STACK_SEG      ;大小写不敏感  

      MOV SS,AX             ;将堆栈指针指向用户定义堆栈段

      MOV SP,OFFSET TOP    

      lea DX,STRING

      MOV AH,9  ;在CRT显示字符串

      INT 21H

      MOV AH,0  ;等待按下任意键

      INT 16H

      MOV AH,4CH  ;程序返回操作系统

      INT 21H

CODE_SEG ENDS

      END START
这个直接写在记事本中,然后文件后缀改为.asm,保存后进行编译。编译较为麻烦,打开dos面板,在命令提示框下进行编译

masm hello.masm

编译为hello.obj文件

然后进行连接

link hello.obj

生成hello.exe文件,打开后可看见运行结果"Hello, world!"

                                                                                   

 

 

原创粉丝点击