;这个是8086的写法
data segment ;这里定义一个数据段
tab db 'hello world$' ;这里用内存存放字节数据 'hellow world!',$用来判断字符串是否输出完毕
data ends ;数据段的结束标志
code segment ;这里定义了一个代码段
assume cs:code, ds:data ;这里把程序中定义的段与对应的段寄存器关联起来
start: ;这里是一个标号,根据end后面的标号判断这里是程序的开始位置
mov ax,data
mov ds,ax ;这里把数据段的地址放到数据段寄存器ds中
lea dx,tab ;dx中放将要显示数据的偏移地址
mov ah,9h
int 21h ;调用21号中断的9号功能来显示字符串
mov ah,4ch
int 21h ;程序返回
code ends ;代码段的结束语
end start ;定义程序从哪个标号处开始执行
;==========================================================
;这里的是win32的汇编写的
.386 ;这里定义了使用的指令集是80386的
.model flat,stdcall ;定义内存模式和调用的方式(堆栈平衡)
option casemap:none ;定义对大小写是否敏感
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib ;这里引用了一些头文件来说明将要用到的api函数
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szCaption db 'A MessageBox !',0
szText db 'Hello World !',0 ;定义数据段,上面的是标题,这里的是显示的内容
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
;调用messageBox函数来显示字符串
invoke ExitProcess,NULL
;调用函数来结束这个程序的进程
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start ;定义程序从哪里开始运行
网页链接 这是我自己写的总结笔记,适合新生入门,望被采纳~
补充一下
DATAS SEGMENT
STRING DB 13,10,'Hello World!',13,10,'$'
DATAS ENDS
CODES SEGMENT
ASSUME CS:CODES,DS:DATAS
START:
MOV AX,DATAS
MOV DS,AX
LEA DX,STRING
MOV AH,9
INT 21H
MOV AH,4CH
INT 21H
CODES ENDS
END START
.386
.model flat,stdcall
option casemap:none
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;Include 文件定义
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
include windows.inc
include user32.inc
includelib user32.lib
include kernel32.inc
includelib kernel32.lib
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;数据段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.data
szCaption db 'A MessageBox !',0
szText db 'Hello World !',0
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
;代码段
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
.code
start:
invoke MessageBox,NULL,offset szText,offset szCaption,MB_OK
invoke ExitProcess,NULL
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
end start
data segment
tab db 'hello world$'
data ends
code segment
assume cs:code, ds:data
start:
mov ax,data
mov ds,ax
lea dx,tab
mov ah,9h
int 21h
mov ah,4ch
int 21h
code ends
end start