vscode较详细注释的汇编语言hello world 输出程序,第一个汇编程序
程序员文章站
2022-07-13 21:22:34
...
输出hello world,经典且不失优雅的操作。
在写之前先了解一些知识,会编译连接运行.asm文件
然后看一下汇编程序基本结构,有一点点matlab的感觉
代码段,数据段,附加数据段等。
注释符是分号
具体结构:
;汇编结构
**data SEGMENT; 数据段,数据放到这段
; 标识符 db/dw 数据;
;定义字符串---- stri db "abdcsadabdahsd"
data ENDS**
edata SEGMENT ;附加数据段
;附加数据部分.
edata ENDS
**code SEGMENT ;代码段,程序具体代码
ASSUME CS:code,DS:data,ES:edata 'data段是数据段DS,code段是代码段CS,ES附加段
start:
;代码区
code ENDS**
END start ;程序结束,并且程序执行时由start开始执行。
然后是hello world程序:
1.定义数据段:
DATA SEGMENT ;定义数据段
MYWORD DB "hello world!!!$";定义数据字符串
DATA ENDS
2.定义代码与具体代码
CODE SEGMENT;定义代码段
ASSUME CS:CODE,DS:DATA;表明谁是代码段,谁是数据段
start:
MOV AX,DATA;数据首地址赋值给AX,AX是寄存器,累加器
MOV DS,AX;使得DS等价于AX,同样指向数据段
LEA DX,MYWORD;使DX寄存器指向数据变量word首地址
MOV AH,09h;AH输出数据
INT 21h;执行AH的09h功能,输出
MOV AX,4c00h;设置寄存器功能
INT 21h;调用寄存器功能,结束程序
CODE ENDS
3,结束
END start;代表结束程序并且在start处执行程序
完整代码截图:
然后编译连接ok,不知道怎么做的话
可以看我的另一篇总结文章,
dosbox下自动mount
其实vscode有个快捷生成段的方法:
.code
.data
得到
但是不知道为什么编译老是不过,最后老实的将_text$00等改了,
知道原因的网友,可以私信告诉我一下,谢啦,共同进步