一.一个源文件输出hello work
第一步先将代码编写在记事本中,然后将后缀名改为asm(这个文件就叫做test.asm)
重命名后将txt改为asm后出现这个提示,直接点击:是
之后就得到这样一个asm文件
代码在这里
// An highlighted block
var foo = 'bar';
DATA SEGMENT
STRING1 DB 'HELLO WORLD!','$'
STRING2 DB 'HELLO WORLD AGAIN!','$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE
dispmsg macro message
mov dx,offset message
mov ah,09H
int 21H
endm
CRLF MACRO N
LOCAL AGAIN
PUSH AX
PUSH DX
PUSH CX
MOV CX,N
AGAIN:
MOV AH,2
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LOOP AGAIN
POP CX
POP DX
POP AX
ENDM
START:
MOV AX,DATA
MOV DS,AX
dispmsg STRING1
CRLF 1
dispmsg STRING2
mov ah,4ch
int 21h
CODE ENDS
END START
//写两个hello work 是连续一波宏的使用
第二步打开DOSBOX进行操作
①挂载到DOSBOX下的盘符,并打开c盘
这里d:\DOSBOX是因为我直接建立了一个叫DOSBOX的文件夹将DOSBOX放在里面。
②进行编译
输入 masm test.asm按回车到达这里(如果使用缺省默认参数可在后面加上;就不用按回车"masm test.asm;")
然后接着3次回车,要是有错误的话在这里就能看到
这步完成以后就能在原文件夹下面看到这样一个obj文件,
③链接
对于单个源文件 直接采用link +文件名.obj (跟第二步一样使用默认参数可以在后面加;即可“link test.obj;”)
这里的警告只是说没有堆栈段,可以不用管。
跟第二步一样就能得到一个exe的应用文件
④进行运行
输入文件名即可
一个简单的hello work就完成了!!!!
之后也可以通过输入debug +文件名.exe进行调试
例如
二.两个源文件进行link输出hello word
首先也是创建两个txt文件(test1,test2)
写入代码
test1中(test1是代码段所在的文件)
extrn display:far
PUBLIC STRING
DATA SEGMENT
STRING DB 'HELLO WORLD!','$'
DATA ENDS
Code segment
assume cs:code
start:
MOV AX,DATA
MOV DS,AX
call display
mov ah,4ch
int 21h
code ends
end start
test2中的代码(test2中只是定义了一个子程序)
public display
EXTRN STRING:BYTE
Code segment
assume cs:code
CRLF MACRO N
LOCAL AGAIN
PUSH AX
PUSH DX
PUSH CX
MOV CX,N
AGAIN:
MOV AH,2
MOV DL,0DH
INT 21H
MOV DL,0AH
INT 21H
LOOP AGAIN
POP CX
POP DX
POP AX
ENDM
display proc far
push ax
push dx
CRLF 1
mov ah,9
mov dX, OFFSET STRING
int 21h
CRLF 2
pop dx
pop ax
ret
display endp
code ends
end
之后跟上面讲的对test1跟test2修改后缀,然后依次进行编译(masm test1.asm 编译好后再 masm test2.asm)
都编译好以后就出现了两个obj文件这个时候就可以进行链接
链接
链接形式 link 文件1.obj+文件2.obj+文件3.obj
链接好以后就会出现一个test1.exe的应用文件(因为test2中是的内容只是一个子程序,只相当于一个函数)。
之后就可以运行了 直接输入文件名+回车
今天就学到这里吧。