微前端架构如何改变企业的开发模式与效率提升
1659
2022-09-14
8086汇编语言入门-HelloWorld(汇编语言 8086)
附件-:
http://pan.baidu.com/s/1i5R9qO9 密码:rfgk
80x86微处理器汇编语言编程。学习任何编程语言都免不了要跨越HelloWorld这道坎,面向机器的汇编语言与面向过程/对象的高级语言不同,编码过程中对寄存器、内存的分配等细节都需要编程人员去关心;而高级语言程序如C语言、C++,即使你不知道printf具体是怎么实现的,只要掌握使用方法即可(封装成模块)。C语言的helloworld程序简单到只有一行执行语句:
printf("Hello,World!"); //在屏幕缓冲区中显示"Hello,World!"一串字符
而汇编语言的Helloworld,同样很简洁,却让很多初学者摸不到头脑;打一个简单比喻,上面的printf(.....)就好比一把手枪,字符串"Hello,World!"好比子弹,给printf装上“子弹”就能完成射击的功能。当然你也可以更换其他子弹.....汇编语言要实现往屏幕缓冲区输出字符串并显示,所需做的工作就没有这么直观容易理解了。 汇编语言编程,面向的是“寄存器”,寄存器是计算机CPU内部的一种超高速缓存(速度胜过内存数倍,但容量极小),对数据的各种操作都由“指令”来进行,也被称作汇编指令,比如ADD AX,BX 意思是将寄存器AX与BX的值相加,结果存放到AX;AX/BX都属于8086通用数据寄存器。更多汇编知识将在以后篇幅中讲解。
hello.asm 源程序
初学者首先需要知道的是,汇编语言程序由两个基本元素组成:操作码、操作数
操作码,指明要进行的操作,如加、减、乘、除....
操作数,被操作的对象,可以是数字、字符串、存储单元(变量)等
本文不对代码细节做过多的解释,因为需要很多前置知识做铺垫,才能更好的理解这段代码。
前置知识包括,二进制数制换算、CPU内存单元寻址、14个16位寄存器组、存储器分段、中断机制等等
上面的代码编辑或复制到记事本中,另存为.asm文件,这是汇编语言的源代码文件,中间要进行汇编的操作,生成的.obj文件是目标文件,经过链接之后,才能形成最终的可执行文件.exe,整个过程与高级语言的运行过程是大致相仿的。
工具有很多,但还是推荐经典的Masm5.0,
注:编写80x86平台的汇编语言,不要在Win-Vista\7\8.1\10的系统上操作,因为16位程序会出现兼容性问题。
本文均在Windows XP sp3操作系统上编辑、汇编、链接、运行.
Masm5.0-:http://pan.baidu.com/s/1hsjCcRi 密码:syqo
masm无需安装,解压到某磁盘根目录下,进入DOS操作
Win+R输入CMD进入DOS,先用DOS命令进入MASM5.0文件目录下,同时hello.asm源文件也要复制到同一路径下。
汇编命令格式> masm xxx.asm 回车 注:DOS下不区分大小写
连续回车,表示使用默认文件名,四个回车下来,会生成Hello.obj文件;如果出现错误应当更改源文件后重新汇编,
0 Warning Errors.....表示没有错误。
没有错误后,下一步进行“Link”链接,命令格式>link xxx
注:链接时要指定文件名,就是刚刚生成的Hello.obj 可以省略后缀,名字不要省略!不然会报错
link hello 回车 三次回车后,正常情况下会生成Hello.exe 那也就是程序的最终形态,直接输入hello就运行了这个程序(不要双击运行,不然DOS窗口一闪而过看不到执行结果)
HelloWorld字符串被成功输出出来,这个程序也就完成了
源文件Hello.asm——>目标文件Hello.obj——>可执行文件Hello.exe
这就是整个过程。
另外补充一点,由asm到obj在汇编语言中,这个过程叫做“汇编Assembly”;在高级语言中叫做“编译Compile”
有的教程中会缺少堆栈段SSEG,没有堆栈段 在masm中也会报错,会提示no stack segment要注意。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~