参考文章:用汇编语言编写程序输出“Hello World!”
本文同步更新于博客园,由于不支持汇编语言的语法高亮,为了更好的阅读体验,欢迎来访:nefu_ljw 博客园。
先准备汇编语言运行环境,在此下载:https://download.csdn.net/download/ljw_study_in_/12997354
打开DOSBox0.74-win32-installer,安装。
在汇编语言中,用分号;表示注释,类似于C/C++的//表示注释。
一个汇编程序的固定语法格式:
;数据段 data segment ;此处定义数据变量类型 data ends ;代码段 code segment assume cs:code,ds:data start: mov ax,data mov ds,ax ;------ ;此处写需要实现的功能 ;------ mov ah,4ch ;4ch表示从用户程序返回操作系统,结束程序 int 21h code ends end start输出"hello world"的代码:
;数据段 data segment ;定义字节大小(8位)的字符串,变量名为string ;db表示字节 ;0dh,0ah表示回车换行 ;$表示字符串终止符 string db 'Hello World!',0dh,0ah,'$' data ends ;代码段 code segment assume cs:code,ds:data start: ;push ds ;mov ax,0 ;push ax mov ax,data mov ds,ax ;------ lea dx,string mov ah,09h ;ah是ax的高8位,功能号09h表示输出dx指向的字符串string int 21h ;中断指令,调用用户程序,执行ah中设置的09h号功能 ;------ mov ah,4ch ;功能号4ch表示从用户程序返回操作系统,结束程序 int 21h code ends end start因为博客的Markdown不支持x86asm格式的代码块高亮,所以我贴的代码都没有颜色(强迫症很不爽!)
本地可以用notepad++,将语言设置为A-Assembly,支持汇编语言的语法高亮,看着会比较舒服。 notepad++文本编辑器显示的语法高亮很好看: 顺便吐槽一句,什么时候能支持汇编语言的语法高亮?上次写Matlab语言也不支持,多向人家博客园学习吧!
将第一步中下载的masm5文件夹存于D盘,比如路径为D:\masm5,然后将编写的代码文件保存为hello.asm,存于D:\masm5。 打开第一步安装好的DOSBox 0.74,然后输入命令:
mount c d:/masm5 c: dir如下图: 然后输入命令:
masm hello.asm //再按三下回车 link hello.obj //再按三下回车 hello结果如下: 完成!(用汇编语言写个hello world可真不容易啊…)